ทำมาสี่รุ่นติด เขียนใหม่ทุกปี และไม่มีสักครั้งที่เริ่มจากผมเป็นคนเสนอ

ผมทำระบบต้อนรับนักศึกษาใหม่ของมหาวิทยาลัยขอนแก่นมา สี่ครั้ง — ปีละครั้งตั้งแต่รุ่น KKU60 ถึง KKU63 และไม่มีสักครั้งที่เริ่มจากผมเป็นคนเสนอตัวเอง
ครั้งแรกมาจากรุ่นพี่ที่รู้จักกันตอนเป็นอนุกรรมการองค์การนักศึกษา ครั้งต่อมาเป็นน้องที่เจอกันในค่าย แล้ววันหนึ่งน้องคนนั้นเข้าองค์การนักศึกษาเองและกลับมาชวน หลังจากนั้นมันก็กลายเป็นสิ่งที่ผมทำทุกปีไปโดยปริยาย
ทั้งสี่ครั้งเริ่มจากมีคนมาชวน ไม่ใช่จากผมเดินไปเสนอ
เหตุผลที่รับทุกครั้งธรรมดากว่าที่คิด — ตอนเข้ามาเรียนผมเห็นว่าเว็บและระบบของมหาวิทยาลัยยัง ล้าสมัย และอยากเป็นแรงหนึ่งที่ช่วยขับเคลื่อนให้ดีขึ้น งานอาสาระบบรับน้องคือจุดที่เริ่มได้ใกล้ตัวที่สุด
แต่ละปีเป็น repository ใหม่ ไม่ใช่ของปีก่อนที่เปลี่ยนแค่เลข commit แรกของทุกปีตกอยู่ราวเดือนพฤษภาคม–มิถุนายน เพราะกำหนดส่งคือวันรับน้อง และวันนั้นเลื่อนไม่ได้
| Intake | Files | Lines | Commits |
|---|---|---|---|
| KKU60 · 2023 | 80 | 7,092 | 7 |
| KKU61 · 2024 | 76 | 5,980 | 40 |
| KKU62 · 2025 | 153 | 14,822 | 223 |
| KKU63 · 2026 | 934 | 124,012 | 364 |
ที่กระโดดจาก 2025 ไป 2026 ไม่ใช่เพราะอยากทำให้ใหญ่ แต่เป็นปีที่แอปเลิกเป็นฟอร์มลงทะเบียนที่แปะฟีเจอร์เพิ่ม แล้วกลายเป็นหลายฟีเจอร์ที่บังเอิญใช้ล็อกอินเดียวกัน
มีแค่สองอย่างที่อยู่ครบทั้งสี่ปี — Next.js กับ Firebase นอกนั้นถูกเปลี่ยนอย่างน้อยหนึ่งครั้ง
2023 src/{components,hooks,redux,services,styles}
2024 src/features/{collect-points,events-registration} + src/shared
2025 src/modules/{freshmen,participant,staff} + src/shared
2026 src/app/[locale] + src/app/api + src/modules/core/{...16}เป็นการเปลี่ยนชื่อความคิดเดิมสามรอบ แต่ละรอบผิดน้อยลงหน่อย features/ ดีกว่า components/ แบบแบน ๆ และ modules/ ดีกว่า features/ ตอนที่โมดูลหนึ่งเริ่มต้องมี model, schema และ hook ของตัวเอง ไม่ใช่แค่หน้าจอ
ตัวปัจจุบันให้นักศึกษาล็อกอินผ่านระบบบัญชีของมหาวิทยาลัยเลย แทนที่จะให้ตั้งรหัสผ่านใหม่อีกชุด:
/api/auth/kku/login → ส่งต่อไปหน้าล็อกอินของมหาวิทยาลัย
/api/auth/kku/callback → กลับมาแล้วออก session
/api/auth/session → ตรวจว่าใครล็อกอินอยู่ ฝั่งเซิร์ฟเวอร์
/api/recaptcha/verify → กันบอทตอนลงทะเบียนข้างใต้นั้นคือฟีเจอร์ที่ทีมงานขอมา แยกกันเป็นโมดูลละอย่าง ทั้ง e-ticket เช็กอิน สะสมแต้ม ชมรม แผนที่ในมหาลัย โฟโต้บูธ แบบประเมิน และส่วนผู้สนับสนุน
นักศึกษาส่วนใหญ่เปิดจากมือถือ ไม่ใช่โน้ตบุ๊ก เลย์เอาต์บนมือถือจึงเป็นตัวที่ออกแบบก่อนและทดสอบหนักที่สุด และปี 2025 คือปีที่เรื่องนี้เลิกเป็นของแถม
ส่วนที่ยากไม่เคยเป็นโจทย์ที่ ยาก แต่เป็นการกลับไปอ่านโค้ด — ส่วนใหญ่คือโค้ดของตัวเองเมื่อปีก่อน — แล้วพบว่าคอนเวนชันที่เขียนไว้ในเอกสารไม่ได้ถูกใช้จริง นั่นคือเหตุผลส่วนใหญ่ที่ทำให้ทุกวันนี้ผมให้ค่ากับเรื่องน่าเบื่ออย่างการตั้งชื่อ การ รีวิวโค้ด และการเขียนบันทึกว่า ทำไม มากกว่า ทำอะไร
และเป็นเหตุผลที่ปี 2026 เป็นปีแรกที่มีเทสต์ และมีเอกสารอธิบายโครงโค้ดวางไว้ข้าง ๆ โค้ดในชื่อ AGENTS.md
รายละเอียดของแต่ละปีอยู่ใน หน้าโปรเจกต์ ครับ