80 lines
3.1 KiB
Markdown
80 lines
3.1 KiB
Markdown
# Giới thiệu chung
|
|
|
|
## Tổng quan
|
|
- ULFlow Golang Starter Kit là một khung phát triển backend theo mô hình Domain-Driven Design (DDD)
|
|
- Được thiết kế để tạo ra các ứng dụng có thể bảo trì và mở rộng dễ dàng
|
|
- Mục tiêu: Cung cấp một cấu trúc dự án chuẩn, các thành phần cơ bản và công cụ phát triển hiệu quả
|
|
|
|
## Nguyên tắc thiết kế
|
|
|
|
- **User-Centric**: Ưu tiên trải nghiệm người dùng, giảm thiểu sự phức tạp
|
|
- **Data-Oriented Programming (DOP)**: Thiết kế xoay quanh luồng dữ liệu và các biến đổi dữ liệu
|
|
- **Domain-Driven Design (DDD)**: Áp dụng các khái niệm cốt lõi (Bounded Context, Aggregates, Domain Events)
|
|
|
|
## Tầm nhìn
|
|
- Tạo ra nền tảng phát triển linh hoạt, dễ mở rộng cho các dự án backend Golang
|
|
- Tích hợp các công nghệ hiện đại, best practices, và quy trình phát triển chuẩn
|
|
- Cung cấp môi trường phát triển thống nhất cho team
|
|
|
|
## Hướng dẫn cài đặt
|
|
|
|
### Yêu cầu hệ thống
|
|
- Go 1.23
|
|
- Docker và Docker Compose
|
|
- Git
|
|
|
|
### Cài đặt
|
|
1. Clone repository
|
|
```bash
|
|
git clone [repo-url] my-project
|
|
cd my-project
|
|
```
|
|
|
|
2. Thiết lập môi trường
|
|
```bash
|
|
cp .env.example .env
|
|
# Chỉnh sửa file .env theo nhu cầu
|
|
```
|
|
|
|
3. Khởi động dev server
|
|
```bash
|
|
make dev
|
|
```
|
|
|
|
## Cấu trúc thư mục
|
|
|
|
Dự án được tổ chức theo cấu trúc DDD chuẩn, với các thành phần chính:
|
|
|
|
```
|
|
│── .gitea/ # Gitea workflows & hooks
|
|
│── cmd/ # Điểm vào của ứng dụng
|
|
│ └── app/ # Main application
|
|
│── internal/ # Mã nguồn chính của ứng dụng
|
|
│ │── domain/ # Các đối tượng nghiệp vụ cốt lõi
|
|
│ │ │── resource/ # Resource (Aggregates/Entities)
|
|
│ │ └── transaction/ # Transaction (Use Cases)
|
|
│ │── adapter/ # Giao tiếp với bên ngoài
|
|
│ │ │── persistence/ # Repository implementations
|
|
│ │ └── externalapi/ # External API clients
|
|
│ │── helper/ # Tiện ích chung
|
|
│ │ │── config/ # Configuration
|
|
│ │ │── logger/ # Logging
|
|
│ │ │── security/ # Authentication/Authorization
|
|
│ │ └── validation/ # Input validation
|
|
│ └── transport/ # Giao tiếp với client
|
|
│ └── http/ # HTTP handlers & middleware
|
|
│── docs/ # Tài liệu
|
|
│── templates/ # Các file mẫu
|
|
│── configs/ # File cấu hình
|
|
│── migrations/ # Database migrations
|
|
│── api/ # API definitions (OpenAPI/Swagger)
|
|
│── scripts/ # Các tiện ích
|
|
│── test/ # End-to-end tests
|
|
└── tools/ # Development tools
|
|
|
|
## Hỗ trợ và đóng góp
|
|
|
|
- Báo lỗi và feature request: Tạo issue trên repository
|
|
- Đóng góp: Tạo pull request theo quy trình được mô tả trong workflow.md
|
|
- Liên hệ: [email/contact-info]
|