NomNomNow Eats Online is a food delivery demo built with React, TypeScript, Vite, Tailwind CSS, and a small Express + SQLite backend. It includes restaurant browsing, menu selection, cart checkout, order history, contact form submission, and a lightweight admin dashboard.
- Restaurant discovery with search and cuisine filters.
- Restaurant menu pages with category tabs and cart actions.
- Cart checkout with delivery details, payment selection, and order receipt.
- Order history with delivery progress tracking.
- Contact form that stores submissions through the backend.
- Profile page with form persistence in
localStorage. - Admin login and dashboard for viewing and updating orders, customers, and contact messages.
- Frontend: React 18, TypeScript, Vite
- Styling: Tailwind CSS, shadcn/ui, Radix UI, Lucide icons
- State and data: React Context, TanStack Query, React Hook Form, Zod
- Backend: Node.js, Express, SQLite
src/App.tsxsets up routing, layout, and the admin route guard.src/context/CartContext.tsxmanages cart state, order submission, and contact submission.src/data/foodData.tscontains the restaurant and menu seed data used by the UI.src/utils/api.tswraps requests to the backend API.backend/server.jsexposes the API and stores data in local SQLite databases.
- Node.js 18 or newer
- npm
Install frontend dependencies from the project root:
npm installInstall backend dependencies:
cd backend
npm installStart the backend server first:
cd backend
npm run devThe backend runs on http://localhost:5000 by default.
In a second terminal, start the frontend:
npm run devVite will print the local frontend URL, usually http://localhost:5173.
From the project root:
npm run dev- Start the Vite development server.npm run build- Build the frontend for production.npm run build:dev- Build the frontend in development mode.npm run lint- Run ESLint across the project.npm run preview- Preview the production build locally.
From the backend folder:
npm start- Start the Express server.npm run dev- Start the Express server with nodemon.
/Home page with featured restaurants and popular dishes./restaurantsRestaurant browsing with search and cuisine filters./restaurants/:idRestaurant menu and add-to-cart flow./cartCart review, delivery details, payment, and receipt./ordersOrder history and delivery progress./profileCustomer profile form with saved preferences./contactContact form and business information./admin-loginDemo admin sign-in./adminAdmin dashboard for orders, customers, and contact messages.
The backend exposes REST endpoints for:
- Orders
- Customers
- Contact messages
Data is stored in local SQLite databases inside the backend folder:
orders.dbcustomers.dbcontact.db
These database files are created automatically when the server starts.
The admin area uses a simple localStorage flag for access control. Use these demo credentials on the login page:
- Username:
admin - Password:
123
- The frontend reads restaurant and menu data from static files in
src/data. - The checkout flow writes new orders and contact submissions to the backend API.
- Profile data is persisted locally in the browser, not in the backend.