https://github.com/qhaof26/airbnb-be
AirClone: A clone of the Airbnb platform built with Spring Boot backend.
https://github.com/qhaof26/airbnb-be
cloudinary docker email java jwt oauth2 postgis postgresql redis spring-data-jpa spring-security springboot swagger-ui websocket
Last synced: about 1 year ago
JSON representation
AirClone: A clone of the Airbnb platform built with Spring Boot backend.
- Host: GitHub
- URL: https://github.com/qhaof26/airbnb-be
- Owner: qhaof26
- Created: 2024-12-13T03:14:21.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-16T07:26:42.000Z (about 1 year ago)
- Last Synced: 2025-06-16T08:39:47.801Z (about 1 year ago)
- Topics: cloudinary, docker, email, java, jwt, oauth2, postgis, postgresql, redis, spring-data-jpa, spring-security, springboot, swagger-ui, websocket
- Language: Java
- Homepage: https://hub.docker.com/r/qhaofdev/airclone-app/tags
- Size: 304 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
AirClone
Backend system provides restful API for web.
[Sonarcloud](https://sonarcloud.io/project/overview?id=qhaof26_airbnb-be) |
[Docker Hub](https://hub.docker.com/r/qhaofdev/airclone-app)
## Introduction
Developed a full-stack web application inspired by Airbnb using Spring Boot backend with Angular frontend.
---
## Tech Stack










---
## Prerequisites
* Java Development Kit (`JDK`) 17 or higher installed.
* Build tool (e.g., `Maven`) installed.
* Database system `PostgreSQL` set up and configured.
* `Hibernate`, `JPA`.
* Authentication with `JWT` token.
* Login with Google `OAuth2`.
* Restfull API.
* Using `Redis` for data caching, management invalid token.
* Upload file with Cloudinary.
* OpenAPI for API documentation.
* `Docker` with docker-compose build.
---
## AirClone Features
- Authentication & Authorization :
- Implemented JWT-based authentication.
- Login with Google OAuth2.
- Role-based access control (GUEST, HOST, ADMIN).
- Redis-based token blacklisting for secure logout
- Core Features :
- Booking system.
- Geospatial search for nearby properties.
- Search and filter functionalities.
- Listing management.
- User profile management.
- Technical Highlights :
- Backend: Spring Boot, Spring Security, JPA/Hibernate
- Database: PostgreSQL
- Caching: Redis for performance optimization
- Email Service: SMTP integration for user verification
- Cloud Storage: Cloudinary for image management
- Performance Optimizations :
- Implemented caching strategies using Redis.
- Efficient data pagination.
- Optimized database queries.
- RESTful API design.
This project demonstrates proficiency in modern web development technologies, security implementation, and scalable architecture design.
---
## Getting Started
### Quick start with Docker
1. Clone the repository:
```
git clone https://github.com/yourusername/airclone.git
cd airclone
```
2. Create a .env file in the project root with the following variables:
```text
# Database
DBMS_USERNAME=postgres
DBMS_PASSWORD=123456
# JWT
JWT_SIGNERKEY=your_secure_jwt_key_here
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Email
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_email_password
# Cloudinary
CLOUDINARY_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
# Admin
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
ADMIN_EMAIL=admin@example.com
```
3. Run the application using Docker Compose:
```
docker-compose up -d
```
4. The application will be available at:
- API: http://localhost:8080
- API Documentation: http://localhost:8080/api-docs
### Using Docker hub
If you don't want to build the image yourself, you can use the pre-built image from Docker Hub:
```
docker pull qhaofdev/airclone-app
```
## API Documentation
Once the application is running, you can access the API documentation at:
- http://localhost:8080/api-docs
The documentation provides detailed information about all available endpoints, request/response formats, and authentication requirements.
## Contact
For any questions or suggestions, please contact:
- Email: qhaofdev@gmail.com
- GitHub: https://github.com/qhaof26