- Overview
- Project Structure
- Features
- Technologies
- Screenshots
- Installation & Setup
- Environment Configuration
- Running the Application
- API Documentation
- Development Workflow
- Author
- License
ShopeeFood is a comprehensive food delivery platform inspired by the popular Shopee Food service. This full-stack application consists of three main components:
- Mobile Client - A React Native mobile application for customers to browse restaurants, view menus, and place orders
- Admin Dashboard - A web-based administrative interface for managing restaurants, menus, and orders
- Backend API - A NestJS-based RESTful API service that powers both the client and admin applications
The application enables users to browse restaurants, view menus, add items to cart, place orders, and track delivery status. Restaurant owners and administrators can manage their menus, view orders, and handle customer requests through the admin dashboard.
The project is organized into three main directories:
shopeefood-app/
βββ shopeefood-backend/ # NestJS backend API
βββ shopeefood-frontend-client/ # React Native mobile client app
βββ shopeefood-frontend-admin/ # React admin dashboard
βββ README/ # Project screenshots and documentation assets
- User authentication (register, login, email verification)
- Restaurant discovery and browsing
- Search functionality for restaurants and dishes
- Menu browsing with item details
- Shopping cart management
- Order placement and tracking
- User profile management
- Admin authentication and authorization
- Restaurant management (add, edit, delete)
- Menu and menu item management
- Order management and status updates
- User management
- Analytics and reporting
- RESTful API architecture
- User authentication and authorization
- Data persistence with MongoDB
- Email services for verification and notifications
- File upload for images
- Caching for improved performance
- Framework: NestJS (Node.js)
- Database: MongoDB with Mongoose
- Authentication: JWT, Passport
- File Storage: Local file system
- Email Service: Nodemailer
- API Documentation: Postman Collection
- Framework: React Native with Expo
- Navigation: Expo Router (file-based)
- State Management: React Context API
- API Integration: Axios
- Form Handling: Formik & Yup
- UI Components: Custom components with React Native elements
- Framework: React.js
- UI Library: Ant Design
- State Management: React Context API / Redux
- API Integration: Axios
- Routing: React Router
- Server: Express.js (for production serving)
- Node.js (v18 or higher)
- MongoDB (local or Atlas)
- Expo CLI (for mobile client)
- Git
-
Navigate to the backend directory:
cd shopeefood-backend -
Install dependencies:
npm install
-
Create a
.envfile (see Environment Configuration) -
Start the backend server:
npm start
-
Navigate to the client directory:
cd shopeefood-frontend-client -
Install dependencies:
npm install
-
Start the Expo development server:
npm start
-
Navigate to the admin directory:
cd shopeefood-frontend-admin -
Install dependencies:
npm install
-
Start the development server:
npm start
# Server Configuration
PORT=8080
# Database Configuration
MONGODB_URI=mongodb://username:password@host:port/database
ACTIVE_KEY=your_active_key_here
# Email Configuration
[email protected]
MAIL_PASSWORD=your_email_password
MAIL_EXPIRE_IN=500
# Sample Data
SHOULD_INIT=true
INIT_PASSWORD=123456
# JWT Configuration
JWT_SECRET=your_jwt_secret_key
JWT_ACCESS_TOKEN_EXPIRED=1000d
PORT=3000
β οΈ Note: For security reasons, never commit your.envfiles to version control. To get the actual values for these environment variables, please contact the administrator at https://www.facebook.com/nvminh162
Run each component in development mode:
Backend:
cd shopeefood-backend
npm run start:devClient Frontend:
cd shopeefood-frontend-client
npm startAdmin Dashboard:
cd shopeefood-frontend-admin
npm run devFor production deployment, you can use:
Backend:
cd shopeefood-backend
npm run start:prodClient Frontend: Build the Expo app for the appropriate platform (iOS/Android)
Admin Dashboard:
cd shopeefood-frontend-admin
npm startThe API documentation is available via a Postman Collection. Import the collection file located at:
shopeefood-backend/data/nvminh162_shopeefood_postman_collection_nestjs.json
This collection contains all the endpoints available in the API, along with example requests and responses.
- Start the backend server first
- Launch the client and admin frontends
- Use the Postman collection to test API endpoints
- Make changes to the respective components as needed
- For mobile client development, use the Expo Go app on a physical device or emulator
- Developer: nvminh162
- Contact: Facebook
This project is licensed under the MIT License - see the LICENSE file for details.
Β© 2025 ShopeeFood Application. All rights reserved.