Forkfleet — Food Delivery App
A complete food delivery platform you host yourself: customer web app, restaurant and rider panels, admin, REST API and an Expo mobile app

Everything included
- Customer web app: search, cuisine and pure-veg filters, veg marks
- One-restaurant cart, coupons, saved addresses picked on a map
- Cash on delivery and UPI (link and QR for the exact amount)
- Live order status and the rider's position on a map
- Restaurant panel: live orders board, menu, hours, earnings
- Delivery-partner panel: online/offline, claim, pick up, deliver
- Admin: zones, fees, commission, coupons, payouts ledger
- REST API /api/v1 with bearer tokens, documented in API.md
- Expo mobile app source with customer and rider modes
- SQLite by default; MySQL or PostgreSQL via Prisma
From order to a live website
- 1
Choose a package
Code only, We set it up, or Customised. All prices are one-time.
- 2
Pay securely
Your download link is emailed once payment is confirmed and also appears in My Account.
- 3
We contact you
For setup packages we email within one business day for your cPanel / hosting login and domain.
- 4
Live on your domain
Your delivery platform runs on your own Node.js hosting, with orders on the restaurant board, riders on the partner panel and everything in your admin.
A delivery platform you own
Forkfleet gives you the code of a working food delivery service instead of a monthly subscription. You install it on your hosting, add your zones and restaurants, and keep your customers, orders and data. The download has four parts that share one database: the customer web app, a partner panel for restaurant owners and delivery partners at /partner, the admin panel at /admin, and a REST API that the included mobile app uses. The brand name Forkfleet is a placeholder: change the name, logo and colours in Admin → Settings and the app name in mobile/.env.
- Customer web app that works well on phones
- Restaurant and delivery-partner panel at /partner
- Admin panel at /admin with a setup wizard for an empty install
- REST API /api/v1 and an Expo mobile app
What customers do
Customers browse restaurants with a search box, cuisine chips and a pure-veg filter, and can set their delivery location to see only the restaurants that deliver to them. Menus show veg and non-veg marks, categories and sold-out dishes. The cart holds dishes from one restaurant; adding from a second one asks to start a new cart. At checkout they choose a saved address or pick a new one on the map, add a note, apply a coupon and pay by cash on delivery or UPI. The order page shows each step from waiting for the restaurant to delivered, the delivery partner's name and phone, and the partner's position on the map while the order is on the way. A customer can cancel before the restaurant accepts and rate the restaurant and the partner once after delivery.
- Restaurants that deliver to your address, open-now status
- Saved addresses and a map pin for new ones
- Coupons, UPI link and QR, UTR reference field
- Live status, order history and one rating per order
The restaurant and delivery-partner panel
Restaurants and riders sign up at /partner/register and wait for your approval. A restaurant owner sees a live orders board in three columns (new, in the kitchen, ready or out) that refreshes by itself, with Accept and Decline buttons and the amount the restaurant earns on each order. They can pause new orders, edit menu categories and dishes with photos, switch a dish to sold out, and set the description, cuisine, pure-veg flag, opening hours, preparation time, delivery radius, minimum order and map position. An owner with more than one restaurant switches between them. Delivery partners go online in their zone, see deliveries waiting for a partner, accept one (only one partner can win), mark it picked up and delivered, see how much cash to collect, open directions on OpenStreetMap and share their location while the page is open. Both have an earnings ledger, and restaurants see their ratings.
- Live orders board with accept, decline, preparing and ready
- Menu, photos, sold-out switch, hours, radius, minimum order
- Rider: online in a zone, claim, pick up, deliver, cash to collect
- Earnings ledger for restaurants and riders
The admin panel
The dashboard shows orders and deliveries today, active orders, live restaurants, partners online and sign-ups waiting for approval. On each order you can confirm a UPI payment after checking your bank app, assign or re-assign a delivery partner, or cancel; orders and the ledger export to CSV. You approve restaurants and partners, add restaurants yourself, block users, and draw delivery zones as a centre point and radius. Fees & commission sets the delivery fee (base fee, kilometres included, price per extra kilometre, a cap and free delivery above an amount), the platform fee, the tax percentage, the default commission, partner pay per delivery and per kilometre, and the time zone used for opening hours. Coupons can be funded by the platform or by one restaurant. The payouts ledger records what each restaurant and rider has earned and what you have paid them. You can hide a rating, switch payment methods on and set your UPI ID, and fill in business details, colours, map centre, live chat, WhatsApp button, analytics tags, announcement bar, cookie notice, SEO and SMTP email. Every email is also saved in an email log.
- Order control: confirm UPI, assign a partner, cancel
- Zones, delivery fees, platform fee, tax and commission
- Coupons, payouts ledger, ratings moderation, CSV export
- Settings, add-ons, email log and licence screens
REST API and the mobile app
The versioned REST API at /api/v1 uses bearer tokens that last 90 days and are stored hashed. It covers app info and colours, sign-in and sign-up, restaurants and menus, a cart quote, addresses, orders, cancellation, the UPI reference and ratings, the restaurant's order actions, and the delivery partner's online status, location, available deliveries, accept, pickup, deliver and earnings. API.md documents every endpoint. The mobile/ folder holds an Expo (React Native) app: in customer mode it lists restaurants, uses the phone's location, shows menus, a cart, checkout, live status and ratings; in delivery-partner mode it goes online, lists waiting deliveries, accepts, opens directions, calls the customer and shares the location every 20 seconds while the screen is open. The app never calculates a price; every total comes from the server.
- Endpoints for customers, restaurants and riders
- Expo app with customer and delivery-partner modes
- Brand colours follow the admin settings, no rebuild needed
- Build Android and iOS with EAS
What is in the zip and how it was tested
You get the full source: server.js, the Express routes for the web app, partner panel, admin and API, the EJS views, CSS and small browser scripts, the Prisma schema and a seed script, the mobile/ app, README.md, API.md and the PDF installation guide. npm run setup creates the .env file with a random secret, the tables and a sample city with five sample restaurants (one waiting for approval), menus, two zones, two coupons and demo users; --no-seed gives an empty app and --reseed reloads the sample. No orders, ratings or sales numbers are invented. npm test runs 27 tests with Node's built-in runner on a throwaway SQLite database: fee and pay rules, coupons, opening hours across midnight, zones, the role matrix and the ledger, plus the whole order flow through the API and the web pages, including forged prices being recalculated, two partners racing for one delivery and CSRF checks.
- Full source with README.md and API.md
- Sample city, restaurants and demo logins, no invented orders
- 27 unit and flow tests, plus a curl smoke test
- Illustrated installation guide (PDF)
Honest limits
Native Android and iOS builds of the mobile app have not been run: its TypeScript check passes and its web build was tried against the server, so build it with EAS and test on real phones before publishing. Push notifications and background GPS tracking are not included. No payment gateway is in the download; gateways are add-ons, and gateway add-ons in this product family are tested only against mocked responses. There is no wallet or stored balance, because holding customer money needs a licence (in India an RBI PPI licence). Commission and payouts are a ledger only: you pay restaurants and riders outside the app. Maps use OpenStreetMap's public tiles, which are not meant for production traffic, so switch to your own tile provider before launch. Distances are straight-line, not road distance. Our tests ran on SQLite; MySQL and PostgreSQL are supported through Prisma.
- Mobile app: native builds not run, no push notifications
- No gateway bundled, no wallet, payouts recorded not paid
- Use your own map tile provider in production
More ready-made websites
Built by the same team, with the same setup service and support.
Browse every ready-made website, or compare our custom website packages if you need a site designed from scratch. Want more guests to find you on Google Maps? See our local SEO service, or talk to our web design team.




