Lokavinas เป็นแพลตฟอร์มจองโรงแรมแบบ Full-stack ที่ออกแบบมาเพื่อจำลองประสบการณ์การใช้งานจริงของผู้ใช้ และระบบจัดการหลังบ้าน โดยเน้นความถูกต้องของข้อมูลการจองและการคำนวณราคาที่แม่นยำ
โปรเจกต์นี้พัฒนาขึ้นเพื่อแก้ปัญหาในเรื่องความยุ่งยากของการตรวจสอบห้องว่างตามช่วงเวลาที่กำหนด โดยระบบมีอัลกอริทึมตรวจสอบ Date Overlapping เพื่อป้องกันการจองซ้ำในเวลาเดียวกัน และมีระบบกรองข้อมูลโรงแรมที่ซับซ้อนตาม Rating, Price Range และ Location ช่วยให้ผู้ใช้ตัดสินใจเลือกที่พักได้รวดเร็วขึ้น
-
Advanced Search Engine: ระบบค้นหาที่สามารถกรองข้อมูลได้ละเอียด (Country, City, Guests, Date, Price, Rating)
-
Booking & Reservation Logic: ระบบการจองที่เชื่อมโยงกับสถานะห้องพักจริง รองรับการตรวจสอบความว่างของห้องแบบ Real-time
-
Dynamic Pricing & Discounts: ระบบคำนวณราคาส่วนลดโดยใช้ Promo Code
-
User & Admin Roles: - User: สมัครสมาชิก, เข้าสู่ระบบ, จองที่พัก, รีวิวโรงแรม, และจัดการโปรไฟล์ส่วนตัว
-
Admin: เพิ่ม/ลบ โรงแรมและห้องพัก, แก้ไขข้อมูลราคาและจำนวนผู้เข้าพักผ่าน API
-
Feedback System: ระบบรีวิวและให้คะแนนโรงแรมที่คำนวณค่าเฉลี่ย Rating แบบอัตโนมัติ
- HTML5 & CSS3: ใช้ในการสร้างโครงสร้างและสไตล์ที่เน้นความ Modern Luxury
- Bootstrap 5: ใช้ในการทำ Responsive Design เพื่อให้รองรับการแสดงผลทุกหน้าจอ
- Vanilla JavaScript: จัดการ Dynamic Content และรับส่งข้อมูลกับ Backend โดยใช้ Fetch API (เน้นการทำงานแบบ Asynchronous)
- Python (FastAPI): เลือกใช้เนื่องจากมีประสิทธิภาพสูง (High Performance) และจัดการข้อมูลแบบ Asynchronous ได้ดีเยี่ยม
- Uvicorn: ASGI server สำหรับการรันระบบที่มีความเสถียร
- Pydantic: ใช้ในการทำ Data Validation (Schema) เพื่อควบคุมความถูกต้องของข้อมูลที่ส่งผ่าน API
- In-Memory Data Structures: ออกแบบการจัดเก็บข้อมูลโดยใช้หลักการ Object-Oriented Programming (OOP) ในการสร้างคลาสต่างๆ เช่น
Hotel,User,Reservationเพื่อจัดการ State ของข้อมูล - Schema Validation: ใช้ Pydantic Models ในการกำหนดรูปแบบ Request Body และ Response
- RESTful API Design: ออกแบบ API Endpoints ตามมาตรฐานสากล (GET, POST, PUT, DELETE) แบ่งแยกหน้าที่ชัดเจนระหว่าง Admin และ User
- Logic & Algorithm: พัฒนาฟังก์ชัน
is_overlapในการตรวจสอบช่วงเวลาการเข้าพัก เพื่อป้องกันปัญหา Overbooking - Object-Oriented Programming (OOP): ใช้แนวคิด Class Inheritance (เช่น
AdminสืบทอดจากUser) และการทำ Encapsulation (Private attributes) เพื่อความปลอดภัยของข้อมูล - Asynchronous Programming: จัดการการรับส่งข้อมูลระหว่าง Client และ Server โดยไม่ทำให้หน้าเว็บค้างขณะรอการประมวลผล
- Challenge: การจัดการข้อมูลการจองที่มีเงื่อนไขเรื่อง "ช่วงเวลา" (Date Range) ที่ซับซ้อน
- Solution: พัฒนา Logic การเปรียบเทียบ Datetime ของ Python เพื่อตรวจสอบการทับซ้อนของช่วงเวลาจองในแต่ละห้องพัก (Room-level availability) ก่อนที่ระบบจะอนุญาตให้สร้าง Reservation ใหม่
- Challenge: การแสดงผลข้อมูลที่เปลี่ยนไปตามโรงแรมที่ผู้ใช้เลือก (Dynamic Content)
- Solution: ใช้ LocalStorage ในการส่งต่อ State ระหว่างหน้า HTML และเรียกใช้ API เฉพาะส่วนที่จำเป็น ทำให้แอปพลิเคชันทำงานได้ลื่นไหลเหมือน Single Page Application (SPA) ในบางส่วน
- ติดตั้ง Python และ FastAPI:
pip install fastapi uvicorn nltk
- รัน Backend Server:
python main.py # หรือ uvicorn api:app --reload
- เปิดไฟล์
index.htmlบนเบราว์เซอร์เพื่อเริ่มใช้งาน