matching_app/Readme.md
2025-05-02 18:45:38 +07:00

142 lines
4.2 KiB
Markdown

# Matching App (v2)
[![Go Version](https://img.shields.io/badge/Go-1.20+-00ADD8?style=flat&logo=go)](https://golang.org)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-14+-336791?style=flat&logo=postgresql)](https://postgresql.org)
[![Docker](https://img.shields.io/badge/Docker-Powered-2496ED?style=flat&logo=docker)](https://www.docker.com/)
[![HTMX](https://img.shields.io/badge/HTMX-UI-3366FF?style=flat&logo=html5)](https://htmx.org/)
Hệ thống kết nối các cá nhân dựa trên thuật toán matching thông minh, được thiết kế theo nguyên tắc Domain-Driven Design với trải nghiệm người dùng là ưu tiên hàng đầu.
## Tổng quan dự án
Matching App là một ứng dụng kết nối giữa các cá nhân dựa trên sở thích, tính cách, và các yếu tố tương thích khác. Hệ thống hỗ trợ quy mô lớn với 20,000+ người tham gia và 5,000+ lượt matching.
### Đặc điểm nổi bật
- Thuật toán matching thông minh dựa trên nhiều yếu tố
- Thiết kế hướng người dùng với giao diện đơn giản, trực quan
- Hỗ trợ tính năng quà tặng và rút thưởng ngẫu nhiên
- Hiệu suất cao, xử lý đồng thời 100+ request/s với độ trễ API <500ms
### Tính năng chính
- **Đăng profile**: Thu thập thông tin nhân sở thích
- **Matching**: Thuật toán ghép cặp dựa trên sự tương thích
- **Xem lựa chọn kết quả**: Người dùng thể xem lựa chọn từ 3 kết quả matching tiềm năng
- **Hệ thống quà tặng**: Phân bổ quà tặng ngẫu nhiên cho người tham gia
- **Báo cáo phân tích**: Bảng điều khiển admin với các báo cáo thống chi tiết
## Công nghệ sử dụng
- **Backend**: Go (1.20+)
- **Database**: PostgreSQL
- **Frontend**: HTMX + Vanilla JavaScript
- **Containerization**: Docker + Docker Compose
- **CI/CD**: DroneCI
- **Storage**: S3 (cho lưu trữ ảnh người dùng)
## Kiến trúc hệ thống
Dự án được xây dựng theo hình Domain-Driven Design với các thành phần chính:
- `Resource`: Các Aggregate DDD (Profile, MatchOutcome, Gift, GiftAllocation)
- `Transaction`: Các Saga điều phối luồng nghiệp vụ phức tạp
- `Adapter`: Xử giao tiếp với các hệ thống bên ngoài
- `Helper`: Các thư viện, tiện ích dùng chung
- `UIUX`: Lớp giao diện người dùng
Xem chi tiết kiến trúc tại [docs/architecture.md](docs/architecture.md).
## Bắt đầu sử dụng
### Yêu cầu hệ thống
- Go 1.20+
- Docker Docker Compose
- PostgreSQL 14+ (hoặc sử dụng Docker)
- Make (cho các lệnh tiện ích)
### Cài đặt môi trường phát triển
1. Clone repository:
```
git clone [repo-url]
cd matchingv2
```
2. Cài đặt biến môi trường:
```
cp .env.example .env
```
(Chỉnh sửa file .env theo cấu hình mong muốn)
3. Khởi động môi trường phát triển:
```
make dev
```
### Các lệnh hữu ích
#### Phát triển
1. **Linting**
```
golangci-lint run
```
2. **Chạy unit tests**
```
go test ./...
```
3. **Build binary**
```
go build -o matching-app cmd/api/main.go
```
4. **Khởi động môi trường với hot-reload**
```
air
```
#### Docker
1. **Build và khởi động Docker**
```
docker-compose up --build -d
```
2. **Kiểm tra logs**
```
docker-compose logs -f app
```
3. **Dừng môi trường Docker**
```
docker-compose down
```
### Kiểm tra Health-check
```
curl http://localhost:8080/healthz
```
Hoặc truy cập API cấu hình:
```
curl http://localhost:8080/campaign/config
```
## Tài liệu dự án
- [Kiến trúc hệ thống](docs/architecture.md)
- [Cấu trúc dữ liệu](docs/schema.md)
- [Đặc tả kỹ thuật](docs/spec.md)
- [Adapter bên ngoài](docs/adapter.md)
- [Queries cơ sở dữ liệu](docs/query.md)
- [UX/UI](docs/ux.md)
- [Quy trình làm việc](docs/workflow_guideline.md)
- [Roadmap](docs/roadmap.md)
- [Changelog](docs/changelog.md)
## Liên hệ
Để biết thêm thông tin hoặc báo cáo vấn đề, vui lòng liên hệ với nhóm phát triển.