Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🍽️ Orderin β€” Smart Restaurant Self-Order, POS & Kitchen Display System (KDS)

Orderin Platform Banner

Next.js 14 TypeScript Tailwind CSS Drizzle ORM Midtrans QRIS License MIT


πŸ“Œ Tentang Orderin

Orderin adalah platform manajemen restoran dan kafe generasi baru yang mengintegrasikan ekosistem Self-Order berbasis Meja QR Code, Kasir POS (Point of Sale), Display Dapur Interaktif (Kitchen Display System / KDS), serta Laporan Keuangan & Inventori Bahan Baku dalam satu aplikasi web modern yang cepat, aman, dan responsif.

Dibangun dengan arsitektur Next.js 14 App Router, TypeScript, dan Drizzle ORM, Orderin dirancang untuk meningkatkan kecepatan operasional restoran, mengeliminasi kesalahan pencatatan pesanan, mempercepat perputaran meja (table turnover rate), dan menyajikan visualisasi data bisnis secara real-time.


✨ Fitur Unggulan (Core Features)

1. πŸ“± Customer Self-Order (Menu Digital & Meja QR)

  • Pemesanan Mandiri Instan: Pelanggan cukup memindai QR Code di meja mereka untuk langsung membuka katalog menu tanpa perlu mengunduh aplikasi native.
  • Kustomisasi Varian & Catatan Khusus: Pemilihan varian (cth: ukuran, level pedas, topping ekstra) dengan penyesuaian harga real-time dan input instruksi khusus (misal: kurangi es, tanpa bawang).
  • Tag Peringatan Alergen: Indikator alergen jelas pada setiap menu (kacang, susu/dairy, gluten, seafood, telur).
  • Keranjang Pintar & Sinkronisasi Meja: Keranjang belanja interaktif dengan persistent storage aman dari hydration mismatch.

2. πŸ’³ Pembayaran Fleksibel (QRIS & Tunai)

  • Midtrans QRIS Integration: Generate QRIS dinamis untuk pembayaran digital instan dengan pengecekan status otomatis via polling.
  • Verifikasi Kriptografis Webhook: Validasi signature SHA-512 anti-pemalsuan callback pembayaran sesuai standar keamanan perbankan.
  • Opsi Tunai di Kasir: Memungkinkan pelanggan memilih pembayaran tunai langsung di meja kasir.

3. 🍳 Kitchen Display System (KDS)

  • Antarmuka Dark Mode High-Contrast: Dirancang khusus untuk tablet dan display monitor dapur tahan banting (bg-slate-950).
  • Kanban Alur Masak 3 Kolom:
    1. Antrean Baru (pending & confirmed)
    2. Sedang Dimasak (preparing)
    3. Siap Saji (ready)
  • Elapsed Cooking Timer: Menghitung menit memasak per tiket dengan peringatan visual berkedip merah jika order melebihi batas waktu (15 menit).
  • Checklist Menu Interaktif: Koki dapat mencentang setiap item makanan yang sudah matang (strikethrough).
  • Web Audio API Chime: Bell nada ganda (D5 & A5 dual frequency chime) yang otomatis berbunyi ketika ada pesanan baru tiba di dapur.
  • Mode Layar Penuh (Fullscreen): Dukungan satu klik untuk menyembunyikan browser chrome di layar tablet dapur.

4. πŸ’Ό Portal Admin & Kasir POS

  • Dashboard Operasional: Metrik omset harian, jumlah pesanan, pesanan aktif dapur, dan persentase okupansi meja live.
  • Manajemen Pesanan & Pelunasan: Filter alur status lengkap, pencarian cepat, konfirmasi alur pesanan, dan pencetakan struk nota (Receipt Printing).
  • Katalog & Ketersediaan Menu: Tambah/edit menu baru dengan varian dinamis, serta sakelar toggle instan ketersediaan stok (isAvailable).
  • Peta Meja & Standee QR Code: Visualisasi denah meja restoran (kosong vs terisi) dan generator standee QR Code siap cetak per meja.
  • Inventori Bahan Baku: Peringatan stok menipis/habis dan penyesuaian stok instan (+10, +1, -1, -10).
  • Laporan Penjualan & Analytics: Filter periode harian/mingguan/bulanan, rasio perbandingan pembayaran (QRIS vs Tunai), breakdown kategori, dan ranking 10 menu terlaris (Top Performers).

