กลับหน้า Coding

Project

KijHub

ระบบ Social + Community platform ที่ให้นักเรียนรายงานปัญหาชุมชนผ่านแผนที่ ให้ครูสร้างและดูแลกิจกรรมโรงเรียน พร้อมระบบลงทะเบียน ส่งงาน ตรวจงาน และแชทเรียลไทม์ระหว่างนักเรียนกับครูผ่าน WebSocket ออกแบบเป็น microservices แยกตาม domain สื่อสารกันแบบ async ผ่าน Event Bus

KijHub
เลื่อนลง
01

Microservices + Event-Driven

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

KijHub — แชทเรียลไทม์ผ่าน WebSocket
02

แชทเรียลไทม์ผ่าน WebSocket

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

KijHub — แผนที่ปัญหาชุมชน
03

แผนที่ปัญหาชุมชน

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

04

กิจกรรมโรงเรียนครบวงจร

ครูสร้างกิจกรรมพร้อมปักหมุดแผนที่และครูผู้ดูแล นักเรียนลงทะเบียน ส่งงานแนบไฟล์ และถอนการลงทะเบียนได้ ครูตรวจงานให้คะแนนผ่าน/ไม่ผ่านพร้อมส่ง feedback อัตโนมัติผ่านแชท

Steps

ขั้นตอนการส่งงาน

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

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

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

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

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

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

สถานะและผลย้อนดูได้

4. สถานะและผลย้อนดูได้

Flow

Flow การทำงาน

Flow การทำงานของ KijHub

Architecture

สถาปัตยกรรมระบบ

แผนผังสถาปัตยกรรมของ KijHub

Structure

โครงสร้างโปรเจกต์

Socialdevapp/
├── app/# Flutter — Student / Teacher / Organization dashboards
├── server/login/# Auth Service :8080 — JWT, Google OAuth
├── server/image/# Image Service :8081 — MinIO upload
├── server/problem/# Problem Service :8083 — PostGIS geo query
├── server/activity/# Activity Service :8084 — ลงทะเบียน, ตรวจงาน
├── server/chat/# Chat Service :8085 — WebSocket + REST fallback
├── server/notification/# Notification Service :8086 — FCM/Email
├── server/analytics/# Analytics Service :8087 — event_log, /stats
└── server/shared/# Shared event library (Kafka)
app/

แอป Flutter ฝั่ง Student / Teacher / Organization ใช้ Provider จัดการ state

google_maps_flutterweb_socket_channelflutter_appauth
server/login/

Auth Service — สมัคร/ล็อกอิน, Google OAuth ผ่าน Auth0, ออก JWT

JWTbcryptpublishes user.registered
server/image/

Image Service — อัปโหลดรูปทุกประเภท พร้อม presigned URL จาก MinIO

MinIOmultipart upload
server/activity/

Activity Service — กิจกรรมโรงเรียน ลงทะเบียน ส่งงาน ตรวจงาน

register/unregistersubmit/review
server/chat/

Chat Service — WebSocket Hub เรียลไทม์ พร้อม REST fallback และห้องแชทอัตโนมัติ

fasthttp/websocketauto-create room
server/notification/

Notification Service — consume events ส่ง push (FCM) และอีเมล

FCMSMTP
server/analytics/

Analytics Service — consume events ทั้งหมดเก็บสถิติและ dashboard

event_logevent_counts
ดูโค้ดบน GitHub

Stack

FlutterGo FiberKongPostgreSQLMinIOKafkaFCMREST APIKubernetes