Skip to content

Repository files navigation

Lokavinas: Hotel Reservation System

Lokavinas เป็นแพลตฟอร์มจองโรงแรมแบบ Full-stack ที่ออกแบบมาเพื่อจำลองประสบการณ์การใช้งานจริงของผู้ใช้ และระบบจัดการหลังบ้าน โดยเน้นความถูกต้องของข้อมูลการจองและการคำนวณราคาที่แม่นยำ

Project Overview

โปรเจกต์นี้พัฒนาขึ้นเพื่อแก้ปัญหาในเรื่องความยุ่งยากของการตรวจสอบห้องว่างตามช่วงเวลาที่กำหนด โดยระบบมีอัลกอริทึมตรวจสอบ Date Overlapping เพื่อป้องกันการจองซ้ำในเวลาเดียวกัน และมีระบบกรองข้อมูลโรงแรมที่ซับซ้อนตาม Rating, Price Range และ Location ช่วยให้ผู้ใช้ตัดสินใจเลือกที่พักได้รวดเร็วขึ้น

Core Functionality

  • 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 แบบอัตโนมัติ

Tech Stack & Tools

Frontend

  • HTML5 & CSS3: ใช้ในการสร้างโครงสร้างและสไตล์ที่เน้นความ Modern Luxury
  • Bootstrap 5: ใช้ในการทำ Responsive Design เพื่อให้รองรับการแสดงผลทุกหน้าจอ
  • Vanilla JavaScript: จัดการ Dynamic Content และรับส่งข้อมูลกับ Backend โดยใช้ Fetch API (เน้นการทำงานแบบ Asynchronous)

Backend

  • Python (FastAPI): เลือกใช้เนื่องจากมีประสิทธิภาพสูง (High Performance) และจัดการข้อมูลแบบ Asynchronous ได้ดีเยี่ยม
  • Uvicorn: ASGI server สำหรับการรันระบบที่มีความเสถียร
  • Pydantic: ใช้ในการทำ Data Validation (Schema) เพื่อควบคุมความถูกต้องของข้อมูลที่ส่งผ่าน API

Database & Design

  • In-Memory Data Structures: ออกแบบการจัดเก็บข้อมูลโดยใช้หลักการ Object-Oriented Programming (OOP) ในการสร้างคลาสต่างๆ เช่น Hotel, User, Reservation เพื่อจัดการ State ของข้อมูล
  • Schema Validation: ใช้ Pydantic Models ในการกำหนดรูปแบบ Request Body และ Response

Key Skills Demonstrated

  • 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 โดยไม่ทำให้หน้าเว็บค้างขณะรอการประมวลผล

Challenges & Solutions

  • Challenge: การจัดการข้อมูลการจองที่มีเงื่อนไขเรื่อง "ช่วงเวลา" (Date Range) ที่ซับซ้อน
  • Solution: พัฒนา Logic การเปรียบเทียบ Datetime ของ Python เพื่อตรวจสอบการทับซ้อนของช่วงเวลาจองในแต่ละห้องพัก (Room-level availability) ก่อนที่ระบบจะอนุญาตให้สร้าง Reservation ใหม่
  • Challenge: การแสดงผลข้อมูลที่เปลี่ยนไปตามโรงแรมที่ผู้ใช้เลือก (Dynamic Content)
  • Solution: ใช้ LocalStorage ในการส่งต่อ State ระหว่างหน้า HTML และเรียกใช้ API เฉพาะส่วนที่จำเป็น ทำให้แอปพลิเคชันทำงานได้ลื่นไหลเหมือน Single Page Application (SPA) ในบางส่วน

How to Run

  1. ติดตั้ง Python และ FastAPI:
pip install fastapi uvicorn nltk
  1. รัน Backend Server:
python main.py  # หรือ uvicorn api:app --reload
  1. เปิดไฟล์ index.html บนเบราว์เซอร์เพื่อเริ่มใช้งาน

About

Full-stack Hotel Reservation System built with FastAPI and Vanilla JavaScript. Features complex booking logic with date-overlap prevention, role-based access control (User/Admin), and dynamic search filtering.

Resources

Stars

1 star

Watchers

1 watching

Forks

Used by

Contributors

Languages