A fullstack Airbnb clone featuring a Spring Boot 3 backend, Angular 17 frontend, PostgreSQL, PrimeNG, and Auth0 (OAuth2) authentication. The project replicates core Airbnb functionality including property search, booking, and landlord management.
- NodeJS 20.11 LTS
- Angular CLI v17
- Java 21 (JDK)
- PostgreSQL
- IDE: VSCode, IntelliJ, or any preferred IDE
The project is organized as follows:
airbnb-clone/
├─ frontend/ # Angular 17 frontend
├─ backend/ # Spring Boot 3 backend
├─ .gitignore
└─ README.md
To get started, clone the repository and navigate into the project folder:
git clone <YOUR_FULLSTACK_REPO_URL>
cd airbnb-clone
Navigate to the backend folder and install dependencies using Maven Wrapper:
cd backend
./mvnw clean install
Launch the backend server:
./mvnw spring-boot:run -Dspring-boot.run.arguments="--AUTH0_CLIENT_ID=<client-id> --AUTH0_CLIENT_SECRET=<client-secret>"
You can also run the backend from IntelliJ by setting the Auth0 environment variables and running the Spring Boot application.
Navigate to the frontend folder, install dependencies, and start the development server:
cd ../frontend
npm install
ng serve
Open your browser at http://localhost:4200 to view the application. The frontend automatically reloads when you change any source files.
To build the frontend for production:
ng build
Build artifacts are stored in the dist/ directory. To build the backend for deployment:
./mvnw clean package
The Spring Boot JAR file will be generated in backend/target/.
Ensure PostgreSQL is running and properly configured for the backend application. Replace <client-id> and <client-secret> with your Auth0 credentials to enable authentication. This project is intended for learning, demonstration, and portfolio purposes. Both frontend and backend folders contain .gitignore-safe files; unnecessary build artifacts and node modules are ignored.
This project is open-source and available for personal and educational use.