# 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 ในภายหลัง