152 lines
4.3 KiB
Markdown
152 lines
4.3 KiB
Markdown
# Overseas Appointment Backend API
|
|
|
|
Backend API for the overseas appointment mini program system.
|
|
|
|
## Tech Stack
|
|
|
|
- **Runtime**: Node.js 18+
|
|
- **Framework**: Express.js 4.x
|
|
- **Database**: MySQL 8.0
|
|
- **Cache**: Redis 7.0
|
|
- **ORM**: Sequelize 6.x
|
|
- **Authentication**: JWT
|
|
- **Testing**: Jest + Supertest + fast-check
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
backend/
|
|
├── src/
|
|
│ ├── config/ # Configuration files
|
|
│ │ ├── database.js # Sequelize database configuration
|
|
│ │ ├── env.js # Environment variables
|
|
│ │ └── logger.js # Winston logger configuration
|
|
│ ├── middleware/ # Express middleware
|
|
│ ├── models/ # Database models (Sequelize)
|
|
│ │ ├── index.js # Model associations and exports
|
|
│ │ ├── User.js # User model
|
|
│ │ ├── Category.js # Service category model
|
|
│ │ ├── Service.js # Service model
|
|
│ │ ├── Appointment.js # Appointment model
|
|
│ │ ├── Invitation.js # Invitation model
|
|
│ │ ├── Withdrawal.js # Withdrawal model
|
|
│ │ ├── Notification.js # Notification model
|
|
│ │ └── Admin.js # Admin user model
|
|
│ ├── migrations/ # Database migrations
|
|
│ ├── seeders/ # Database seed files
|
|
│ ├── routes/ # API routes
|
|
│ ├── controllers/ # Route controllers
|
|
│ ├── services/ # Business logic
|
|
│ ├── utils/ # Utility functions
|
|
│ ├── tests/ # Test files
|
|
│ ├── app.js # Express app setup
|
|
│ └── server.js # Server entry point
|
|
├── logs/ # Application logs
|
|
├── uploads/ # Uploaded files
|
|
├── .env # Environment variables
|
|
├── .env.example # Environment variables template
|
|
├── package.json # Dependencies
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18 or higher
|
|
- MySQL 8.0
|
|
- Redis 7.0
|
|
|
|
### Installation
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Copy environment variables:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
3. Configure your `.env` file with your database and Redis credentials
|
|
|
|
4. Create the database:
|
|
```bash
|
|
mysql -u root -p
|
|
CREATE DATABASE overseas_appointment;
|
|
```
|
|
|
|
5. Start the development server:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The server will start on `http://localhost:3000`
|
|
|
|
## Database Models
|
|
|
|
The system includes the following database models:
|
|
|
|
- **User**: User accounts with WeChat authentication, language preferences, and invitation codes
|
|
- **Category**: Service categories (airport, train, hotel, etc.) with multi-language support
|
|
- **Service**: Appointment services with multi-language titles and descriptions
|
|
- **Appointment**: User appointment bookings with status tracking
|
|
- **Invitation**: Invitation relationships and reward tracking
|
|
- **Withdrawal**: User withdrawal requests with admin review workflow
|
|
- **Notification**: System notifications with multi-language content
|
|
- **Admin**: Admin users for the management portal
|
|
|
|
All models support:
|
|
- UUID primary keys
|
|
- Automatic timestamps (created_at, updated_at)
|
|
- Multi-language fields (Chinese, English, Portuguese) where applicable
|
|
- Proper foreign key relationships and indexes
|
|
|
|
## Available Scripts
|
|
|
|
- `npm start` - Start production server
|
|
- `npm run dev` - Start development server with auto-reload
|
|
- `npm test` - Run tests
|
|
- `npm run test:watch` - Run tests in watch mode
|
|
- `npm run lint` - Check code style
|
|
- `npm run lint:fix` - Fix code style issues
|
|
- `npm run format` - Format code with Prettier
|
|
|
|
## API Endpoints
|
|
|
|
### Health Check
|
|
- `GET /health` - Check server health status
|
|
|
|
### API Documentation
|
|
API documentation will be available at `/api-docs` once implemented.
|
|
|
|
## Testing
|
|
|
|
Run the test suite:
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
Run tests with coverage:
|
|
```bash
|
|
npm test -- --coverage
|
|
```
|
|
|
|
## Security Features
|
|
|
|
- **Helmet**: Security headers
|
|
- **CORS**: Cross-origin resource sharing
|
|
- **Rate Limiting**: 100 requests per minute per IP
|
|
- **Input Validation**: Joi validation
|
|
- **JWT Authentication**: Secure token-based auth
|
|
- **Request Logging**: Winston logger
|
|
|
|
## Environment Variables
|
|
|
|
See `.env.example` for all available configuration options.
|
|
|
|
## License
|
|
|
|
ISC
|