This is the food delivery project in Tanzania which simplifies for restaurant to get customers
# Kebite
Tanzania's food delivery platform — connects customers, restaurants, and riders in Dar es Salaam. MERN stack with Expo React Native mobile apps.
## Structure
```
KEBITE/
├── client/ React web app (Vite, port 3000)
├── mobile/ Expo React Native — customer, rider, restaurant
│ ├── customer/
│ ├── rider/
│ ├── restaurant/
│ ├── shared/ cross-app api, socket, formatters, theme, storage
│ └── sync-env.js copies root API_URL into each app's .env
├── server/ Node.js + Express API (port 5000)
├── ai/ AI utilities & prompt assets
└── .env single source of truth for API_URL
```
## Environment
The root `.env` is the canonical source for the API URL across the monorepo:
```
API_URL=
localhost
REACT_APP_API_URL=
localhost
EXPO_PUBLIC_API_URL=
localhost
```
- `client/.env` reads `VITE_API_URL` (Vite, not CRA — `REACT_APP_*` is **not** read by the client). Keep `client/.env` aligned with the root.
- `mobile/sync-env.js` copies `EXPO_PUBLIC_API_URL` from root `/.env` into each Expo app's local `.env`. It runs automatically as a `pre`-hook before every `dev:mobile:*` script.
- `server/.env` defines its own `MONGODB_URI`, `JWT_SECRET`, etc., and is loaded independently by Express.
## Scripts (run from repo root)
| Command | What it does |
| ------------------------------------ | ----------------------------------------------- |
| `npm run dev:server` | Start the Express API on port 5000 (nodemon) |
| `npm run dev:client` | Start the React web app (Vite) |
| `npm run dev:mobile:customer` | Start the customer Expo app (web mode) |
| `npm run dev:mobile:rider` | Start the rider Expo app (web mode) |
| `npm run dev:mobile:restaurant` | Start the restaurant Expo app (web mode) |
| `npm run dev:all` | Run serve …