Loại bỏ các file local không cần thiết lên repo
Matching App (v2)
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ạpAdapter: Xử lý giao tiếp với các hệ thống bên ngoàiHelper: Các thư viện, tiện ích dùng chungUIUX: Lớp giao diện người dùng
Xem chi tiết kiến trúc tại 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
-
Clone repository:
git clone [repo-url] cd matchingv2 -
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)
-
Khởi động môi trường phát triển:
make dev
Các lệnh hữu ích
Phát triển
-
Linting
golangci-lint run -
Chạy unit tests
go test ./... -
Build binary
go build -o matching-app cmd/api/main.go -
Khởi động môi trường với hot-reload
air
Docker
-
Build và khởi động Docker
docker-compose up --build -d -
Kiểm tra logs
docker-compose logs -f app -
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
- Cấu trúc dữ liệu
- Đặc tả kỹ thuật
- Adapter bên ngoài
- Queries cơ sở dữ liệu
- UX/UI
- Quy trình làm việc
- Roadmap
- Changelog
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.