Quick Start
Get Sellino's web backend and both mobile apps running — the shortest path, with links to every detailed step.
Developed By: BugBuild Labs
What You're Setting Up
Sellino Food is one Laravel backend + database with two faces on top of it: the web admin & POS terminal, and a Flutter Customer App for Android and iOS. Set up the backend first — the app points at its API.
Web Backend
Laravel admin panel, the browser POS terminal and the /api/v10 that powers the app. Install this first.
Customer App
Flutter counter app (Android & iOS) — terminal, register, stock. Point it at your API URL, rebrand, build.
Jump to setup →Setup Order
Follow the three stages in order. Each app needs the backend's API to be live and reachable over HTTPS first.
Fastest path to a working store: finish stage 1 (backend + first admin login) and you already have a live website and admin panel. The mobile apps in stages 2–3 are added on top whenever you're ready.
Stage 1 · Web Backend (Laravel)
Install the Laravel source from the WebSourceCode folder onto your server. Full details are in the Web Panel guide — the steps below link straight to each one.
-
Check server requirements
PHP 8.3+, MySQL 8.0+, Composer, Node.js. The web installer verifies each item on its first screen.
-
Create the database
Make a MySQL database + user (cPanel wizard) and keep the name, user and password ready.
-
Upload files & set environment
Upload
WebSourceCode, point the web root atpublic/, create.envand set writable permissions. -
Run the installer
Open your domain, fill in the database details and create your first admin account — it migrates and seeds automatically.
-
Log in to the admin panel
Sign in at
your-domain.com/admin-7eP9kM4QX2pUoEic/login(the randomized slug fromconfig/site.php) with the admin you created in the installer — or[email protected]/12345678after a CLI seed. Restaurants sign in at/seller/login, riders at/delivery/login. Then set store name, currency, logo and payment gateways in Settings. -
Optional add-ons — Real-time chat, Push (Firebase), S3 storage
Turn these on when you need them. Push is also required if you want the mobile apps to send notifications — the full Firebase procedure is in Common Setup.
Before the apps: confirm https://yourdomain.com/api/v10 is reachable over valid HTTPS — the Customer App will connect to exactly this URL.
Stage 2 · The Three Flutter Apps
The download is one Main_Files.zip with four folders — WebSourceCode (installed in Stage 1) and the three Flutter projects CustomerAppSourceCode, RestaurantAppSourceCode and RiderAppSourceCode. Every step below is the same for all three; do it once, then repeat it per app. Full details live in the Customer App, Restaurant App and Rider App guides.
-
Set up Flutter
Install Flutter (stable) + Android Studio / Xcode, then run
flutter doctorand fix any issues. One install serves all three projects. -
Point each app at your backend
Run
flutter pub get, then setkBaseUrlandkAppApiKeyinlib/core/env/prod_env.dart(release) — base URLhttps://yourdomain.com/api/v10, key from Settings → API Security. The same URL and key in all three. -
Add Firebase (for push)
Each app is its own Firebase Android/iOS app: drop in its
google-services.json/GoogleService-Info.plist. iOS also needs the APNs key uploaded to Firebase. Push matters most in the Restaurant app — a missed new-order alert is a lost order. -
Rebrand — name, id & icon
Give each app your own name and a distinct package/bundle id (e.g.
com.yourbrand.food,.restaurant,.rider), then generate icons withdart run flutter_launcher_icons. -
Build & release
Create a keystore +
key.propertiesper app for Android; set your Team & bundle id in Xcode for iOS. Build the.aab/.ipaand publish. -
Test the round trip
On real devices: set a delivery pin and place an order in the Customer app → accept and mark ready in the Restaurant app → go online, pick up and deliver with the OTP in the Rider app. If that loop works, everything else does.
Grant location on the Customer and Rider apps. Without it the customer sees no restaurants and the rider draws no line on the tracking map — the two most common "it does not work" reports, and neither is a bug.
Go-Live Checklist
A quick pass before you open the doors to real customers:
- Site served over valid HTTPS and the web root points at
public/. php artisan key:generateran andAPP_KEYis set (the installer does this).- Store name, currency, timezone, logo/favicon set in Settings.
- Payment gateways switched to live keys (test keys only process test payments). Using Stripe or PayPal? Also set the charge currency, paste the Stripe webhook URL & signing secret, and make sure every currency has an exchange rate — a missing rate blocks international payments.
- Scheduler cron added (
schedule:run) if you use scheduled push campaigns, backups or nightly currency-rate updates. - Legal pages reviewed under Website → Pages — Privacy, Terms and Return & Refund ship with placeholder text.
- Mail/SMTP configured so OTP and notification emails send.
- All three apps point at the production API URL and were rebuilt after any config change.
- Every outlet has a map pin and a delivery radius (Restaurant → Outlets) — without a pin a restaurant is invisible to every customer.
- Food Delivery settings reviewed: base fee, per-km fee, packaging, minimum order and tip presets (Settings → Food Delivery).
- Firebase push tested on a real Android and iOS device (iOS needs the APNs key).
- Real-time chat (Reverb) kept running under Supervisor if you use live chat.
Need the detail behind any step? Open the Web Panel or Customer App guide from the tabs above — each Quick Start link jumps to the exact section.