A comprehensive full-stack web application designed for booking accommodations and rooms. The project consists of a backend built with Java/Spring Boot and a frontend developed using the Angular framework. The entire system is fully containerized using Docker.
- Language: Java
- Framework: Spring Boot
- Database: PostgreSQL
- Security: Spring Security + JWT (JSON Web Token)
- Build Tool: Maven
- Framework: Angular
- Language: TypeScript
- Styles: SCSS
- Tools: ESLint, Prettier
- Docker & Docker Compose (for easy setup and execution of the database and application)
The system supports three main user roles:
- Search for properties based on availability and specific criteria.
- View property details (photo gallery, amenities, reviews).
- Room booking and payment process.
- Manage personal profile and view booking history.
- Leave ratings and reviews after a completed stay.
- Add and manage own accommodation properties.
- Manage rooms (add, edit, set availability).
- Review bookings made by guests.
- Dashboard with summaries and statistics.
- Verify newly added properties.
- Review and resolve user reports and complaints.
- Manage users (e.g., block/ban accounts).
- Access advanced platform statistics.
βββ booked.backend/ # API source code (Spring Boot)
β βββ src/main/java/ # Controllers, Services, Models, Repositories, Security
β βββ src/main/resources# Configuration files (application.yml, SQL scripts)
β βββ Dockerfile # Docker image configuration for the backend
β βββ pom.xml # Maven dependencies
β
βββ booked-frontend/ # User interface source code (Angular)
β βββ src/app/ # Components, Services, Guards, Interceptors, Interfaces
β βββ public/ # Static assets (e.g., favicon)
β βββ Dockerfile # Docker image configuration for the frontend
β βββ package.json # NPM dependencies
β
βββ docker-compose.yml # Multi-container environment configuration
The fastest way to run the entire application (Database + Backend + Frontend) is by using Docker.
- Ensure you have Docker installed and running.
- Navigate to the root folder of the project.
- Run the following command:
docker-compose up -d --build - The application should now be available at:
- Frontend:
http://localhost:4200 - Backend API:
http://localhost:8080
- Frontend:
Database:
Make sure you have a local instance of PostgreSQL running and update the credentials in the booked.backend/src/main/resources/application.yml file.
Backend (Spring Boot):
- Navigate to the backend folder:
cd booked.backend - Run the application using Maven:
./mvnw spring-boot:run
Frontend (Angular):
- Navigate to the frontend folder:
cd booked-frontend - Install dependencies:
npm install - Start the development server:
npm start