Prerequisites
Before you begin, make sure you have the following available:- Node.js 18+ — The backend and both Vite frontends require Node 18 or later. Run
node -vto check. - MongoDB instance — A locally running MongoDB server or a free MongoDB Atlas cluster. You will need the connection URI.
- Stripe account — A free Stripe account with access to your test secret key (
sk_test_...). No real charges are made during development. - Git — To clone the repository.
Setup Steps
1
Clone the repository
Clone the monorepo from GitHub and enter the project root directory.
2
Configure the backend environment
The Express server reads its secrets from a Open
.env file that is not committed to version control. Create it now:backend/.env in your editor and add the following keys:See the Environment Variables reference page for the complete list of accepted variables and their default values.
3
Install backend dependencies and start the API server
Move into the Nodemon watches
backend directory, install dependencies, and start the server with nodemon.server.js for changes and restarts automatically. The server listens on port 4000 by default (configurable via a PORT env variable). A successful start prints:4
Install and start the customer frontend
Open a new terminal, return to the project root, then install and start the Vite dev server for the customer app.Vite starts the customer app on port 5173 (the default Vite port). You will see output similar to:
5
Install and start the admin dashboard
Open another new terminal, navigate to the The admin dashboard runs on port 5174 by default.
admin directory, and start its Vite dev server.All three services — the backend API (port 4000), the customer frontend (port 5173), and the admin dashboard (port 5174) — must be running concurrently for the application to work correctly. Use three separate terminal tabs or a process manager like
concurrently to keep them all alive.Verify Everything Works
Once all three services are up, confirm each one is healthy before you start developing. Check the backend API The root route returns a plain-text health message. Run the following from any terminal:GET /api/food/list and displays available items grouped by category. If you see food cards rendered, the frontend-to-backend connection is working.
Access the admin dashboard
Open http://localhost:5174. You should see the admin layout with a sidebar containing Add, List, and Orders navigation links. Use the Add page to upload a test food item and verify that it appears in the List view and on the customer storefront.