A full-stack restaurant management and customer ordering system with social features.
Check out the app in action:
See more screenshots in the App_preview folder.
WatchResto/
βββ admin-dashboard/ # Admin dashboard (React)
βββ restaurant-frontendcls/ # Customer frontend (React)
βββ backend/ # Node.js/Express backend
βββ App_preview/ # Application screenshots & demo video
βββ dev-scripts/ # Development utilities
- π½οΈ Browse menu items with real-time updates
- π Shopping cart with order management
- π₯ Social features (stories, friends, tagging)
- π± User profiles with dietary preferences
- πͺ Marketplace for discovering restaurants
- π³ Multiple payment methods
- π¦ Order tracking with ETA
- π Dashboard with analytics
- π΄ Menu management (CRUD operations)
- π¨βπΌ Staff management
- π Order management
- ποΈ Promo code system
- πͺ Restaurant approval system
- π Story moderation
- π₯ User management
Frontend:
- React 18
- React Router
- Context API (Auth, Cart)
- CSS3 with custom styling
- React Easy Crop for image editing
Backend:
- Node.js
- Express 5
- PostgreSQL
- JWT Authentication
- Passport.js (OAuth support)
- bcrypt for password hashing
- Node.js (v16+)
- PostgreSQL (v12+)
- npm or yarn
git clone https://github.com/YOUR_USERNAME/WatchResto.git
cd WatchRestocd backend
npm install
# Create .env file
cp .env.example .env
# Edit .env with your credentialsDATABASE_URL=postgres://username:password@localhost:5432/watchresto
JWT_SECRET=your-secret-key-here
PGUSER=postgres
PGHOST=localhost
PGDATABASE=watchresto
PGPASSWORD=your-password
PGPORT=5432# Run the complete schema
psql -U postgres -d watchresto -f complete_db_schema.sqlcd ../admin-dashboard
npm install
npm start
# Runs on http://localhost:3000Default Admin Login:
- Username:
admin - Password:
change-me
cd ../restaurant-frontendcls
npm install
npm start
# Runs on http://localhost:3001cd ../backend
npm start
# Runs on http://localhost:5000The database includes the following tables:
users- Customer accountsmenu_items- Restaurant menuorders- Customer orderspromo_codes- Discount codesstaff- Staff membersstories- Social storiesrestaurants- Marketplace restaurantsfriends- User friendshipsrestaurant_favorites- User favorites
- JWT-based authentication
- OAuth support (Google, Facebook, Twitter, Instagram)
- Admin role-based access control
- Protected routes in both frontends
Menu items and profile pictures support image upload with cropping functionality using react-easy-crop.
Menu items sync between admin dashboard and customer frontend.
- Story sharing with images and tags
- Friend tagging in stories
- Like and love reactions
- Comments system
Supports multiple payment methods:
- Credit/Debit Card
- PayPal
- Google Pay
- Apple Pay
# Option 1: Use the development script
cd dev-scripts
./start-all.ps1
# Option 2: Start individually
# Terminal 1 - Backend
cd backend && npm start
# Terminal 2 - Admin Dashboard
cd admin-dashboard && npm start
# Terminal 3 - Customer Frontend
cd restaurant-frontendcls && npm startPOST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/admin/login- Admin login
GET /api/menu-items- Get all menu itemsPOST /api/menu-items- Add menu item (admin)PUT /api/menu-items/:id- Update menu item (admin)DELETE /api/menu-items/:id- Delete menu item (admin)
GET /api/orders- Get all orders (admin)GET /api/orders/my- Get user ordersPOST /api/orders- Create orderPATCH /api/orders/:id/status- Update order status (admin)
GET /api/users- Get all users (admin)GET /api/users/:id- Get user profilePUT /api/users/:id- Update user profile
GET /api/stories- Get all storiesPOST /api/stories- Create storyDELETE /api/stories/:id- Delete story
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
- Your Name - Initial work
- React documentation
- Express.js community
- PostgreSQL community
- All contributors



