Week 4: Killer Feature - Po-Pon/SW-Development-Tool-And-Environments-Group1 GitHub Wiki
สาเหตุที่ทางกลุ่มผู้พัฒนาเลือกให้ฟีเจอร์การค้นหาและจองเตียงเป็น Killer feature นั้น เป็นเพราะว่าฟีเจอร์นี้ตอบโจทย์และแก้ปัญหา Pain point ของกลุ่มเป้าหมายผู้ใช้งานในปัจจุบันที่มีความต้องการจองเตียงเพื่อรักษาตัวในช่วงสถานการ์ณโควิดในปัจจุบัน ทำให้ฟีเจอร์การค้นหาและจองเตียง ถือเป็นฟีเจอร์ที่โดดเด่นและสำคัญที่สุด จึงทำให้ทางกลุ่มผู้พัฒนาเลือกฟีเจอร์ดังกล่าวขึ้นมาเป็น Killer feature
- List of Task
- Deployment on target server
- Demo and Review
- Coding with Team
- เงื่อนไขในการผ่าน Acceptance Test
หมายเหตุ: การแตก task ใน document นี้ เป็นการแตก task ในภาพรวม ทำให้ในการแตก task จริง ๆ ใน Project management tool (Trello) จะมีการแตก 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 ชั่วโมง | นายประธาน นาเวียง |
ทำการ 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 เอง
- ผู้ที่มีทรัพยากรไม่พอ ทั้งในเรื่องของเงิน เวลา ด้านบุคคล และอื่น ๆ
- ผู้ที่ต้องการมุ่งเน้นในการพัฒนาแอปพลิชันเพียงอย่างเดียว
อีเมล: [email protected]
รหัสผ่าน: Passw0rd
Trello
Pull request
1. Frontend Task 1 : ออกแบบหน้า UI ในส่วนของการค้นหาและจองเตียง
- ต้องมีหน้า UI ของ 3 หน้าหลักครบ ได้แก่ หน้า main, หน้าค้นหาสถานที่ให้บริการเตียง, หน้ากรอกข้อมูลและยืนยันการจองเตียง
- หน้า main ที่ถูกออกแบบมาจะต้องมีการแสดงผล Element ที่ใช้ในการ Interact กับ User เพื่อเข้าถึงการใช้งานอื่น ๆ ต่อไป
- หน้าค้นหาสถานที่ให้บริการเตียงจะต้องมีการแสดงผล Element ที่ช่วยในการเข้าถึงฟังก์ชันพื้นฐานในการค้นหาเตียงที่ User ต้องการ
- หน้ากรอกข้อมูลและยืนยันการจองเตียงจะต้องมีการแสดงผล Element ที่เป็น input รับค่าข้อมูลของ User เพื่อใช้ในการจองเตียงที่ User ต้องการ
- หน้า Main ที่ได้ทำการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
- สามารถเลือกใช้งานฟังก์ชั่นหลัก ๆ ของแอพพลิเคชั่นผ่านหน้า Main นี้ได้ครบถ้วน รวมถึง การค้นหาและจองเตียง
Result : หน้า main มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน
- หน้าค้นหาสถานที่ให้บริการเตียงที่ได้ทำการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
- ต้องสามารถใช้ฟังก์ชันพื้นฐานในการช่วยค้นหาข้อมูลเตียงที่ผู้ใช้ต้องการได้อย่างถูกต้อง
- ต้องมีการแสดงผลลัพธ์ของการค้นหาสถานที่ให้บริการเตียงได้ตรงตามฟังก์ชันที่ User เลือกใช้
Result : หน้าค้นหาสถานที่ให้บริการเตียง มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน
- หน้ากรอกข้อมูลการจองเตียงที่ได้มีการพัฒนาแล้วนั้นต้องมีรูปแบบ UI ตามที่ได้ออกแบบไว้ครบถ้วน
- ต้องมีการ validate input เบื้องต้นในส่วนของการกรอกข้อมูลในการจองเตียง
Result : หน้ากรอกข้อมูลการจองเตียง มีองค์ประกอบที่ตรงตามเงื่อนไขครบถ้วน
- Backend ที่ได้ออกแบบมีรูปแบบการทำงานที่รองรับการเรียกใช้งานจากฝั่ง frontend
- Backend ที่ออกแแบบออกมาต้องมีรูปแบบของ API ที่เข้าใจได้ง่าย เพื่อง่ายแก่การเรียกใช้งาน
- Backend ที่ออกแบบมาจะต้องมีการรองรับฟังก์ชันทั้งหมด 2 ฟังก์ชันหลัก ได้แก่ การค้นหาสถานที่ที่จะจองเตียง และการจัดเก็บและแก้ไขข้อมูลสำหรับการจองเตียง
จากการออกแบบ เราได้ทำการออกแบบ 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 ได้อย่างถูกต้อง
API ที่เกี่ยวข้อง : /bedsready
Result : API ที่เกี่ยวข้องกับการค้นหาข้อมูลสถานที่ให้บริการเตียง สามารถทำงานได้ตรงตามเงื่อนไขที่วางไว้
- สามารถเข้าถึงและแก้ไขข้อมูลใน Database ของการจองเตียงได้
- สามารถนำข้อมูลการจองเตียงของ User จัดเก็บลง database ที่ใช้จัดเก็บข้อมูลของการจองเตียง
API ที่เกี่ยวข้อง : /bedsdealing, /beds/:id, /bedsdealingbybeds/:id
Result : API ที่เกี่ยวข้องกับการจัดเก็บและแก้ไขข้อมูลการจองเตียง สามารถครอบคลุมเงื่อนไขที่ระบุไว้ใน Task นี้ได้อย่างครบถ้วน
- Database ที่ออกแบบจะต้องเป็นในรูปแบบของ NOSQL
- Database ที่ออกแบบจะต้องมีการเก็บข้อมูลแยกย่อยออกมาทั้งหมด 2 ส่วน ได้แก่ ข้อมูลสถานที่ให้บริการเตียง และข้อมูลการจองของ User
จากการออกแบบ เราสามารถแบ่ง Database ที่เกี่ยวข้องออกเป็นทั้งหมด 3 Cllection ดังนี้
-
User เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลส่วนตัวของ User โดยประกอบด้วย attribute ดังนี้
- _id : เป็น id ระบุตัวตนของ User
- idcard : เก็บข้อมูลรหัสบัตรประจำตัวประชาชนของ User
- fname : เก็บข้อมูลชื่อจริงของ User
- lname : เก็บข้อมูลนามสกุลของของ User
- phone : เก็บข้อมูลเบอร์โทรศัพท์ของ User
- lineid : เก็บข้อมูล id Line ของ User
- email : เก็บข้อมูล email ของ User
- pass : เก็บข้อมูลรหัสผ่านที่ User ใช้ในการเข้าสู่ระบบ
-
beds เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลสถานที่ให้บริการเตียง โดยประกอบด้วย attribute ดังนี้
- _id : เป็น id ระบุสถานที่ให้บริการเตียง
- amount : เก็บข้อมูลจำนวนเตียงที่ว่างอยู่ของแต่ละสถานที่ให้บริการเตียง
- hno : เก็บข้อมูลเลขที่อยู่ของสถานที่ให้บริการเตียง
- no : เก็บข้อมูลเลขหมู่ของสถานที่ให้บริการเตียง
- lane : เก็บข้อมูลซอยที่อยู่ของสถานที่ให้บริการเตียง
- district : เก็บข้อมูลแขวง หรือตำบลของสถานที่ให้บริการเตียง
- area : เก็บข้อมูลเขต หรืออำเภอของสถานที่ให้บริการเตียง
- province : เก็บข้อมูลจังหวัดของสถานที่ให้บริการเตียง
- user_id : เก็บข้อมูล id ระบุตัวตนของ User
-
bedsdealings เป็น collection ที่มีหน้าที่ในการเก็บข้อมูลการจองสถานที่ให้บริการเตียงของ User ทั้งหมด โดยประกอบด้วย attribute ดังนี้
- _id : เป็น id ของการจองที่ได้รับการยืนยันเรียบร้อยแล้ว
- date : เก็บข้อมูลวันที่ ๆ การจองนั้น ๆ เกิดขึ้น
- bed_id : เก็บข้อมูลสถานที่ให้บริการเตียงตามที่คำสั่งจองนั้น ๆ ได้จองไว้
- user_id : เก็บข้อมูลเลข id ของ User ที่สร้างคำสั่งจองดังกล่าว
Result : จากข้อมูลการออกแบบ Database ดังกล่าว จะเห็นได้ว่าสามารถตอบสนองตรงตามเงื่อนไขที่ได้ตั้งไว้อย่างครบถ้วน
Task 2 : สร้าง Database สำหรับเก็บข้อมูลของสถานที่ให้บริการเตียง, ผู้ให้บริการ และจำนวนเตียงที่ให้บริการ- Database ที่พัฒนาขึ้นมาสามารถจัดเก็บข้อมูลที่จำเป็นทั้งหมดได้ ตามที่ออกแบบไว้
- Database ที่พัฒนาขึ้นมาจะต้องมีการใช้ชนิดข้อมูล (Data Type) ที่เหมาะสมกับข้อมูลนั้น
ตัวอย่างโครงสร้างของ collection ตามที่ได้ออกแบบไว้
Result : จากตัวอย่างโครงสร้างดังกล่าว สามารถบอกได้ว่า Database ที่พัฒนาขึ้นมา สามารถตอบสนองได้ตรงตามเงื่อนไขที่ได้ตั้งไว้