Project
ระบบ Social + Community platform ที่ให้นักเรียนรายงานปัญหาชุมชนผ่านแผนที่ ให้ครูสร้างและดูแลกิจกรรมโรงเรียน พร้อมระบบลงทะเบียน ส่งงาน ตรวจงาน และแชทเรียลไทม์ระหว่างนักเรียนกับครูผ่าน WebSocket ออกแบบเป็น microservices แยกตาม domain สื่อสารกันแบบ async ผ่าน Event Bus
แยกบริการเป็น 7 microservices ตาม domain (Auth, Image, Problem, Activity, Chat, Notification, Analytics) เขียนด้วย Go Fiber v3 สื่อสารกันแบบ async ผ่าน Event Bus (Redpanda/Kafka) สำหรับงานที่ไม่ต้องรอผลลัพธ์ทันที เช่น การแจ้งเตือนและ analytics

Chat Service เปิด WebSocket สำหรับข้อความเรียลไทม์ พร้อม REST fallback เมื่อยังไม่ connected รองรับสร้างห้องแชทอัตโนมัติเมื่อนักเรียนทักครู ส่งรูปภาพในแชท และ auto-reconnect ทุก 3 วินาที

Problem Service ใช้ PostgreSQL + PostGIS สำหรับ geo query รายงานปัญหาชุมชนแสดงบน Google Maps ผ่าน google_maps_flutter พร้อมแยกหมวดหมู่ ปัญหาน้ำท่วม ขยะ จราจร และโครงสร้างพื้นฐาน
ครูสร้างกิจกรรมพร้อมปักหมุดแผนที่และครูผู้ดูแล นักเรียนลงทะเบียน ส่งงานแนบไฟล์ และถอนการลงทะเบียนได้ ครูตรวจงานให้คะแนนผ่าน/ไม่ผ่านพร้อมส่ง feedback อัตโนมัติผ่านแชท
ขั้นตอนการส่งงาน

1. ลงทะเบียนกิจกรรม

2. ส่งงานแนบไฟล์

3. ครู/หน่วยงานตรวจงาน

4. สถานะและผลย้อนดูได้
Flow การทำงาน
สถาปัตยกรรมระบบ
โครงสร้างโปรเจกต์
app/แอป Flutter ฝั่ง Student / Teacher / Organization ใช้ Provider จัดการ state
server/login/Auth Service — สมัคร/ล็อกอิน, Google OAuth ผ่าน Auth0, ออก JWT
server/image/Image Service — อัปโหลดรูปทุกประเภท พร้อม presigned URL จาก MinIO
server/activity/Activity Service — กิจกรรมโรงเรียน ลงทะเบียน ส่งงาน ตรวจงาน
server/chat/Chat Service — WebSocket Hub เรียลไทม์ พร้อม REST fallback และห้องแชทอัตโนมัติ
server/notification/Notification Service — consume events ส่ง push (FCM) และอีเมล
server/analytics/Analytics Service — consume events ทั้งหมดเก็บสถิติและ dashboard