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.
- 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.
- 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.
- Antarmuka Dark Mode High-Contrast: Dirancang khusus untuk tablet dan display monitor dapur tahan banting (
bg-slate-950). - Kanban Alur Masak 3 Kolom:
- Antrean Baru (
pending&confirmed) - Sedang Dimasak (
preparing) - Siap Saji (
ready)
- Antrean Baru (
- 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.
- 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).
- 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.
| π³ Kitchen Display System (KDS) | π± Customer Self-Order (Menu Meja) |
|---|---|
![]() |
![]() |
| π Admin Operational Dashboard | πͺ Manajemen Meja & QR Code |
|---|---|
![]() |
![]() |
| ποΈ Manajemen Pesanan & Kasir POS | π Laporan Penjualan & Analytics |
|---|---|
![]() |
![]() |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββββββββ βββββββββββββββββββββββββ
- Core Framework: Next.js 14 (App Router, Server Actions, Route Handlers)
- Bahasa: TypeScript (Strict Mode Enabled)
- Styling & UI: Tailwind CSS v3, Lucide React,
tailwind-merge,clsx - Database & ORM: Drizzle ORM, better-sqlite3 (Development WAL mode, PostgreSQL schema compatible)
- Validasi Skema: Zod
- Audio Alerts: Web Audio API (Native browser synthesizer)
- Payment Gateway: Midtrans Core API (QRIS & Webhook verification)
- Node.js v18.17.0 atau versi yang lebih baru (Disarankan Node v20 LTS atau v24)
- npm, pnpm, atau yarn
git clone https://github.com/dapaaa07/Orderin.git
cd Orderinnpm installSalin berkas .env.example ke .env.local:
cp .env.example .env.localSesuaikan 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=falseJalankan 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.tsnpm run devBuka browser dan akses:
- Customer Self-Order (Meja T-01): http://localhost:3000/order/T-01
- Portal Admin & POS: http://localhost:3000/dashboard
- Display Dapur (KDS): http://localhost:3000/kitchen
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 buildorderin/
βββ 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
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
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.





