Project
แพลตฟอร์มโรงเรียนสำหรับนักเรียน ครู และผู้ดูแลระบบ ครอบคลุมเช็คชื่อ เกรด ตารางเรียน คะแนนความประพฤติ จุดเด่นคือระบบแจ้งเหตุฉุกเฉิน (SOS ติดตามพิกัดเรียลไทม์ ตรวจจับแผ่นดินไหวอัตโนมัติ) และ Google Workspace SSO สำหรับโรงเรียนหลายแห่ง ออกแบบเป็น microservices แยกตาม domain


ครูกด SOS แบบ slide-to-confirm ระบบส่ง Push แจ้งเตือนนักเรียนทุกคนผ่าน Kafka ทันที พร้อมสตรีมพิกัด GPS ทุก 10 วินาที ตรวจสอบระยะด้วย Ray-casting Geofence และแสดงตำแหน่งเรียลไทม์บนแผนที่ (Leaflet) ฝั่งแอดมินผ่าน WebSocket นอกจากนี้ยังตรวจจับแผ่นดินไหวอัตโนมัติจาก EMSC feed แล้วคำนวณระยะห่างจากโรงเรียนเพื่อแจ้งเตือนตามเกณฑ์ความรุนแรง

ออกแบบระบบล็อกอินด้วย Google Sign-In สำหรับโรงเรียนที่ใช้ Google Workspace for Education ตรวจสอบ ID token และ hd claim เพื่อระบุโรงเรียนอัตโนมัติ ผูกบัญชีด้วย Google sub ครั้งแรกผ่านการยืนยันรหัสนักเรียนและวันเกิด แล้วออก JWT เดิมของระบบต่อโดยไม่ต้องแก้ไข service อื่น
แยกเป็น 12+ microservices ตาม domain (login, personnel, schedule, attendance, behavior, grades, news, upload) เขียนด้วย Go Fiber/Gin สื่อสารกันแบบ sync ผ่าน REST/gRPC และ async ผ่าน Kafka (KRaft) ทุก request เข้าผ่าน Kong API Gateway จุดเดียว ใช้แพทเทิร์น database-per-service กับ PostgreSQL

ครบทั้งเช็คชื่อ/ลา คะแนนความประพฤติ ตารางเรียน เกรดพร้อมคำนวณ GPA ถ่วงน้ำหนัก ข่าวประชาสัมพันธ์ และแผงควบคุมผู้ดูแลระบบ (Next.js + React) จัดการบุคลากรแบบ batch อัปโหลด Excel พร้อม service แยกต่างหากด้วย Python + Google OR-Tools สำหรับจัดเส้นทางเยี่ยมบ้านนักเรียน
ภาพหน้าจอจริงของแอป

ตารางเรียน

ส่งใบลา

จัดการบุคลากร (เว็บแอดมิน)

แผนที่ฉุกเฉินเรียลไทม์ (เว็บแอดมิน)
Flow การทำงานทั้งหมด 11 ระบบ
สถาปัตยกรรมระบบ
โครงสร้างโปรเจกต์
app/แอป Flutter สำหรับนักเรียนและครู เชื่อม Firebase Messaging และ Google Sign-In
server/login/Auth Service — JWT, สมัคร/ล็อกอิน, ตรวจเวอร์ชันแอป, ลืมรหัสผ่านผ่าน Kafka
server/personnel/จัดการนักเรียน/ครู/ห้องเรียน/โรงเรียน
server/manageclassschedule/ตารางเรียน วิชา หน่วยกิต และภาคเรียน
server/attendance_api/เช็คชื่อและระบบยื่นใบลา
server/behavior/บันทึกและให้คะแนนความประพฤติ
server/grades_api/บันทึกเกรด คำนวณ GPA ถ่วงน้ำหนัก ตั้งเวลาประกาศผล
server/emergency_api/SOS, สตรีม GPS, Geofence, ตรวจจับแผ่นดินไหวอัตโนมัติ
server/upload_api/อัปโหลดไฟล์เข้า MinIO
server/news/ข่าวและประกาศของโรงเรียน
server/notifier/ + mailer/Kafka consumer ส่ง Push (FCM) และอีเมล (Gmail SMTP)
server/ortools_service/จัดเส้นทางเยี่ยมบ้านนักเรียนด้วย Google OR-Tools
web/แผงควบคุมผู้ดูแลระบบ จัดการบุคลากรแบบ batch อัปโหลด Excel