Technical - SilverSky9/DevToolNo1 GitHub Wiki

Technical

Frontend

Design

เลือกใช้เป็น Next.js และใช้ framework เป็น react boostrap โดยจะมีหน้าหลักๆดังนี้
1.Home page โดยจะมี feature ดังนี้

  • search product เป็นการที่ให้ผู้ใช้หาโพสที่ตัวเองต้องการโดยจะเป็น realtime search เมื่อพิมพ์ในช่อง search เสร็จจะทำการแสดงผลให้เลยทันที
  • Get product เป็นการที่ผู้ใช้เข้ามาในหน้าเว็บ จะเห็นโพสล่าสุดที่ทุกคนสร้างมา
  • Filter by tag เป็นการค้นหาโพสโดยใช้ tag ในการค้นหาทำให้ง่ายและครอบคลุมกับสิ่งของที่เราต้องการมากยิ่งขึ้น

2.Create post page โดยจะมี feature ดังนี้

  • Upload photo product เป็นส่วนที่ผู้ใช้จะนำรูปภาพที่ตัวเเองต้องการมาใส่ไว้หรือว่าไม่จำเป็นจะต้องใส่ก็ได้
  • Add detail post เป็นส่วนที่ผู้ใช้ต้องใส่ข้อมูลรายละเอียดที่ตัวเองต้องการ
  • Select catagory จะสามารถเลือกได้ 1 tag ต่อ 1 โพส เพื่อให้คนที่มาตามหาหรือใช้ยืมนั้น ค้นหาได้ง่ายขึ้น

Test

  • UI เป็นไปตามที่ design เอาไว้
  • สามารถอัพโหลดรูปภาพและแสดงบนโพสได้
  • สามารถพิมพ์และแสดงผลข้อมูลบนโพสได้
  • สามารถเลือกและจัด tag ได้อย่างถูกต้อง
  • มีการ Validate ข้อมูลก่อนโพสได้

Deploy

เลือกใช้ Docker container และ Deploy โดยเลือกใช้ Nginx เป็น docker images

Backend

Back end Full image

Design

เลือกใช้ Go Fiber Framework ในการใช้งานหลังบ้าน โดยมีหน้าที่จัดการงานหลังบ้านได้แก่

  • ทำการค้นหาโพสที่มี Title คล้ายกับสิ่งที่ผู้ใช้งานต้องการค้นหา
  • ทำการค้นหาโพสที่เกี่ยวข้อง เมื่อผู้ใช้งานเลือก Tags ที่ต้องการค้นหา
  • ตรวจสอบความถูกต้องของข้อมูลที่ Frontend ส่งมาเพื่อตรวจทานความถูกต้อง
  • ดูแลและจัดการ API ที่เกี่ยวข้องในการทำ CRUD ของ mongoDB Database

Test

เลือกใช้ Go Test เป็นเครื่องมือในการ Test ในภาษา Golang มีความสามารถในการทำการ test รูปแบบต่างๆ และมี Feature เข่น

  • สามารถทำ unittest สำหรับการทำ Unit Test ได้

Deploy

เลือกใช้ Docker container และ Deploy โดยเลือกใช้ Golang เป็น docker images

Database

DB

MongoDB Atlas

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

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