Happify is a custom merchandise platform built by MJ Solution Indonesia, allowing customers to personalize products - T-shirts, socks, tote bags, and gift cards - through an interactive canvas designer. Users can upload photos with client-side AI background removal, browse Pixabay stock designs, and edit gift cards. Cart state persists in localStorage, with a cross-device QR checkout flow that lets kiosk users transfer their cart to a mobile device via Supabase-backed checkout sessions. Payment is handled via Midtrans Snap (QRIS only). Post-payment, a webhook triggers automated order confirmation emails via Resend (to customer and production team) and WhatsApp resi notifications via Fonnte. An admin dashboard handles order and shipping management.
Ordering custom merchandise typically requires back-and-forth communication with a designer, manual calculations for shipping, and no real-time visibility into order status. For event or kiosk contexts, completing a purchase on a small screen or shared device adds further friction.
A self-service customization platform where customers design their own products, calculate shipping in real time via Binderbyte API, and pay via QRIS - all in one flow. The cross-device QR checkout solves the kiosk-to-mobile handoff problem, while the Express backend and Midtrans webhook automate all post-payment notifications and order logging without manual intervention.
- Interactive canvas-based product customizer (T-shirt, socks, tote bag, gift card)
- Client-side AI background removal via @imgly/background-removal and MediaPipe
- Pixabay stock design search with proxy API route
- Cross-device QR checkout: kiosk -> Supabase checkout_sessions -> mobile prefill
- Midtrans Snap integration (QRIS only, sandbox)
- Automated post-payment email to customer and production team via Resend
- WhatsApp resi notification via Fonnte API
- Real-time shipping cost calculation and region selection via Binderbyte API
- PDF order summary generation and temp file management
- Admin dashboard for order and shipping management
- Separate Express.js backend (port 3001) for payment and notification logic
