E-commerce
Roti Macan — E-commerce Bakery
Bakery e-commerce with per-session pickup quotas, multi-staff fulfilment kanban and Midtrans payments.
- Client
- Roti Macan
- Period
- Sep 2022 – Jun 2023
- Role
- Full-stack developer (solo)
- Contribution
- Built from scratch
Context & Problem
A bakery with busy pickup queues needed online ordering that never sells beyond production capacity per session and makes order handling easy for staff.
My Contribution
Built it end to end from scratch: database design, NestJS backend, Next.js storefront and dashboard, payment integration.
Solution & Key Features
- Per-session pickup quotas — time slots with capacity, enforced inside a database transaction.
- Fulfilment kanban — orders move across columns (paid → in progress → ready → picked up), worked on by several staff at once.
- Barcode scanner to verify pickups.
- BullMQ for async jobs: payment expiry and notifications.
- Midtrans payments with idempotent webhooks.
Architecture
flowchart LR C[Customer - Next.js] --> API[NestJS API] S[Staff Dashboard] --> API API --> DB[(PostgreSQL)] API --> R[(Redis)] R --> Q[BullMQ Workers] API <--> M[Midtrans]
Challenges & Decisions
- Quotas are checked with a row lock on the session slot, not in a cache, so the shop can never oversell.
- Payment webhooks are processed idempotently through a queue to survive gateway retries.
Outcome
Orders and pickups run without manual queueing; staff work in parallel on a single kanban board.
Related projects
Rembo Printing — Printing Management
Maintenance and enhancement of a NestJS + Vue.js printing management system.
Rembo Printing · 2024
Anekatransport — Bus Ticket Booking
Online bus ticket booking with real-time seat inventory and overbooking prevention.
Anekatransport · 2022
Tugu Clone — Insurance Management
Insurance management system with cross FE/BE RBAC, claim workflows and real-time notifications.
Perusahaan asuransi (NDA) · 2024