ScanDine adalah sistem pemesanan cafe berbasis QR Code yang memungkinkan pelanggan untuk scan QR code di meja, melihat menu, menambahkan item ke keranjang (cart), dan melakukan pembayaran secara online atau tunai.
- Scan QR Code - Pelanggan scan QR code yang ada di meja cafe
- Lihat Menu - Menampilkan daftar menu berdasarkan kategori
- Pilih Menu & Modifier - Klik menu untuk melihat detail dan memilih topping/modifier (tingkat kepedasan, size, extra topping, dll)
- Add to Cart - Item disimpan di localStorage (client-side, tidak ada database cart)
- Checkout - Pilih metode pembayaran (Online via Midtrans atau Cash)
- Pembayaran - Jika online, redirect ke Midtrans Snap. Jika cash, konfirmasi ke kasir
- Order Confirmed - Status meja berubah jadi occupied, order masuk ke dashboard admin
- Dashboard - Melihat statistik dan ringkasan pesanan
- Manage Orders - Melihat dan update status order (pending β confirmed β preparing β served β completed)
- Manage Tables - CRUD meja cafe & generate QR code untuk setiap meja
- Manage Menu - CRUD kategori, menu items dengan upload gambar ke Cloudinary
- Manage Modifiers - CRUD modifier groups dan modifier items (topping, size, dll)
- Payment Confirmation - Konfirmasi pembayaran cash manual
- Backend Framework: Laravel 11.x
- Database: PostgreSQL (Online/Cloud Database)
- Payment Gateway: Midtrans Snap
- Image Storage: Cloudinary CDN
- QR Code Generator: SimpleSoftwareIO Simple QR Code
- Frontend: Blade Templates + JavaScript (Cart di localStorage)
Sebelum memulai, pastikan Anda sudah menginstall:
Download: https://www.php.net/downloads
- Windows: Download dari windows.php.net
- Pastikan extension berikut aktif di
php.ini:extension=pdo_pgsql extension=pgsql extension=gd extension=curl extension=mbstring extension=openssl
Download: https://getcomposer.org/download/
- Windows: Download
Composer-Setup.exedan install
Cek instalasi:
php --version
composer --versionRekomendasi Provider (Gratis):
- Neon.tech - Free 0.5 GB
- Supabase - Free 500 MB
- ElephantSQL - Free 20 MB
- Aiven - Free Trial
Siapkan credentials:
- Host/Hostname
- Port (default: 5432)
- Database Name
- Username
- Password
- Daftar di https://dashboard.midtrans.com/register
- Login dan pilih mode Sandbox untuk testing
- Catat credentials:
- Server Key (Settings β Access Keys)
- Client Key (Settings β Access Keys)
- Daftar di https://cloudinary.com/users/register/free
- Login ke Dashboard
- Catat credentials:
- Cloud Name
- API Key
- API Secret
git clone https://github.com/yourusername/ScanDine.git
cd ScanDinecomposer install- Copy file
.env.examplemenjadi.env:
cp .env.example .env- Generate application key:
php artisan key:generate- Edit file
.envdan sesuaikan konfigurasi:
APP_NAME=ScanDine
APP_ENV=local
APP_KEY=base64:... # sudah generate otomatis
APP_DEBUG=true
APP_URL=http://localhost:8000
# PostgreSQL Database Configuration
DB_CONNECTION=pgsql
DB_HOST=your-postgres-host.com
DB_PORT=5432
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
CLOUDINARY_URL=cloudinary://your_api_key:your_api_secret@your_cloud_name
# Midtrans Configuration
MIDTRANS_SERVER_KEY=your_server_key
MIDTRANS_CLIENT_KEY=your_client_key
MIDTRANS_IS_PRODUCTION=false
MIDTRANS_IS_SANITIZED=true
MIDTRANS_IS_3DS=truephp artisan migrateJika ingin reset database dan migrate ulang:
php artisan migrate:freshphp artisan db:seedphp artisan storage:linkphp artisan serveAkses aplikasi di browser: http://localhost:8000
Gunakan credit card test dari Midtrans untuk testing pembayaran online:
- Card Number: 4811 1111 1111 1114
- Exp Date: 01/25 (atau bulan/tahun di masa depan)
- CVV: 123
- OTP: 112233
Lebih lengkap: Midtrans Testing Payment
ScanDine/
βββ app/
β βββ Http/
β β βββ Controllers/
β β β βββ Admin/ # Admin Controllers
β β β βββ AuthController.php
β β β βββ CheckoutController.php
β β β βββ MenuController.php
β β β βββ PaymentController.php
β β βββ Requests/ # Form Request Validation
β βββ Models/ # Eloquent Models
β βββ Services/
β βββ MidtransService.php # Payment Service
βββ database/
β βββ migrations/ # Database Schema
βββ resources/
β βββ views/ # Blade Templates
βββ routes/
β βββ web.php # Web Routes
β βββ api.php # API Routes
βββ .env.example # Environment Template
βββ DATABASE_RELATIONS.md # Database Documentation
βββ FLOWCHART.md # System Flowcharts
βββ README.md
Jika sudah run seeder, gunakan credentials berikut untuk login admin:
- Email: admin@scandine.com
- Password: password
Project ini menggunakan 11 tabel utama:
restaurants- Data cafe/restorantables- Meja dengan QR codecategories- Kategori menumenu_items- Item menu dengan gambar di Cloudinarymodifier_groups- Group modifier (Tingkat Kepedasan, Size, dll)modifier_items- Item modifier (Tidak Pedas, Pedas, dll)menu_modifier_groups- Pivot table menu & modifierorders- Data pesananorder_items- Detail item pesananorder_item_modifiers- Modifier yang dipilih per itempayments- Data pembayaran dengan Midtrans tracking
Detail lengkap: lihat DATABASE_RELATIONS.md
Diagram lengkap alur sistem tersedia di FLOWCHART.md:
- Customer Order Flow
- Backend Order Processing
- Midtrans Payment Callback
- Admin Order Management
- QR Code Generation Flow
- Cart Management Flow (localStorage)
- Table Status Update Flow
- Error Handling Flow
Install PHP PostgreSQL extension:
# Ubuntu/Debian
sudo apt-get install php8.2-pgsql
# Windows: Edit php.ini, uncomment:
extension=pdo_pgsql
extension=pgsqlInstall Cloudinary package:
composer require cloudinary-labs/cloudinary-laravelInstall QR Code package:
composer require simplesoftwareio/simple-qrcodePastikan:
- Server Key dan Client Key benar
MIDTRANS_IS_PRODUCTION=falseuntuk sandbox- IP whitelisting di Midtrans dashboard (Settings β Access Keys)
Periksa:
- Credentials PostgreSQL di
.envbenar - Database sudah dibuat
- Firewall allow koneksi ke database
- SSL mode jika required (
?sslmode=requiredi DB_HOST)
GET /menu?table={uuid}- List menu dengan kategoriGET /menu/{id}- Detail menu item (JSON)POST /checkout- Process checkout dari cart
GET /admin/dashboard- Dashboard statistikGET /admin/orders- List ordersPOST /admin/orders/{id}/status- Update order statusPOST /admin/orders/{id}/confirm-payment- Confirm cash payment- CRUD
/admin/tables- Manage tables & QR codes - CRUD
/admin/categories- Manage categories - CRUD
/admin/menu-items- Manage menu items - CRUD
/admin/modifier-groups- Manage modifier groups - CRUD
/admin/modifier-items- Manage modifier items
POST /payment/callback- Midtrans payment notification
Contributions are welcome! Please:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open-sourced software licensed under the MIT license.
Your Name
- GitHub: @yourusername
- Email: your.email@example.com
- Laravel Framework
- Midtrans Payment Gateway
- Cloudinary CDN
- SimpleSoftwareIO QR Code Generator
- PostgreSQL Database
Happy Coding! π
For questions or support, please open an issue or contact the developer.
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via taylor@laravel.com. All security vulnerabilities will be promptly addressed.
The Laravel framework is open-sourced software licensed under the MIT license.