18

Arsitektur Teknis Unit Kuliner & Pujasera

Updated: Sep 2026Oleh: SystemModul Unit Kuliner & Pujasera

Arsitektur Teknis: Unit Kuliner & F&B

Dokumentasi rancang bangun teknis untuk modul POS Kasir, Kafe, dan Pujasera BUMDes.

1. Skema Database (ERD)#

Modul F&B ini merupakan mini-ERP manufaktur.

  • fnb_products: Tabel menu kafe (Kopi, Nasi Goreng). Kolom khusus: is_recipe (Boolean).
  • fnb_recipes & fnb_recipe_ingredients: Tabel Bill of Materials (BOM). Menyimpan komposisi (misal: 1 porsi Kopi = 15g Biji Kopi + 20ml Gula).
  • inventory_items: Tabel bahan baku mentah (gudang).
  • tenant_stalls (Lapak Warga): Tabel untuk menyimpan profil warga PKK penyewa lapak beserta skema sewanya (Flat/Bagi Hasil).
  • pos_transactions & pos_transaction_lines: Tabel histori nota kasir. Mengandung informasi tenant_id jika menu yang dijual berasal dari lapak warga.

2. API & Backend Services#

  • Server Action: processPOSCheckout(cartItems): Aksi krusial. Saat kasir menekan "Bayar", fungsi ini akan:
  1. Mencatat uang masuk.
  2. Mengecek apakah item adalah menu warga (Panggil triggerTenantSplitJournal).
  3. Mengecek apakah item adalah menu Cafe dengan resep (Panggil reduceInventoryBasedOnRecipe).
  • CRON Job: GenerateTenantInvoices: Task berjalan setiap tanggal 28 setiap bulannya untuk membuat tagihan sewa lapak bulan depan ke warga (Skema Flat).

3. Komponen UI (Front-End)#

  • POSGridClient.tsx (Client Component): Layar interaktif kasir. Dioptimalkan untuk Tablet (Touch Screen). Menggunakan Zustand untuk state keranjang belanja (cart).
  • KitchenDisplay.tsx (Client/Realtime Component): Membutuhkan Supabase Realtime langganan ke tabel pos_transactions. Setiap ada pesanan masuk, layar di dapur akan otomatis "Ting!" memunculkan antrean tiket masak baru tanpa perlu refresh halaman.

Apakah panduan ini membantu Anda?