SkyTakeout is an online food delivery ordering system tailored for catering businesses such as restaurants and food chains. The project aims to provide an efficient and convenient takeaway solution for both merchants and consumers, covering the complete business workflow from dish management and order processing to delivery tracking.
The system adopts a frontend-backend separated architecture:
- Frontend: Vue.js
- Backend: Spring Boot
- Database: MySQL
- Framework: Spring Boot 2.7.x (integrated with Spring MVC and MyBatis)
- Security: Spring Security + JWT (authentication and authorization)
- Database: MySQL 8.0.x
- Cache: Redis 6.2+
- API Documentation: Swagger / Knife4j
- Apache HttpClient
- Apache POI
- Alibaba Cloud OSS
- WebSocket
- Spring Task
- Vue.js
- ElementUI
- WeChat Mini Program
- Pinia
- Axios
- Vite
- Nginx
- Docker
- Kubernetes
- ELK Stack
The SkyTakeout system mainly consists of:
- Admin Management System
- Customer WeChat Mini Program
- Courier/Rider Mini Program
- Query employees
- Add employees
- Edit employee information
- Enable/Disable employees
- Permission management
- Dish category management
- Set meal category management
- Dish CRUD
- Flavor management
- Availability management
- Combo meal management
- Pricing management
- Availability management
- Order query
- Cancel orders
- Delivery management
- Complete orders
- Export reports
- Revenue reports
- User growth analysis
- Order trend analysis
WebSocket-based order reminder system.
Quick login through WeChat authorization.
- Browse dishes by category
- View specifications
- Favorite dishes
- Add to cart
- Add items
- Update quantities
- Remove items
- Clear cart
- WeChat Pay integration
- Checkout
- Refund support
- Address management
- Order history
- Account settings
Users can remind merchants to process delayed orders.
- Accept orders
- Deliver orders
- Route planning
Automatically dispatches orders to nearby riders.
- Admin Web Application
- Customer Mini Program
- Rider Mini Program
- Nginx reverse proxy
- Load balancing
- Static resource hosting
- Controller Layer
- Service Layer
- Mapper Layer
- MySQL
- Redis
Database name:
sky_take_outCore tables:
| Table Name | Description |
|---|---|
| employee | Employee information |
| category | Category information |
| dish | Dish information |
| dish_flavor | Dish flavor information |
| setmeal | Set meal information |
| setmeal_dish | Set meal-dish relationship |
| user | User information |
| address_book | Address information |
| shopping_cart | Shopping cart |
| orders | Order information |
| order_detail | Order details |
- JDK 11+
- MySQL 8.0+
- Redis 6.0+
- Node.js 16+
- Maven 3.6+
Modify application-dev.yml:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://your-host:port/sky_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: your_username
password: your_passwordspring:
redis:
host: localhost
port: 6379
password:
database: 0cd sky-server
mvn spring-boot:runAPI Documentation:
http://localhost:8080/doc.html
Run:
nginx.exe- Frontend-backend separated architecture
- WeChat Mini Program integration
- Real-time WebSocket communication
- Smart order dispatching
- Redis caching optimization
- JWT authentication
- Scheduled task processing
- Redis must be running before backend startup.
- Start backend services before frontend services.
- Disable Swagger in production.
- Secure database and Redis credentials.
- Some features rely on third-party APIs.
git checkout -b feature/xxx
git commit -m "Add xxx feature"
git push origin feature/xxxThen create a Pull Request.
- Maintainer: yucheng
- Email: zyucheng2004@gmail.com
- Issue Feedback: Submit issues through GitHub Issues.