Senior ProjectApril 1, 2026

ระบบการจัดการนิทรรศการและการมีส่วนร่วม

Exhibition Management System

ผู้จัดงานคุมทุกอย่างจากเว็บเดียว ผู้เข้าร่วมใช้งานผ่าน LINE โดยไม่ต้องติดตั้งแอปเพิ่ม ลงทะเบียน ติดตามสถิติแบบเรียลไทม์ ประเมินผลออนไลน์ และรับ E-Certificate อัตโนมัติ

ระบบการจัดการนิทรรศการและการมีส่วนร่วม
Overview
Type
Senior Project — B.Eng. Computer Engineering
Institution
KMITL, Chumphon Campus
Duration
Jul 2025 – Apr 2026
Team
2 developers
My Role
Full-stack Developer & Team Lead
Advisor
Athasart Narkthewan
Tech Stack
ReactTypeScriptFastifyNode.jsMySQLLINE Messaging APIDocker

ปัญหาและผลกระทบ

การจัดนิทรรศการและกิจกรรมในปัจจุบันยังพึ่งพากระบวนการแบบกระจัดกระจาย ผู้เข้าร่วมลงชื่อบนกระดาษหน้างาน ทำแบบประเมินผ่านลิงก์อีกช่องทาง แล้วรอรับเกียรติบัตรทางอีเมลอีกหลายวันให้หลัง ขณะที่ผู้จัดงานต้องนำข้อมูลจากทุกช่องทางมารวมด้วยมือ เพื่อตรวจสอบว่าใครเข้าร่วมครบตามเกณฑ์บ้าง

ฝั่งผู้จัดงานฝั่งผู้เข้าร่วม
ต้องรวมข้อมูลจากหลายระบบด้วยมือ เสี่ยงตกหล่นและซ้ำซ้อนไม่รู้ว่าตัวเองเข้าร่วมครบตามเกณฑ์แล้วหรือยัง
ไม่เห็นยอดผู้เข้าร่วมระหว่างงาน ปรับแผนหน้างานไม่ได้ต้องเดินไปถามทีมงาน หรือรอให้ประกาศผล
ออกเกียรติบัตรทีละใบ ใช้เวลานานและพิมพ์ชื่อผิดบ่อยได้รับเกียรติบัตรช้า บางครั้งชื่อสะกดผิดต้องขอแก้
ใช้กระดาษจำนวนมากทั้งใบเซ็นชื่อและเกียรติบัตรทำเอกสารหายแล้วขอใหม่ไม่ได้

ทางเลือกที่มีอยู่ไม่ตอบโจทย์

ระบบจัดการงานอีเวนต์ที่มีในตลาดมักอยู่ในรูปแบบแอปพลิเคชันที่ต้องติดตั้งและสมัครสมาชิกใหม่ ซึ่งเป็นอุปสรรคสำคัญกับงานที่มีผู้เข้าร่วมหลากหลายกลุ่มและใช้งานเพียงครั้งเดียว ผู้เข้าร่วมจำนวนมากไม่ยอมโหลดแอปเพื่อร่วมงานเพียงวันเดียว ทำให้ระบบถูกใช้งานไม่เต็มประสิทธิภาพ

ทางเลือกลงทะเบียนเช็กอินประเมินเกียรติบัตรไม่ต้องโหลดแอป
Google Form✓✗✓✗✓
Excel + กระดาษ✓✓✗✗✓
ระบบของเรา✓✓✓✓✓

ช่องว่างที่ไม่มีทางเลือกไหนเติมครบ คือ เช็กอิน + ประเมิน + เกียรติบัตร อยู่ในที่เดียว โดยที่ผู้เข้าร่วมไม่ต้องโหลดแอปเพิ่ม — ซึ่งเป็นจุดที่ระบบนี้เข้ามาตอบโจทย์

เราจะรวมทุกขั้นตอนของงานนิทรรศการ ตั้งแต่ลงทะเบียน เช็กอิน ประเมินผล จนถึงรับเกียรติบัตร ให้อยู่ในระบบเดียว โดยที่ผู้เข้าร่วมไม่ต้องติดตั้งแอปพลิเคชันใหม่เลยได้อย่างไร

การลงทะเบียนที่กระจายอยู่หลายช่องทาง ทั้งใบเซ็นชื่อ ไฟล์ Excel และแบบประเมินคนละลิงก์ เทียบกับระบบเดียวที่รวมทุกอย่างไว้ใน LINE