5. πŸ›‘οΈ Keamanan & Keandalan Tingkat Enterprise

  • Sanitasi Data & Proteksi XSS: Pembersihan tag HTML, script, iframe, dan event handler pada seluruh input pengguna.
  • Rate Limiting Anti-Abuse: In-memory sliding window rate limiter membatasi 100 req/menit per client IP dengan HTTP 429 Too Many Requests.
  • OWASP Security Headers: Dilengkapi CSP, Strict-Transport-Security, X-Frame-Options (anti-clickjacking), dan X-Content-Type-Options (anti-sniffing).
  • Audit Kredensial Lingkungan: Pencegahan kebocoran environment variable privat ke browser client.

πŸ“Έ Tangkapan Layar (Screenshots Preview)

🍳 Kitchen Display System (KDS) πŸ“± Customer Self-Order (Menu Meja)
Kitchen Display System Menu Pelanggan
πŸ“Š Admin Operational Dashboard πŸͺ‘ Manajemen Meja & QR Code
Admin Dashboard Manajemen Meja
πŸ›οΈ Manajemen Pesanan & Kasir POS πŸ“ˆ Laporan Penjualan & Analytics
Kasir POS Laporan Analytics

πŸ› οΈ Arsitektur & Teknologi (Tech Stack)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       ORDERIN ECOSYSTEM                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                                        β”‚
          β–Ό                                        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Customer UI    β”‚                      β”‚  Admin & POS UI  β”‚
β”‚ (Mobile First)   β”‚                      β”‚  & Kitchen (KDS) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                                        β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β–Ό
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  Next.js 14 (App Router)  β”‚
              β”‚  TypeScript + Tailwind    β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β–Ό                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Drizzle ORM Engine   β”‚       β”‚ Midtrans Payment API  β”‚
β”‚  SQLite / PostgreSQL  β”‚       β”‚ SHA-512 Signature     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Panduan Memulai (Quick Start Guide)

1. Prasyarat Sistem

  • Node.js v18.17.0 atau versi yang lebih baru (Disarankan Node v20 LTS atau v24)
  • npm, pnpm, atau yarn

2. Kloning Repositori

git clone https://github.com/dapaaa07/Orderin.git
cd Orderin

3. Instalasi Dependensi

npm install

4. Konfigurasi Variabel Lingkungan

Salin berkas .env.example ke .env.local:

cp .env.example .env.local

Sesuaikan konfigurasi kredensial (termasuk Server Key Midtrans jika ingin menggunakan payment gateway):

NEXT_PUBLIC_APP_URL="http://localhost:3000"
DATABASE_URL="sqlite.db"
MIDTRANS_SERVER_KEY="your-midtrans-server-key"
MIDTRANS_CLIENT_KEY="your-midtrans-client-key"
MIDTRANS_IS_PRODUCTION=false

5. Inisialisasi Database & Demo Data

Jalankan migrasi database dan skrip pembuat data demo (menu makanan, kategori, meja, inventori, dan pesanan aktif):

# Jalankan migrasi tabel database
npm run db:migrate

# Isi database dengan data demo restoran lengkap
npx tsx scripts/seed-demo.ts

6. Jalankan Server Pengembangan

npm run dev

Buka browser dan akses:


πŸ§ͺ Skrip Pengujian & Verifikasi (Automated Tests)

Orderin dilengkapi dengan suite pengujian otomatis menyeluruh:

# Uji coba seluruh endpoint API & validasi input Zod
npm run test:api

# Uji coba skema database, relasi Drizzle ORM, dan integritas data
npm run test:db

# Uji coba keamanan (XSS sanitization, Midtrans SHA-512, Rate limiter, Credential audit)
npm run test:security

# Pengecekan tipe data TypeScript komprehensif
npm run type-check

# Kompilasi build produksi Next.js
npm run build

πŸ“‚ Struktur Direktori Proyek

