Skip to content

Hoang-Nguyen-Huy/pod-booking-system-server

Repository files navigation


Project Banner
Spring Boot Firebase MySQL Docker Nginx Proxy

FlexiPod

This project was built for the Pod Booking System.
  1. 🤖 Introduction
  2. ⚙️ Tech Stack
  3. 🔋 Features
  4. 🤸 Quick Start

Built with React to handle the user interface, Google Calendar to sync booked schedules, VnPay to process payments, MySQL (serverless) to manage databases, and styled with MUI, FlexiPod is a perfect web app. Its main goal is to provide customers with a more convenient way to book spaces.

FlexiPod was developed by a talented team of five passionate individuals:

Nguyễn Bùi Quốc Huy
Nguyễn Bùi Quốc Huy
Nguyễn Huy Hoàng
Nguyễn Huy Hoàng
Huỳnh Chiếm Phương Nguyên
Huỳnh Chiếm Phương Nguyên (Leader)
Phạm Thị Anh Đào
Phạm Thị Anh Đào
Nguyễn Thanh Trí
Nguyễn Thanh Trí
  • Spring Boot
  • Firebase
  • MySQL
  • Docker
  • Nginx Proxy

👉 Onboarding Flow: Seamless user registration and setup process.

👉 oAuth Using Google: Easy login using Google credentials.

👉 Authorization: Secure access control for different user roles.

👉 View Room Type: View a list of room types.

👉 Book Room: Book available rooms and amenities.

👉 Book Amenities: Book amenities available for the rooms you have reserved.

👉 Send Google Calendar Invite After Successful Payment: Send a Google Calendar invite after confirming payment.

👉 Profile: View account details in the profile screen.

👉 History Booking: Review all rooms booked so far.

👉 Cancel Booking: Cancel room booking.

👉 Manage Order: Create, and update information of order.

👉 Manage Order Amenity: Create, and update information of order amenity.

👉 Manage Building: CRUD with building.

👉 Manage Amenity: CRUD with amenity.

👉 Manage account user: Create, update, and ban accounts in real-time.

👉 Manage assignment: The admin or manager can view and assign a shift for staff at the location.

👉 Responsive on mobile and pc: Optimized for both mobile and pc devices.

and many more, including code architecture and reusability

Follow these steps to set up the project locally on your machine.

Prerequisites

Make sure you have the following installed on your machine:

Cloning the Repository

git clone https://github.com/Hoang-Nguyen-Huy/pod-booking-system-server.git
cd pod-booking-system-server

Set Up Environment Variables

Create a new file named application.yaml in the resources folder of your project and add the following content:

server:
 port: 8080
openapi:
 service:
   api-docs: api-service
   server: http://localhost:8080
   title: API Service
   version: 1.0.0
spring:
 datasource:
   url: "YOUR_DATABASE_URL"
   username: YOUR_DATABASE_USERNAME
   password: YOUR_DATABASE_PASSWORD
 jpa:
   hibernate:
     ddl-auto: update
     naming:
       implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
       physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
   show-sql: true
 mail:
   host: "smtp.gmail.com"
   port: 587
   username: "[email protected]"
   password: "tbzi kxxk wtqk dztk"
   properties:
     mail:
       smtp:
         auth: true
         starttls:
           enable: true
 security:
   oauth2:
     client:
       registration:
         google:
           client-id: "YOUR_CLIENT_ID"
           client-secret: "YOUR_CLIENT_SECRET"
           scope:
             - email
             - profile
jwt:
 JWT_SECRET_ACCESS_TOKEN: "YOUR_JWT_SECRET_ACCESS_TOKEN"
 JWT_SECRET_REFRESH_TOKEN: "YOUR_JWT_SECRET_REFRESH_TOKEN"
google:
 success: "http://localhost:3000/login/oauth?accessToken="
 failure: "http://localhost:3000/login/oauth?message="
vnpay:
 tmn-code: "YOUR_TMN_CODE"
 hash-secret: "YOUR_HASH_SECRET"
 return-url: "http://localhost:3000/order-detail"
 url: "https://sandbox.vnpayment.vn/paymentv2/vpcpay.html"

Replace the placeholder values with your actual credentials. You can send mail for me to get application.yaml for testing.