81 lines
4.0 KiB
Markdown

# MONOREPO STARTER TEMPLATE
## ภาพรวม
โปรเจกต์นี้เป็น Monorepo แบบ Full-Stack ที่มีโครงสร้างพร้อมใช้งานสำหรับการพัฒนาและทดสอบ:
1. **Backend (Django/DRF):** โครงสร้าง Modular Monolith พร้อมระบบ Authentication ด้วย Djoser/JWT รวมถึง Stateless โดยสมบูรณ์ เนื่องจาก Session/Cache ถูกย้ายไปเก็บที่ Redis
2. **ฐานข้อมูล (HA):** CockroachDB Cluster 3 Node (เข้ากันได้กับ PostgreSQL)
3. **Frontend (Web):** React + Vite + Tailwind CSS / DaisyUI และ Mobile ผ่าน Expo
4. **Automation:** Docker Compose พร้อมตั้งค่า Database อัตโนมัติเมื่อเริ่มต้น
5. **Caching/Broker:** Redis สำหรับการเก็บ Session/Cache และใช้เป็น Message Broker ให้ Celery
6. **Async Processing:** Celery Worker สำหรับจัดการ Asynchronous Tasks (งานเบื้องหลัง เช่น การส่งอีเมล, การสร้างรายงาน)
## การเริ่มต้นใช้งาน (Run Local)
1. **Clone the Repository:**
```bash
git clone https://gitea.softwarecraft.tech/gitea/monorepo-starter-template.git
cd cremation-monorepo
# ลบ History ของ Template เก่าทิ้งไป รองรับการเชื่อมต่อไปยัง Repository ใหม่
rm -rf .git
```
2. **รัน Infrastructure & Backend:**
ไปที่โฟลเดอร์ infra และสตาร์ทบริการทั้งหมด คำสั่งนี้จะ build backend และตั้งค่า CockroachDB Cluster อัตโนมัติ
```bash
cd infra
docker compose up --build -d
```
3. **เข้าถึง Admin UI:**
ตรวจสอบว่า Backend และฐานข้อมูลพร้อมใช้งาน
- Django Admin: http://localhost:8000/admin/
- CockroachDB Status: http://localhost:8080/
Username: admin
Password: Str0ngp@ssword123-
- การเข้าถึงและตรวจสอบ API Endpoints อื่น ๆ:
http://localhost:8000/api/v1/auth/jwt/create/
http://localhost:8000/api/v1/auth/users/
http://localhost:8000/api/v1/auth/users/reset_password/
http://localhost:8000/api/v1/auth/users/me/
4. **รัน Frontend (Web):**
```bash
cd ../web
npm install
npm run dev
```
5. **รัน Frontend (Mobile):**
- ติดตั้ง Expo Go บนมือถือ
- สแกน QR Code โดยมือถือและเครื่อง Notebook ต้องอยู่ใน Lan วงเดียวกัน
```bash
cd ../mobile
npm expo start
```
## การหยุดชั่วคราวและรันต่อ
ถ้าต้องการหยุดพัฒนาโดยไม่ลบฐานข้อมูล สามารถรัน:
```bash
cd ../infra
docker compose down
```
เมื่อต้องการกลับมาพัฒนาต่อ ให้รัน:
```bash
cd ../infra
docker compose up -d
```
คำสั่ง docker compose down -v จะลบ Volume และฐานข้อมูลทั้งหมด ใช้เฉพาะตอนต้องการเริ่มต้นฐานข้อมูลใหม่
คำเตือนสำคัญ ตรวจสอบให้แน่ใจว่าได้กำหนด AUTH_USER_MODEL ถูกต้องใน settings.py ก่อนรัน migrate ครั้งแรกเสมอ เพื่อหลีกเลี่ยงปัญหา InconsistentMigrationHistory ในภายหลัง