Quick Start

Get Sellino's web backend and both mobile apps running — the shortest path, with links to every detailed step.
Version: 1.0.0
Stack: Laravel 12 · Flutter · MySQL 8

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.

Jump to setup →
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.

  1. Check server requirements

    PHP 8.3+, MySQL 8.0+, Composer, Node.js. The web installer verifies each item on its first screen.

  2. Create the database

    Make a MySQL database + user (cPanel wizard) and keep the name, user and password ready.

  3. Upload files & set environment

    Upload WebSourceCode, point the web root at public/, create .env and set writable permissions.

  4. Run the installer

    Open your domain, fill in the database details and create your first admin account — it migrates and seeds automatically.

  5. Log in to the admin panel

    Sign in at your-domain.com/admin-7eP9kM4QX2pUoEic/login (the randomized slug from config/site.php) with the admin you created in the installer — or [email protected] / 12345678 after a CLI seed. Restaurants sign in at /seller/login, riders at /delivery/login. Then set store name, currency, logo and payment gateways in Settings.

  6. 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.

  1. Set up Flutter

    Install Flutter (stable) + Android Studio / Xcode, then run flutter doctor and fix any issues. One install serves all three projects.

  2. Point each app at your backend

    Run flutter pub get, then set kBaseUrl and kAppApiKey in lib/core/env/prod_env.dart (release) — base URL https://yourdomain.com/api/v10, key from Settings → API Security. The same URL and key in all three.

  3. 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.

  4. 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 with dart run flutter_launcher_icons.

  5. Build & release

    Create a keystore + key.properties per app for Android; set your Team & bundle id in Xcode for iOS. Build the .aab / .ipa and publish.

  6. 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:generate ran and APP_KEY is 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.