appointment_system/backend/README.md
2025-12-11 22:50:18 +08:00

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