คำตอบที่เราเลือกคือการใช้ LINE Official Account ร่วมกับ Webhook เป็นช่องทางหลักสำหรับผู้เข้าร่วม เพราะเป็นแอปที่คนไทยใช้อยู่แล้วทุกวัน ทำให้ระบบไปอยู่ในที่ที่ผู้ใช้อยู่ แทนที่จะพาผู้ใช้มาหาระบบ

ข้อสังเกตจากงานจริง

จากงานนิทรรศการและกิจกรรมในคณะที่ผ่านมา การลงทะเบียนยังพึ่งใบเซ็นชื่อกระดาษหน้างาน แบบประเมินถูกแยกไปเป็นอีกหนึ่งลิงก์ และเกียรติบัตรต้องรอประมวลผลเป็นสัปดาห์กว่าจะถึงมือผู้เข้าร่วม ทำให้ข้อมูลกระจัดกระจาย ตรวจสอบย้อนหลังยาก และผู้จัดงานต้องมานั่งรวมข้อมูลด้วยมือ

ข้อสังเกตที่พบสิ่งที่ตัดสินใจทำ
ผู้เข้าร่วมไม่ยอมโหลดแอปเพื่องานวันเดียวใช้ LINE OA + LIFF แทนการทำแอปแยก
ผู้ใช้มี 3 บทบาทที่ต้องการคนละอย่างแยก Organizer / Unit / Visitor ตั้งแต่ระดับฐานข้อมูล
ผู้จัดงานต้องปรับแผนหน้างานได้Dashboard สถิติเรียลไทม์บนเว็บ
เกียรติบัตรพิมพ์ผิด/ออกช้าระบบออก PDF อัตโนมัติตามเกณฑ์ที่ตั้งไว้

เลือกเครื่องมือที่ใช้

  • Fastify แทน Express — overhead ต่ำกว่าและมี JSON Schema Validation ในตัว เหมาะกับ Webhook ที่ถี่จัดช่วงคนเข้างานพร้อมกัน
  • MySQL แทน NoSQL — เล่มออกแบบฐานข้อมูลเป็น 3 โดเมน (Exhibition / Unit / Survey) ที่เชื่อมโยงกันโดยมีตาราง exhibition เป็นศูนย์กลาง ข้อมูลจึงสัมพันธ์กันหลายชั้นและต้องรักษาความถูกต้องด้วย Transaction
  • TypeScript — กำหนด type ร่วมกันระหว่าง client และ backend ลดบั๊กจากรูปร่างข้อมูลที่เปลี่ยนไปมา
  • Docker — ล็อกสภาพแวดล้อมให้เหมือนกันทั้งเครื่อง dev และตอน deploy ลดปัญหา “เครื่องผมรันได้”

ผล benchmark ที่ทำให้เลือก Fastify: throughput สูงกว่า Express ราว 1.8 เท่า และอยู่ในกลุ่มหัวตารางเมื่อเทียบกับเฟรมเวิร์ก Node.js ตัวอื่น

Requests per second· req/sFastify 1.8× สูงกว่า Express
1 / 3
  • Requests per second (req/s) — higher is better

    • Fastify50,373
    • Hono45,102
    • H339,767
    • Koa38,917
    • Restify32,424
    • Hapi31,978
    • Express27,474

ข้อมูลเมื่อ 1 Oct 2026ที่มา:fastify.dev/benchmarkshigher is better

เป้าหมายและขอบเขต

เป้าหมายของโครงงาน

  1. รวมการจัดการนิทรรศการทั้งหมด — ข้อมูลงาน บูธกิจกรรม ข่าวสาร แบบประเมิน และเกียรติบัตร — ไว้ในระบบเดียว
  2. ให้ผู้เข้าร่วมลงทะเบียนและตรวจสอบสถานะการเข้าร่วมได้เองผ่าน LINE OA โดยไม่ต้องติดตั้งแอปเพิ่ม
  3. ให้ผู้ดูแลระบบและผู้จัดนิทรรศการจัดการข้อมูล (เพิ่ม/แก้ไข/ลบ) ได้จากหน้าเดียว
  4. สร้างแบบประเมินความพึงพอใจ พร้อมประมวลผลและสรุปคะแนนอัตโนมัติ
  5. ออกใบประกาศนียบัตรอิเล็กทรอนิกส์ให้ผู้ที่เข้าร่วมครบตามเกณฑ์โดยอัตโนมัติ

