Update Readme

This commit is contained in:
phattt2901 2025-05-02 18:45:38 +07:00
parent a77e811d24
commit 1e265639a3

140
Readme.md
View File

@ -1,20 +1,142 @@
# 1. Linting
# 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 ký profile**: Thu thập thông tin cá nhân và sở thích
- **Matching**: Thuật toán ghép cặp dựa trên sự tương thích
- **Xem và lựa chọn kết quả**: Người dùng có thể xem và 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 và phân tích**: Bảng điều khiển admin với các báo cáo và thống kê 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 mô 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ử lý 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 và 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. Unit tests
2. **Chạy unit tests**
```
go test ./...
```
# 3. Build binary (kiểm tra compiles)
3. **Build binary**
```
go build -o matching-app cmd/api/main.go
```
# 4. Build Docker image và khởi động môi trường
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
```
# 5. Kiểm tra logs để xem app đã khởi động thành công
2. **Kiểm tra logs**
```
docker-compose logs -f app
```
# 6. Healthcheck endpoint
curl http://localhost:8080/healthz # hoặc GET /campaign/config
# 7. Khi cần tắt
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.