v1.0.0

Bengkel Pintar ERP

Dokumentasi flow diagram, PRD, dan skenario operasional sistem manajemen bengkel multi-cabang. Setiap modul dilengkapi diagram alur, mockup UI, dan panduan penggunaan.

19
Modul
40+
Flow Diagram
20
Skenario
6
Role Pengguna

🏢 Multi Cabang

Setiap cabang beroperasi secara mandiri dengan data terpisah. Kantor pusat dapat memonitor seluruh cabang secara real-time.

👥 Role-Based Access

6 role pengguna: Super Admin, Admin Cabang, Kasir, Mekanik, Kepala Mekanik, Gudang — setiap role memiliki akses terbatas sesuai fungsinya.

🔄 Approval Berjenjang

Transaksi di atas threshold tertentu memerlukan approval berjenjang. Flow approval dapat dikonfigurasi per cabang dan per tipe transaksi.

📱 Responsive UI

Interface dibangun dengan Next.js + Tailwind CSS. Mendukung akses dari desktop maupun tablet untuk semua role operasional.

Tech Stack

Frontend (Admin & Landing)

Next.js 15 + React 19, TypeScript strict, Tailwind CSS, native fetch + JWT, WebSocket native via ticket flow

Backend (API)

Hono on Bun (TypeScript), Prisma 7 (driverAdapters), pg, BullMQ workers, node-cron, pino logger, Argon2 password hashing

Storage

PostgreSQL 14+ (eksternal/managed), Redis 7 (shared state, pub/sub, queue broker), MinIO S3-compatible (object storage)

Infrastructure

Docker Compose multi-service, Caddy reverse proxy + active health-check, PgBouncer transaction pool, zero-downtime rolling deploy

Arsitektur Scaling (Multi-Instance Ready)

Topology Production

API & Worker scalable (rolling deploy zero-downtime). Cron service replicas=1 (anti duplicate trigger). Shared state via Redis.

flowchart TB C[Caddy Reverse Proxy
active health-check
:4100] --> A1[API #1
:4000] C --> A2[API #2
:4000] C --> A3[API #N] A1 --> R[(Redis
:6379
pub/sub + queue
+ ticket store)] A2 --> R A3 --> R A1 --> PB[PgBouncer
txn pool] A2 --> PB A3 --> PB PB --> PG[(PostgreSQL
eksternal)] CRON[Cron Service
replicas=1
node-cron + DB-driven] --> R CRON --> PB W1[Worker #1
BullMQ consumer] --> R W2[Worker #2
scalable] --> R W1 --> PB W1 --> M[(MinIO
S3 object storage)] A1 --> M A2 --> M style C fill:#dbeafe,stroke:#3b82f6 style R fill:#fee2e2,stroke:#dc2626 style PB fill:#fef3c7,stroke:#d97706 style CRON fill:#f0fdf4,stroke:#16a34a

Redis (Shared State)

  • Rate-limit cross-instance (atomic INCR + EXPIRE)
  • WebSocket ticket store (SETEX + GETDEL one-time)
  • WS pub/sub channel ws:events — event sampai ke semua instance
  • BullMQ queue broker (pdf, excel, email, whatsapp)
  • Cron reload signal channel cron:reload

Cron Service Terpisah

  • Replicas tepat 1 — anti duplicate trigger saat API scale
  • DB-driven schedule (tabel CronJob, CronRun)
  • Hot-reload via Redis signal (perubahan UI admin langsung efektif)
  • Configurable via Admin → Settings → Cron Jobs
  • Default jobs auto-seed: stock-alert, booking-reminder, payroll-generate, dst

Worker Queue (BullMQ)

  • Offload CPU-heavy: PDF render (PDFKit), Excel build (XLSX)
  • Async background: email, WhatsApp, retry strategies
  • Scalable, drain-safe rolling deploy
  • At-least-once delivery, idempotent handler

Zero-Downtime Deploy

  • deploy.sh: build → infra up → migrate → rolling api → rolling worker → recreate cron
  • Caddy auto-route via DNS re-resolve (no manual config)
  • Healthcheck-driven: container baru harus healthy sebelum container lama dimatikan
  • Worker drain in-flight job sebelum exit (BullMQ worker.close())