ขอบเขตงาน

  • ลงทะเบียน/เช็กอินผ่าน QR Code
  • ใช้งานผ่าน LINE Application (LIFF + Messaging API)
  • CRUD ข้อมูลนิทรรศการและบูธกิจกรรม
  • เผยแพร่ข่าวสารและแจ้งเตือนผ่าน LINE
  • สร้างแบบประเมิน + ประมวลผลสรุปคะแนน
  • ตรวจสอบสถานะการเข้าร่วมกิจกรรม
  • ออก E-Certificate เป็น PDF อัตโนมัติ

เกณฑ์วัดความสำเร็จ

ตั้งเกณฑ์ไว้ 5 ด้าน และวัดผลจริงทุกข้อ

  • ความถูกต้องของ API — ทดสอบทุก endpoint ด้วย Postman ตรวจ HTTP Status Code
  • ความสมบูรณ์ของข้อมูล — ตรวจโครงสร้าง JSON Response ว่าตรงตามที่ออกแบบ
  • ความครอบคลุมของ API — ทดสอบทั้ง 6 ระบบย่อย โดยระบบนิทรรศการ / บูธกิจกรรม / ข่าวสาร ต้องรองรับ CRUD ครบทั้ง 4 รูปแบบ
  • ส่วนติดต่อผู้ใช้ — UI Testing ทุกหน้าจอ ทำงานตามที่ออกแบบ
  • การใช้งานจริง — นำระบบไปใช้กับงานจริง บันทึกและประมวลผลข้อมูลได้ถูกต้อง

แผนงานและข้อจำกัด

แผนงาน ภาคเรียนที่ 1 (ก.ค.–พ.ย. 2568) ออกแบบ + พัฒนาระบบจัดการหลัก / ภาคเรืยนที่ 2 (ธ.ค. 2568–เม.ย. 2569) เชื่อม LINE, QR, แบบประเมิน, เกียรติบัตร

เฟสช่วงเวลาสิ่งที่ทำ
Research & Analysisก.ค.–ส.ค. 2568ศึกษาข้อมูล วิเคราะห์ความต้องการ
Designก.ย.–ต.ค. 2568ออกแบบ UI (Figma), ER Diagram, System Architecture
Developmentพ.ย. 2568–ก.พ. 2569พัฒนา Frontend/Backend, เชื่อม LINE OA
Testing & Deployมี.ค.–เม.ย. 2569UI Testing, Postman API Testing, นำเสนอผลงาน
  • ข้อจำกัดแพลตฟอร์ม: LINE OA บัญชีฟรีมีโควต้า push message จำกัด
  • ข้อสมมติ: ผู้เข้าร่วมมี LINE บนสมาร์ตโฟนและเชื่อมต่ออินเทอร์เน็ตได้หน้างาน
  • สถานะ: เสร็จสมบูรณ์ ผ่านการสอบปริญญานิพนธ์ เม.ย. 2569

บทบาทและหน้าที่

ทีม 2 คน แบ่งขอบเขตงานกันชัดเจน — เล่มไม่ได้แยกบทบาทไว้ จึงสรุปไว้ดังนี้

ยงศักดิ์ (ผม) — Backend & Infrastructure

  • ออกแบบและพัฒนา REST API ด้วย Fastify ครอบคลุม 6 โมดูล (นิทรรศการ / บูธกิจกรรม / แบบประเมิน / เกียรติบัตร / ข่าวสาร / ตรวจสอบการเข้าร่วม)
  • เชื่อมต่อ LINE Messaging API และ LIFF สำหรับลงทะเบียน เช็กอิน และแจ้งเตือน
  • ตั้งค่า Docker และ Cloudflare Tunnel สำหรับ dev/test

ณัฐวัฒน์ (เพื่อนร่วมทีม) — UI Design & Frontend

  • ออกแบบ UI ทั้งระบบด้วย Figma
  • พัฒนา Frontend ด้วย React + TypeScript ครอบคลุมหน้าจอผู้จัดงานทั้ง 6 โมดูล
  • พัฒนาหน้า LIFF ให้ผู้เข้าร่วมใช้งานผ่าน LINE บนมือถือ (ลงทะเบียน / เช็กอิน / แบบประเมิน / รับเกียรติบัตร)
  • เชื่อมต่อ REST API จาก Backend เข้ากับ UI จัดการ state และฟอร์มของแต่ละหน้า

ร่วมกัน — Database Design

  • ออกแบบ ER Diagram และโครงสร้างฐานข้อมูล MySQL 14 ตาราง

ขอให้เครดิต ณัฐวัฒน์ เพื่อนร่วมทีมที่ช่วยรับผิดชอบงานส่วนอื่นของโครงงานร่วมกันจนส่งมอบได้สำเร็จ

ทำงานภายใต้การดูแลของ อ.อรรถศาสตร์ นาคเทวัญ

ภาพร่างการออกแบบ (Design Wireframe)

ภาพร่างหน้าจอ (wireframe/mockup) ที่ออกแบบไว้ตั้งแต่เฟส Design — ครอบคลุมทั้งฝั่งผู้ดูแลระบบ (เว็บ) และฝั่งผู้เข้าร่วมงาน (LINE/mobile) เลื่อนดูด้วยปุ่มลูกศรหรือจุดด้านล่าง

การแก้ไขปัญหา

ระบบออกแบบให้ผู้ใช้ 3 กลุ่มเห็นข้อมูลคนละมุม — ผู้จัดงาน จัดการข้อมูลและดูสถิติทั้งงาน, เจ้าหน้าที่ประจำบูธ เช็กอินผู้เข้าร่วมเฉพาะบูธตัวเอง, และ ผู้เข้าร่วมงาน ลงทะเบียน ทำแบบประเมิน และรับเกียรติบัตรผ่าน LINE

สามบทบาทผู้ใช้ของระบบ: ผู้จัดงาน เจ้าหน้าที่ประจำบูธ และผู้เข้าร่วมงาน

ทั้ง 6 ฟีเจอร์หลักออกแบบมาแก้ปัญหาหนึ่งข้อที่พบจากงานจริง โดยมี API แยกโมดูลรองรับครบทุกตัว

ฟีเจอร์ปัญหาที่แก้สิ่งที่ระบบทำ
จัดการข้อมูลนิทรรศการผู้จัดงานต้องแก้รายละเอียดงานหลายรอบ ข้อมูลกระจายหลายไฟล์สร้าง/แก้ไข/ลบงาน กำหนดช่วงเวลา สถานที่ และหน่วยงานที่ร่วมจัด
ลงทะเบียนและเช็กอินด้วย QR Codeลงชื่อบนกระดาษหน้างานตกหล่นง่าย ตรวจสอบย้อนหลังยากผู้เข้าร่วมแสดง QR Code ประจำตัว เจ้าหน้าที่ประจำบูธสแกนเพื่อบันทึกเช็กอิน
จัดการบูธกิจกรรม (Unit)แต่ละบูธมีเจ้าหน้าที่คนละชุด ต้องเก็บเช็กอินแยกรายบูธแยกเจ้าหน้าที่ประจำบูธ กำหนดสิทธิ์ และเก็บ check-in รายบูธ
แบบสอบถามออนไลน์แบบประเมินถูกแยกไปอยู่อีกช่องทาง รวบรวมผลยากสร้างชุดคำถาม เก็บคำตอบผ่าน LINE และสรุปคะแนนในระบบเดียว
E-Certificate อัตโนมัติออกเกียรติบัตรทีละใบ ใช้เวลานาน พิมพ์ชื่อผิดบ่อยออก PDF ตาม template ให้ผู้ที่เข้าร่วมครบเกณฑ์โดยอัตโนมัติ
ประชาสัมพันธ์ข่าวสารผู้เข้าร่วมไม่รู้ความเคลื่อนไหวระหว่างงานส่งข่าวสารและแจ้งเตือนถึงผู้ใช้ผ่าน LINE OA โดยตรง

ภาพรวมสถาปัตยกรรม

ระบบเป็น Client-Server ที่ผู้ใช้ไม่ต้องติดตั้งอะไรเพิ่ม — ผู้เข้าร่วมคุยผ่าน LINE ทั้งหมดแล้วให้ Webhook วิ่งเข้าหา backend

ผู้ใช้
แชท / สแกน QR / เปิด LIFF
LINE OA
HTTPS POST /webhook (events[])
Backend · Fastify
SQL query
MySQL
เส้นทางข้อมูลหลักของระบบ

เทคโนโลยีที่ใช้

ส่วนเทคโนโลยี
FrontendReact + TypeScript
BackendNode.js + Fastify
DatabaseMySQL
LINE IntegrationLINE Messaging API + LIFF
DevOps / DeploymentDocker, Cloudflare Tunnel
เครื่องมือพัฒนาGit + GitHub, Figma, Postman

โครงสร้างฐานข้อมูล

ตาราง 14 ตารางถูกแบ่งเป็น 3 โดเมนหลักเพื่อให้เห็นขอบเขตชัดเจน

  • Exhibition — exhibition, registrations, exhibition_announcements, certificate_templates, normal_users
  • Unit — unit, unit_staffs, units_checkins
  • Survey — question_sets, questions_template, set_question_mapping, survey_submissions, survey_answers, survey_tracking

ตัวอย่างโค้ด: Webhook Handler

จุดที่รับ Webhook ไม่ใช่แค่ dispatch เหตุการณ์ แต่โฟกัสที่ ยืนยันลายเซ็น ก่อน (ป้องกันใครปลอม requests หลอกระบบ) แล้วค่อยกระจาย event ไปยัง handler

// จุดรับ Webhook จาก LINE
app.post(
  "/webhook",
  { config: { rawBody: true } }, // ต้องอ่าน raw body เพื่อเอาไปคำนวณ HMAC
  async (req: RawBodyRequest, reply: FastifyReply) => {
    const signature = req.headers["x-line-signature"];
    if (typeof signature !== "string") {
      return reply.code(400).send({ message: "missing LINE signature header" });
    }

    // ยืนยันว่า payload มาจาก LINE จริง ๆ (HMAC-SHA256 ด้วย Channel Secret)
    if (!verifyLineSignature(signature, req.rawBody, getLineConfig())) {
      return reply.code(401).send({ message: "invalid LINE signature" });
    }

    const events = (req.body as LineWebhookPayload)?.events ?? [];
    if (!events.length) {
      return reply.send({ ok: true });
    }

    // dispatch ทั้งหมดพร้อมกัน — event หนึ่งผิดพลาดไม่ฉุด event อื่น
    await Promise.all(
      events.map((event) =>
        dispatchLineEvent(event, getLineConfig(), app.log).catch((err) => {
          app.log.error({ err, event }, "failed to process LINE event");
        }),
      ),
    );

    reply.send({ ok: true });
  },
);

ตัวกระจายเหตุการณ์จะตัดสินใจตามชนิด event แล้วเรียก handler ที่รับผิดชอบ

export async function dispatchLineEvent(event, config, log) {
  const userId = event.source?.userId;

  if (event.type === "unfollow" && userId) {
    await markLineUserUnfollowed(userId); // ลบ soft-delete เลิกติดตาม
    return;
  }

  // ดึงโปรไฟล์ LINE มาซิงก์เข้า normal_users ทุกครั้งที่ใช้งาน
  const profile = await fetchLineProfile(userId, config);
  await upsertLineUserProfile({
    line_user_id: profile.userId,
    display_name: profile.displayName,
    picture_url: profile.pictureUrl ?? null,
  });

  if (event.type === "follow" && event.replyToken) {
    return handleFollowEvent(event.replyToken, config, log);
  }
  if (event.type === "postback" && event.postback?.data) {
    return handlePostbackEvent(
      event.replyToken,
      userId,
      event.postback.data,
      config,
      log,
    );
  }
  if (event.type === "message" && event.message?.type === "text") {
    return handleMessageCommand(
      event.replyToken,
      userId,
      event.message.text,
      config,
      log,
    );
  }
}

ความท้าทายและการแก้ไขปัญหา

1. ทดสอบ Webhook และ LIFF บน localhost

สถานการณ์ — LINE Messaging API และ LIFF ต้องเรียกผ่าน HTTPS endpoint ที่เข้าถึงจากอินเทอร์เน็ตได้ แต่ backend รันอยู่บน localhost ของเครื่อง dev ซึ่งไม่มี public URL

สิ่งที่ต้องทำ — ต้องทดสอบ flow จริงทั้งหมด (ลงทะเบียน → เช็กอิน → แบบประเมิน → E-Certificate) โดยไม่ต้อง deploy ขึ้น production ทุกครั้งที่แก้โค้ด

ทางแก้ไข — ใช้ Cloudflare Tunnel เปิด public HTTPS endpoint ที่ชี้กลับมาที่เครื่อง dev โดยไม่ต้องตั้งค่า firewall หรือซื้อโดเมน และรัน tunnel ควบคู่กับ dev server ทุกครั้งที่ทดสอบ

ผลลัพธ์ — ทดสอบ flow จริงได้ครบทั้งหมดบนเครื่อง dev ลดรอบเวลาแก้บั๊กจากที่ต้อง deploy ก่อนตรวจสอบ เหลือแก้แล้วเห็นผลทันที และทีมทั้งสองคนแชร์ tunnel ให้กันทดสอบได้

LINE Platform
HTTPS
Cloudflare Edge
Tunnel
localhost:3000 · Fastify
การทดสอบบนเครื่อง dev ผ่าน Cloudflare Tunnel

2. ความซับซ้อนของโมดูลและบทบาทผู้ใช้

สถานการณ์ — ระบบมี 6 โมดูล และผู้ใช้ 3 บทบาท (Organizer / Unit / Visitor) ที่มองข้อมูลคนละมุม

สิ่งที่ต้องทำ — ต้องกำหนดโครงสร้างข้อมูลและขอบเขตงานให้ชัดก่อนลงโค้ด เพื่อไม่ให้แก้ schema ระหว่างพัฒนา

ทางแก้ไข — ออกแบบ ER Diagram และแบ่งโดเมนตารางให้ชัดก่อนเขียนโค้ด (Exhibition / Unit / Survey) พร้อมแบ่งหน้าที่ในทีมตั้งแต่ต้น

ผลลัพธ์ — ลดงานแก้ schema ย้อนหลัง และทั้งสองคนทำงานคู่ขนานได้โดยไม่ชนกัน

3. เครื่องมือใหม่ที่ทีมยังไม่คุ้น

สถานการณ์ — เครื่องมือหลักที่เลือกใช้เป็นของใหม่สำหรับทีม ต่างจากที่เรียนมา

สิ่งที่ต้องทำ — ลดความเสี่ยงที่จะ integrate ไม่ผ่านเมื่อถึงเวลาประกอบระบบ

ทางแก้ไข — ทำ prototype เล็กแยกก่อนต่อเข้าระบบจริง ทดลอง Webhook handler, LIFF login และ Docker compose ทีละส่วน

ผลลัพธ์ — เข้าใจข้อจำกัดของแต่ละเครื่องมือก่อน integrate จริง ลดปัญหาที่ต้องรื้อโค้ดทีหลัง

ผลลัพธ์

ผลการทดสอบ

ผลทดสอบ 32 กรณีของส่วนติดต่อผู้ใช้ผ่านทั้งหมด และทดสอบส่วนประมวลผลหลังบ้าน (Backend API) ด้วย Postman ครบทั้ง 6 ระบบย่อย

ระบบย่อยกรณีทดสอบผลลัพธ์
ระบบการจัดการนิทรรศการCRUD ครบ 4 รูปแบบ (GET / POST / PUT / DELETE)ผ่าน
ระบบการจัดการบูธกิจกรรมCRUD + สร้าง QR และเช็กอินรายบูธผ่าน
ระบบการจัดการแบบประเมินจัดการชุดคำถาม + ตอบแบบประเมินผ่าน LIFFผ่าน
ระบบการจัดการใบประกาศนียบัตรจัดการ template + ดู/ดาวน์โหลดผ่าน LIFFผ่าน
ระบบการแจ้งข้อมูลข่าวสารCRUD ครบ 4 รูปแบบผ่าน
ระบบตรวจสอบการเข้าร่วมกิจกรรมสร้าง QR + เจ้าหน้าที่สแกนบันทึกการเช็กอินผ่าน

ผลกระทบเชิงกระบวนการ: จากลงชื่อกระดาษ + แบบประเมินคนละลิงก์ + เกียรติบัตรพิมพ์เอง → เหลือช่องทางเดียวใน LINE

ภาพหน้าจอฟีเจอร์

ภาพหน้าจอการใช้งานจริงจากเล่มปริญญานิพนธ์ — เลื่อนดูภาพด้วยปุ่มลูกศรหรือจุดด้านล่าง

บทเรียนและก้าวต่อไป

สิ่งที่อยากทำต่อ

  • รองรับ Broadcast Message เต็มรูปแบบเพื่อแจ้งข่าวแบบเรียลไทม์
  • ปรับปรุง response time ของระบบ
  • พัฒนา UI ให้ใช้ง่ายและดึงดูดขึ้น

บทเรียนที่ได้

  • การออกแบบฐานข้อมูลก่อนเขียนโค้ดช่วยลดงานแก้ทีหลัง
  • ข้อจำกัดของแพลตฟอร์มภายนอก (LINE) ต้องรู้ตั้งแต่ต้น
  • การแบ่งงานในทีม 2 คนต้องกำหนดขอบเขตชัด