A full-stack bakery management system for an Indonesian cake shop, featuring a public storefront with WhatsApp ordering, a comprehensive admin panel with order lifecycle tracking, financial management, and real customer testimonial displays.

Tracks every order from inquiry to delivery with a visual status timeline, supporting both regular and custom cake orders — including down-payment tracking, payment proof uploads, and cancellation with reason logging.
Renders actual customer conversations from WhatsApp and Instagram as interactive chat bubbles on the storefront — not generic review cards, but real social proof that builds trust with potential customers.
Provides a complete financial overview with revenue vs. expense trends, bank and cash balance management, best-selling product rankings, and month-over-month comparisons — giving the shop owner real business intelligence at a glance.
Integrates directly with WhatsApp for order placement, matching how Indonesian customers naturally shop — product pages generate pre-filled WhatsApp messages with order details, removing friction from the buying process.
Standard e-commerce order flows assume fixed products with predictable line items. But a bakery takes custom orders — customers request specific themes, occasions, reference images, and personalized designs that don't map to a product catalog. I designed a dual-order model (regular + custom) with JSONB fields for variant selections and a dedicated custom order table for free-form design briefs, keeping the order pipeline unified while accommodating both structured and unstructured requests.
Generic star ratings feel impersonal for a small bakery brand. Instead of a standard review system, I built a testimonial feature that renders real WhatsApp and Instagram conversation screenshots as interactive chat bubbles — complete with platform-specific styling and message flow. The admin can curate which conversations to publish, maintaining authenticity while controlling the storefront narrative.
A small business system needs to be simple enough for a non-technical shop owner, but every action — especially financial ones — needs accountability. I implemented a comprehensive audit trail using a 4-layer architecture where every repository mutation automatically logs the user, action type, and change details as JSONB. Combined with soft-delete (archive before permanent delete), this gives the business owner both ease-of-use and a full paper trail.