- 🤖 Introduction
- ⚙️ Tech Stack
- 🔋 Features
- 🤸 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 Huy Hoàng |
Huỳnh Chiếm Phương Nguyên (Leader) |
Phạm Thị Anh Đào |
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.