orderin/
β”œβ”€β”€ app/                        # Next.js 14 App Router
β”‚   β”œβ”€β”€ (admin)/                # Rute Portal Admin & Kasir POS
β”‚   β”‚   β”œβ”€β”€ dashboard/          # Dashboard ringkasan KPI & omset
β”‚   β”‚   β”œβ”€β”€ orders/             # Manajemen pesanan masuk & kasir
β”‚   β”‚   β”œβ”€β”€ menu/               # Katalog menu & form tambah/edit
β”‚   β”‚   β”œβ”€β”€ tables/             # Denah meja & standee QR Code
β”‚   β”‚   β”œβ”€β”€ inventory/          # Manajemen stok bahan baku
β”‚   β”‚   └── reports/            # Laporan analitik penjualan
β”‚   β”œβ”€β”€ (customer)/             # Rute Pemesanan Pelanggan (Self-Order)
β”‚   β”‚   β”œβ”€β”€ order/[table]/      # Katalog menu berbasis meja QR
β”‚   β”‚   β”œβ”€β”€ order/cart/         # Keranjang pesanan & checkout
β”‚   β”‚   └── payment/            # Pembayaran QRIS & nota sukses
β”‚   β”œβ”€β”€ (kitchen)/              # Rute Kitchen Display System (KDS)
β”‚   β”‚   └── kitchen/            # Display kanban alur dapur koki
β”‚   └── api/                    # RESTful Backend API Endpoints
β”‚       β”œβ”€β”€ categories/
β”‚       β”œβ”€β”€ menu/
β”‚       β”œβ”€β”€ orders/
β”‚       β”œβ”€β”€ tables/
β”‚       β”œβ”€β”€ inventory/
β”‚       β”œβ”€β”€ reports/
β”‚       └── payment/
β”œβ”€β”€ components/                 # Pustaka Komponen UI Reusable
β”‚   β”œβ”€β”€ admin/                  # Sidebar, Header, Admin layout
β”‚   β”œβ”€β”€ kitchen/                # Header KDS, Tiket pesanan dapur
β”‚   β”œβ”€β”€ menu/                   # Kartu menu, modal varian, tabs
β”‚   β”œβ”€β”€ cart/                   # Bar keranjang floating, checkout
β”‚   └── ui/                     # Button, Badge, Modal, Input, Card
β”œβ”€β”€ context/                    # React Context (Cart State Management)
β”œβ”€β”€ docs/                       # Dokumentasi & aset tangkapan layar
β”‚   └── screenshots/
β”œβ”€β”€ lib/                        # Logika Bisnis & Utilitas Backend
β”‚   β”œβ”€β”€ db/                     # Skema tabel Drizzle ORM & migrasi
β”‚   β”œβ”€β”€ validations/            # Skema validasi Zod
β”‚   β”œβ”€β”€ security.ts             # Sanitasi XSS & signature SHA-512
β”‚   β”œβ”€β”€ rate-limiter.ts         # In-memory sliding window rate limiter
β”‚   └── api-response.ts         # Formatter respons error/sukses API
└── scripts/                    # Skrip pengujian otomatis & data seeder

🏷️ GitHub Topics & SEO Tags

Tambahkan tags berikut pada pengaturan repositori GitHub Anda untuk memaksimalkan traffic pencarian:

nextjs, react, typescript, tailwindcss, pos-system, point-of-sale, restaurant-pos, restaurant-management, kitchen-display-system, kds, qr-code, self-order, digital-menu, midtrans, qris, drizzle-orm, sqlite, fullstack, indonesian-tech, open-source

πŸ“„ Lisensi (License)

Proyek ini dilisensikan di bawah lisensi MIT License. Bebas digunakan, dimodifikasi, dan didistribusikan untuk keperluan personal maupun komersial.


Dibuat dengan ❀️ oleh Dapa untuk mendigitalisasi operasional restoran & kafe di Indonesia.

About

Orderin adalah platform manajemen restoran dan kafe generasi baru yang mengintegrasikan ekosistem Self-Order berbasis Meja QR Code, Kasir POS (Point of Sale), Display Dapur Interaktif (Kitchen Display System / KDS), serta Laporan Keuangan & Inventori Bahan Baku dalam satu aplikasi web modern yang cepat, aman, dan responsif.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages