Week 4: Killer Feature - Po-Pon/SW-Development-Tool-And-Environments-Group1 GitHub Wiki

Killer feature ค้นหาและจองเตียง

สาเหตุที่ทางกลุ่มผู้พัฒนาเลือกให้ฟีเจอร์การค้นหาและจองเตียงเป็น Killer feature นั้น เป็นเพราะว่าฟีเจอร์นี้ตอบโจทย์และแก้ปัญหา Pain point ของกลุ่มเป้าหมายผู้ใช้งานในปัจจุบันที่มีความต้องการจองเตียงเพื่อรักษาตัวในช่วงสถานการ์ณโควิดในปัจจุบัน ทำให้ฟีเจอร์การค้นหาและจองเตียง ถือเป็นฟีเจอร์ที่โดดเด่นและสำคัญที่สุด จึงทำให้ทางกลุ่มผู้พัฒนาเลือกฟีเจอร์ดังกล่าวขึ้นมาเป็น Killer feature

หมายเหตุ: การแตก task ใน document นี้ เป็นการแตก task ในภาพรวม ทำให้ในการแตก task จริง ๆ ใน Project management tool (Trello) จะมีการแตก task แยกย่อยลงไปมากกว่านี้


List of Task

Frontend

Task เวลาที่กำหนด ผู้รับผิดชอบ
1. ออกแบบหน้า UI ในส่วนของการค้นหาและจองเตียง 3 ชั่วโมง นายวิชยุตม์ ทวิชัยยุทธ
2. ทำการพัฒนาหน้า Main โดยใช้ Vue.Js ในการพัฒนา 3 ชั่วโมง นายอคิราภ์ สีแสนยง
3. ทำการพัฒนาหน้าค้นหาสถานที่ให้บริการเตียงโดยใช้ Vue.Js ในการพัฒนา 3 ชั่วโมง นายอคิราภ์ สีแสนยง
4. ทำการพัฒนาหน้ากรอกข้อมูลและยืนยันการจองเตียงโดยใช้ Vue.Js ในการพัฒนา 3 ชั่วโมง นายพิชญะ สิงห์มีศรี

Backend

Task เวลาที่กำหนด ผู้รับผิดชอบ
1. ออกแบบ Backend เพื่อรองรับในส่วนของการค้นหาและจองเตียง 3 ชั่วโมง นายพลัฏฐ์ วงศ์สิทธิพรรุ่ง
2. พัฒนา Backend เพื่อรองรับการเข้าถึงข้อมูลสถานที่ให้บริการเตียงโดยใช้ Node.js ในการพัฒนา 3 ชั่วโมง นายพลัฏฐ์ วงศ์สิทธิพรรุ่ง
3. พัฒนา Backend สำหรับจัดเก็บและแก้ไขข้อมูลการจองเตียง เพื่อรองรับการจองเตียงของ User โดยใช้ Node.js ในการพัฒนา 4 ชั่วโมง นายประธาน นาเวียง

Database

Task เวลาที่กำหนด ผู้รับผิดชอบ
1. ออกแบบ Database สำหรับเก็บข้อมูลของสถานที่ให้บริการเตียง, ผู้ให้บริการ และจำนวนเตียงที่ให้บริการ 3 ชั่วโมง นายปภัส เงาธัมมะสกุล
2. พัฒนา Database สำหรับเก็บข้อมูลของสถานที่ให้บริการเตียง, ผู้ให้บริการ และจำนวนเตียงที่ให้บริการ โดยใช้ Firebase ในการพัฒนา 3 ชั่วโมง นายประธาน นาเวียง

Deployment on target server

ทำการ Deploy Web App ผ่าน Heroku

โดย Heroku เป็นบริการคลาวด์แบบ Platform as a Service (Paas) ที่ให้บริการสำหรับนักพัฒนาซอฟต์แวร์ สามารถรองรับภาษาต่าง ๆ เช่น Java , Python , PHP ,Ruby, Go และ Node.js เป็นต้น โดย Heroku จะมี Add-on สำหรับเพิ่มเติมบริการอื่น ๆ เช่น PostgreSQL, MongoDB, Redis เป็นต้น มีให้เลือกใช้งานทั้งฟรี และเสียเงิน

Heroku นั้น เหมาะสำหรับ

  • ผู้ที่ต้องการทดลองเขียนเว็บแอปพลิเคชัน ทดสอบโค้ด และการทำงานของแอปพลิชันโดยไม่ต้องเช่า Server
  • ผู้ที่ต้องการลดเวลาในการพัฒนาแอปพลิชันเนื่องจากไม่มีความจำเป็นต้องตั้งค่าเครื่อง Server เอง
  • ผู้ที่มีทรัพยากรไม่พอ ทั้งในเรื่องของเงิน เวลา ด้านบุคคล และอื่น ๆ
  • ผู้ที่ต้องการมุ่งเน้นในการพัฒนาแอปพลิชันเพียงอย่างเดียว

Demo and Review :: (First flow + Acceptance tests)

Demo ค้นหาและจองเตียง

อีเมล: [email protected]
รหัสผ่าน: Passw0rd

Coding with Team


Trello


Pull request


เงื่อนไขในการผ่าน Acceptance Test

1. Frontend Task 1 : ออกแบบหน้า UI ในส่วนของการค้นหาและจองเตียง
  • ต้องมีหน้า UI ของ 3 หน้าหลักครบ ได้แก่ หน้า main, หน้าค้นหาสถานที่ให้บริการเตียง, หน้ากรอกข้อมูลและยืนยันการจองเตียง
  • หน้า main ที่ถูกออกแบบมาจะต้องมีการแสดงผล Element ที่ใช้ในการ Interact กับ User เพื่อเข้าถึงการใช้งานอื่น ๆ ต่อไป
  • หน้าค้นหาสถานที่ให้บริการเตียงจะต้องมีการแสดงผล Element ที่ช่วยในการเข้าถึงฟังก์ชันพื้นฐานในการค้นหาเตียงที่ User ต้องการ
  • หน้ากรอกข้อมูลและยืนยันการจองเตียงจะต้องมีการแสดงผล Element ที่เป็น input รับค่าข้อมูลของ User เพื่อใช้ในการจองเตียงที่ User ต้องการ
Task 2 : ทำการพัฒนาหน้า Main โดยใช้ Vue.Js
  • หน้า Main ที่ได้ทำการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
  • สามารถเลือกใช้งานฟังก์ชั่นหลัก ๆ ของแอพพลิเคชั่นผ่านหน้า Main นี้ได้ครบถ้วน รวมถึง การค้นหาและจองเตียง
Acceptance Test

Result : หน้า main มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน

Task 3 : ทำการพัฒนาหน้าค้นหาสถานที่ให้บริการเตียงโดยใช้ Vue.Js
  • หน้าค้นหาสถานที่ให้บริการเตียงที่ได้ทำการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
  • ต้องสามารถใช้ฟังก์ชันพื้นฐานในการช่วยค้นหาข้อมูลเตียงที่ผู้ใช้ต้องการได้อย่างถูกต้อง
  • ต้องมีการแสดงผลลัพธ์ของการค้นหาสถานที่ให้บริการเตียงได้ตรงตามฟังก์ชันที่ User เลือกใช้
Acceptance Test

Result : หน้าค้นหาสถานที่ให้บริการเตียง มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน

Task 4 : ทำการพัฒนาหน้ากรอกข้อมูลการจองเตียงโดยใช้ Vue.Js
  • หน้ากรอกข้อมูลการจองเตียงที่ได้มีการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
  • ต้องมีการ validate input เบื้องต้นในส่วนของการกรอกข้อมูลในการจองเตียง
Acceptance Test

Result : หน้ากรอกข้อมูลการจองเตียง มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน

2. Backend Task 1 : ออกแบบ Backend เพื่อรองรับในส่วนของการค้นหาและจองเตียง
  • Backend ที่ได้ออกแบบมีรูปแบบการทำงานที่รองรับการเรียกใช้งานจากฝั่ง frontend
  • Backend ที่ออกแแบบออกมาต้องมีรูปแบบของ API ที่เข้าใจได้ง่าย เพื่อง่ายแก่การเรียกใช้งาน
  • Backend ที่ออกแบบมาจะต้องมีการรองรับฟังก์ชันทั้งหมด 2 ฟังก์ชันหลัก ได้แก่ การค้นหาสถานที่ที่จะจองเตียง และการจัดเก็บและแก้ไขข้อมูลสำหรับการจองเตียง
Acceptance Test

จากการออกแบบ เราได้ทำการออกแบบ API ที่เกี่ยวข้องกับการทำงานในแต่ละส่วนออกมา ดังนี้

  • Endpoint : /bedsready
    Methods: GET
    รูปแบบการทำงาน : เป็นการดึงข้อมูลสถานที่ให้บริการเตียงทั้งหมดที่พร้อมรับการจองเตียง (จำนวนเตียงที่ว่างมากกว่า 0)
  • Endpoint : /bedsdealing
    Methods: POST
    รูปแบบการทำงาน : เป็นการบันทึกข้อมูลการจองลงใน Database
  • Endpoint : /beds/:id
    Methods: GET
    รูปแบบการทำงาน : เป็นการเข้าถึงข้อมูลสถานที่รับการจองเตียงแบบเฉพาะเจาะจง เพื่อให้ User สามารถทำการจองเตียงได้
  • Endpoint : /bedsdealingbybeds/:id
    Methods: GET
    รูปแบบการทำงาน : เป็นการเข้าถึงข้อมูลสถานที่รับการจองเตียงแบบที่ User ได้ทำการจองเรียบร้อยแล้ว

Result : API ทั้ง 4 ตัว ที่ออกแบบมานั้น สามารถครอบคลุมเงื่อนไขที่ระบุไว้ใน Task นี้ได้อย่างครบถ้วน

Task 2 : พัฒนา Backend เพื่อรองรับการเข้าถึงข้อมูลสถานที่ให้บริการเตียงโดยใช้ Node.js ในการพัฒนา
  • สามารถเข้าถึงข้อมูลของสถานที่ให้บริการเตียงใน database ได้
  • สามารถส่งข้อมูลสถานที่ให้บริการเตียงไปกลับไปยังฝั่งของ frontend ได้อย่างถูกต้อง
Acceptance Test

API ที่เกี่ยวข้อง : /bedsready

Result : API ที่เกี่ยวข้องกับการค้นหาข้อมูลสถานที่ให้บริการเตียง สามารถทำงานได้ตรงตามเงื่อนไขที่วางไว้

Task 3 : พัฒนา Backend สำหรับจัดเก็บและแก้ไขข้อมูลการจองเตียง เพื่อรองรับการจองเตียงของ User โดยใช้ Node.js
  • สามารถเข้าถึงและแก้ไขข้อมูลใน Database ของการจองเตียงได้
  • สามารถนำข้อมูลการจองเตียงของ User จัดเก็บลง database ที่ใช้จัดเก็บข้อมูลของการจองเตียง
Acceptance Test

API ที่เกี่ยวข้อง : /bedsdealing, /beds/:id, /bedsdealingbybeds/:id

Result : API ที่เกี่ยวข้องกับการจัดเก็บและแก้ไขข้อมูลการจองเตียง สามารถครอบคลุมเงื่อนไขที่ระบุไว้ใน Task นี้ได้อย่างครบถ้วน

3. Database Task 1 : ออกแบบ Database สำหรับเก็บข้อมูลของสถานที่ให้บริการเตียง, ผู้ให้บริการ และจำนวนเตียงที่ให้บริการ
  • Database ที่ออกแบบจะต้องเป็นในรูปแบบของ NOSQL
  • Database ที่ออกแบบจะต้องมีการเก็บข้อมูลแยกย่อยออกมาทั้งหมด 2 ส่วน ได้แก่ ข้อมูลสถานที่ให้บริการเตียง และข้อมูลการจองของ User
Acceptance Test

จากการออกแบบ เราสามารถแบ่ง Database ที่เกี่ยวข้องออกเป็นทั้งหมด 3 Cllection ดังนี้

  • User เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลส่วนตัวของ User โดยประกอบด้วย attribute ดังนี้
    1. _id : เป็น id ระบุตัวตนของ User
    2. idcard : เก็บข้อมูลรหัสบัตรประจำตัวประชาชนของ User
    3. fname : เก็บข้อมูลชื่อจริงของ User
    4. lname : เก็บข้อมูลนามสกุลของของ User
    5. phone : เก็บข้อมูลเบอร์โทรศัพท์ของ User
    6. lineid : เก็บข้อมูล id Line ของ User
    7. email : เก็บข้อมูล email ของ User
    8. pass : เก็บข้อมูลรหัสผ่านที่ User ใช้ในการเข้าสู่ระบบ
  • beds เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลสถานที่ให้บริการเตียง โดยประกอบด้วย attribute ดังนี้
    1. _id : เป็น id ระบุสถานที่ให้บริการเตียง
    2. amount : เก็บข้อมูลจำนวนเตียงที่ว่างอยู่ของแต่ละสถานที่ให้บริการเตียง
    3. hno : เก็บข้อมูลเลขที่อยู่ของสถานที่ให้บริการเตียง
    4. no : เก็บข้อมูลเลขหมู่ของสถานที่ให้บริการเตียง
    5. lane : เก็บข้อมูลซอยที่อยู่ของสถานที่ให้บริการเตียง
    6. district : เก็บข้อมูลแขวง หรือตำบลของสถานที่ให้บริการเตียง
    7. area : เก็บข้อมูลเขต หรืออำเภอของสถานที่ให้บริการเตียง
    8. province : เก็บข้อมูลจังหวัดของสถานที่ให้บริการเตียง
    9. user_id : เก็บข้อมูล id ระบุตัวตนของ User
  • bedsdealings เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลการจองสถานที่ให้บริการเตียงของ User ทั้งหมด โดยประกอบด้วย attribute ดังนี้
    1. _id : เป็น id ของการจองที่ได้รับการยืนยันเรียบร้อยแล้ว
    2. date : เก็บข้อมูลวันที่ ๆ การจองนั้น ๆ เกิดขึ้น
    3. bed_id : เก็บข้อมูลสถานที่ให้บริการเตียงตามที่คำสั่งจองนั้น ๆ ได้จองไว้
    4. user_id : เก็บข้อมูลเลข id ของ User ที่สร้างคำสั่งจองดังกล่าว

Result : จากข้อมูลการออกแบบ Database ดังกล่าว จะเห็นได้ว่าสามารถตอบสนองตรงตามเงื่อนไขที่ได้ตั้งไว้อย่างครบถ้วน

Task 2 : สร้าง Database สำหรับเก็บข้อมูลของสถานที่ให้บริการเตียง, ผู้ให้บริการ และจำนวนเตียงที่ให้บริการ
  • Database ที่พัฒนาขึ้นมาสามารถจัดเก็บข้อมูลที่จำเป็นทั้งหมดได้ ตามที่ออกแบบไว้
  • Database ที่พัฒนาขึ้นมาจะต้องมีการใช้ชนิดข้อมูล (Data Type) ที่เหมาะสมกับข้อมูลนั้น
Acceptance Test

ตัวอย่างโครงสร้างของ collection ตามที่ได้ออกแบบไว้

Result : จากตัวอย่างโครงสร้างดังกล่าว สามารถบอกได้ว่า Database ที่พัฒนาขึ้นมา สามารถตอบสนองได้ตรงตามเงื่อนไขที่ได้ตั้งไว้

⚠️ **GitHub.com Fallback** ⚠️