View the project example diagram on Pinterest
- Project Overview
- Technologies Used
- Features
- System Architecture
- Database Schema
- Installation
- Usage
- API Documentation
- Future Enhancements
- Contributing
The Flight Reservation System is a web-based application developed to facilitate flight booking, management, and payment functionalities for users, while providing administrators the ability to manage flights, airports, and schedules. The project is built using modern technologies, with separate services for users and admins.
Users can search for available flights, book tickets, and make secure payments. Administrators can manage flight details, monitor bookings, and perform CRUD operations on airports and flights. The system includes features like PDF ticket generation, real-time email/SMS notifications, and API documentation using OpenAPI.
- React.js
- HTML, CSS, Bootstrap
- Java with Spring Boot (User service)
- ASP.NET Core (Admin service)
- Hibernate (Java ORM)
- MySQL
- JWT for secure user authentication
- GitHub for version control
- Docker for containerization
- OpenAPI (Swagger) for API documentation
- User registration, login, and authentication
- Flight search and booking
- View, update, and cancel bookings
- Receive PDF tickets via email after successful booking
- Real-time email and SMS notifications for booking updates
- Secure payments with transaction confirmation
- Admin login for role-based access
- Manage flights: add, update, delete, and view flight details
- Manage airports: add, update, delete, and view airport information
- Monitor and manage user bookings
- Generate reports and view analytics
- PDF ticket generation
- Real-time notifications via email/SMS
- Role-based access control (Users vs Admins)
- API documentation using OpenAPI (Swagger)
The Flight Reservation System is divided into two main backend services:
- Developed using Java (Spring Boot) and responsible for user functionalities like flight booking, user management, and payments.
- Developed using ASP.NET Core to manage admin-related functionalities like flight management, airport operations, and user data handling.
High-level System Design:
- Frontend (React.js): Provides an interactive and responsive user interface.
- Backend (Java, ASP.NET): Handles business logic, REST APIs, and database interactions.
- Database (MySQL): Stores user, flight, booking, and airport data.
- REST APIs: Used for communication between the frontend and backend services.
The main entities in the system are:
- User: Stores user information like user_id, name, email, password, role (User/Admin).
- Flight: Contains flight details like flight_id, departure_time, arrival_time, and airline_name.
- Airport: Contains information about airports, such as airport_code, city, country.
- Booking: Tracks bookings made by users, including booking_id, flight_id, user_id, and status.
- Scheduled Flight: Tracks the availability and scheduling of specific flights.
- Payment: Manages payment details such as payment_id, amount, payment_status.
- Ticket: Contains ticket information post-booking, including ticket_number, seat_number, and class.
- Clone the repository:
git clone https://github.com/your-username/flight-reservation-system.git
- Navigate to the user-service directory.
- Configure the MySQL database in the application.properties file.
- Run the Spring Boot application:
mvn spring-boot:run
- Navigate to the admin-service directory.
- Ensure that ASP.NET Core is installed.
- Run the admin service:
dotnet run
- Navigate to the react-frontend directory.
- Install the required dependencies:
npm install
- Start the React development server:
npm start
- Open the frontend in your browser at http://localhost:3000.
- Users can register, log in, search for flights, and manage their bookings.
- Admins can log in and manage flights, airports, and view user bookings.
- Payment confirmations and PDF tickets will be sent to users via email.
- Get all flights (GET):
/flight/allFlights - Book a flight (POST):
/booking/bookFlight - Admin add airport (POST):
/admin/addAirport
- Implement seat selection during the booking process.
- Integration with third-party payment gateways.
- Add support for multiple languages.
- Introduce loyalty reward programs for frequent flyers.
- Implement real-time flight tracking.
We welcome contributions! Follow these steps to contribute:
- Fork the repository.
- Create a new branch for your feature.
- Make changes and commit your code.
- Create a pull request explaining your changes.