Ecommerce Template
Modern ecommerce template built with Next.js 16, React 19, Drizzle, Better Auth, Supabase, and Stripe.
Sistem kasir (POS) untuk kafe takeaway dengan 2–20 outlet di Indonesia
Translation pending
AI summary · revised during review
CommerceJavaScript · TypeScriptGitHub @zethasaintlabOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Point-of-sale untuk kafe takeaway 2–20 outlet di Indonesia. Offline-first, multi-vertikal, dijual sebagai lisensi berlangganan per outlet. Status: F0 (fondasi) selesai · Fase berjalan: F1 (inti transaksi) — Modul A, B, dan C selesai: penjualan tersimpan atomik dengan pajak benar, dibayar tunai/QRIS/EDC, dan dapat dibatalkan atau direfund. Sisa Modul C hanya rekonsiliasi dan ekspor (P1). 686 test hijau 🤖 Coding agent mulai dari CLAUDE.md, bukan dari file ini.Read the full README ↗
Point-of-sale untuk kafe takeaway 2–20 outlet di Indonesia. Offline-first, multi-vertikal, dijual sebagai lisensi berlangganan per outlet.
Status: F0 (fondasi) selesai · Fase berjalan: F1 (inti transaksi) — Modul A, B, dan C selesai: penjualan tersimpan atomik dengan pajak benar, dibayar tunai/QRIS/EDC, dan dapat dibatalkan atau direfund. Sisa Modul C hanya rekonsiliasi dan ekspor (P1). 686 test hijau
🤖 Coding agent mulai dari
CLAUDE.md, bukan dari file ini.
| Isi | Ukuran | |
|---|---|---|
research/ | Riset pra-produksi 12 fase · 39 keputusan bernomor (KEP) · 16 open question · seluruh sumber tersitasi | 15 dok · 64k kata |
product/ | PRD · IA · ERD · Technical Architecture · 8 spec modul · 414 acceptance criteria | 12 dok · 38k kata |
prototypes/ | Pengukuran yang mengoreksi asumsi: ukuran DB lokal, presisi kuantitas, harness DST sinkronisasi | 2 prototipe |
ds-bundle/ | Design system — final, tidak diriset ulang, tidak diubah | 21 komponen React |
docs/UJI-COBA-V1.md — instalasi bersih sampai uji coba per peran: prasyarat, reset database, seed data eksplorasi (The Cafe by ORIGEN), menjalankan keempat proses, matriks kredensial, dan delapan skenario uji. Termasuk daftar tegas tentang apa yang belum dapat diuji dan kenapa.
research/00-EXECUTIVE-BRIEF.md — sintesis, arsitektur satu halaman, lima risiko terbesar, urutan build.
CLAUDE.md — invariant, stack, konvensi, apa yang tidak boleh dibangunproduct/PRD-lumi-pos-v1.md — 77 functional requirementproduct/ARCH-lumi-pos-v1.md — batas modul, port, deploymentproduct/ERD-lumi-pos-v1.md — skema, RLS, indexCari nomor KEP di research/. Setiap keputusan besar punya minimal tiga opsi, tabel trade-off, alasan, kondisi peninjauan ulang, dan sumber.
product/ — spesifikasi| Dokumen | Isi |
|---|---|
| PRD | Problem · goals & metrik · non-goals · persona · alur · 77 FR · NFR · edge case · risiko · release plan |
| IA | 52 layar (17 kasir · 30 back-office · 5 mobile) · penandaan offline vs online-only · struktur URL |
| ERD | ~35 entitas · kebijakan RLS · index · partitioning · pemetaan PostgreSQL↔SQLite |
| ARCH | 8 prinsip mengikat · batas modul · 5 port · arsitektur sync · deployment · testing · rilis · insiden |
Spec modul — product/specs/, masing-masing dengan behavior given/when/then dan acceptance criteria:
| Modul | Fokus | |
|---|---|---|
| A | Katalog | Item → Variation → Modifier; aturan pemisah yang menentukan apakah stok bisa dilacak |
| B | Kasir & Order | State machine · snapshot order line · penomoran offline · void vs refund · idempotency |
| C | Pembayaran & Pajak | PBJT vs PPN · urutan perhitungan dengan contoh bernomor · multi-payment · pembulatan |
| D | Kas & Shift | Buka shift offline · urutan input tutup kas sebagai kontrol anti-fraud · cash ledger |
| E | Inventori | Stok sebagai ledger · deteksi oversell · snapshot |
| F | Identitas, RBAC & Audit | PIN vs email+password per permukaan · audit dua identitas · manajemen secret |
| G | Laporan & Exception | Sumber kebenaran tunggal · 8 laporan exception anti-fraud |
| H | Sinkronisasi | Dua jalur · HLC · 8 invariant · DST |
research/ — dasar faktual| Dokumen | |
|---|---|
| 00 | Executive brief — bisa dibaca berdiri sendiri |
| 01 | Lanskap & kompetitor — batas offline kompetitor, table stakes, celah pasar |
| 02 | Domain & fitur — 17 area, pola multi-vertikal |
| 03 | Tech stack — evaluasi per lapisan, ≥3 kandidat |
| 04 | Pola arsitektur — idempotency, append-only, versioning katalog |
| 05 | Offline & sinkronisasi — area risiko tertinggi |
| 06 | Payment & fiskal — QRIS, PBJT, Coretax, kesiapan global |
| 07 | Hardware — ESC/POS, batasan cetak per platform, harga pasar |
| 08 | Keamanan & compliance — PCI scope, threat model, UU PDP |
| 09 | Multi-tenancy & deployment — RLS, biaya dualisme SaaS/on-prem |
prototypes/ — pengukuranAngka di sini mengalahkan estimasi di dokumen lain.
| Menjawab | Temuan utama | |
|---|---|---|
| 01 SQLite sizing | OQ-07, tipe kuantitas | ≈3,0 KB/order · 90 hari = 39–130 MB · REAL gagal untuk kuantitas · ambang snapshot di ERD terlalu lambat |
| 02 DST sinkronisasi | R1 (risiko fatal) | Protokol lolos 2.000 iterasi · daftar invariant awal hanya menangkap 1 dari 5 cacat |
| Keputusan | Konsekuensi | |
|---|---|---|
| KEP-01 | Posisi: keandalan saat jaringan buruk + multi-vertikal | Bukan POS termurah, bukan POS terlengkap |
| KEP-02 | Segmen: kafe takeaway 2–20 outlet | Bukan warung mikro, bukan resto dine-in multi-terminal, bukan enterprise |
| KEP-17 | Penjualan append-only | Audit trail gratis; konflik sinkronisasi hilang secara struktural |
| KEP-07 | Stok sebagai ledger | Konvergen offline; ~32% ukuran DB |
| KEP-19 | Order line sebagai snapshot | Struk historis kebal perubahan katalog |
| KEP-16 | Idempotency key + ULID client-generated, keduanya | Terbukti lewat DST: masing-masing menutup lubang yang tidak ditutup yang lain |
| KEP-32 | Isolasi tenant lewat RLS | Query aplikasi yang bermasalah pun tidak bisa membocorkan data |
| KEP-33 | On-premise ditunda | Menghemat 8–14 minggu + 15–25% overhead permanen |
| OQ-01 | Terima batas offline yang dipilih Toast | KDS/table management/hub lokal keluar dari v1 |
F0 tertutup: seluruh gate hijau, termasuk test isolasi lintas-tenant (npm run test:isolation, 189/189) — rincian per item di HANDOFF.md. Satu item tersisa yang tidak memblokir F0/F1: SQLite WASM+OPFS di browser belum dibangun — memblokir F2.
Memblokir F1: — ✅ tidak ada lagi. Ketiganya diputuskan 1 Agustus 2026: OQ-09 (profil vertikal per outlet, mewarisi default tenant) · OQ-15 (QRIS statis dan dinamis, keduanya didukung) · ambang otorisasi default (termasuk void tanpa PIN manajer). Rinciannya di CLAUDE.md dan PRD § 14.
Tidak memblokir kode, tapi lead time-nya panjang — mulai sekarang:
Seluruh paket ini desk research — belum divalidasi dengan merchant. Tiga asumsi terbesar yang belum diuji:
Kalau salah satu runtuh, posisi produk berubah. Detail dan konsekuensinya di PRD § 11.2.
Interpretasi peraturan perpajakan dan keamanan di dokumen ini bukan nasihat hukum dan harus diverifikasi profesional sebelum rilis komersial.
| 10 | Operasi & kualitas — DST, observability, rilis, insiden |
| 11 | Model bisnis — pricing, harga pasar Indonesia, model biaya |
| 12 | Open questions — 16 pertanyaan, 6 sudah diputuskan |
| 13 | Decision log — keputusan OQ-01…OQ-06 beserta konsekuensinya |
| — | Sources — seluruh sumber per topik, dengan tanggal akses |