This is a monolithic full-stack flight reservation system built using core Java technologies.
It simulates the booking and management workflow of an airline system, designed with clean separation between presentation, business, and persistence layers.
π‘ This project was designed intuitively without formal knowledge of MVC, but later recognized as a well-structured Monolithic MVC architecture.
It reflects real-world thinking in a beginner-friendly format.
- β Role-based login: User, Manager, and Admin
- β Polymorphism used to handle role-based services dynamically
- β
Clean 3-layered architecture:
- Controller β Servlets
- Service Layer β Interfaces and implementations
- DAO Layer β Responsible for DB communication using JDBC and Hibernate
- β Hibernate ORM integration for booking persistence
- β Booking flow with session tracking
- β Servlet forwarding, JSP responses, and clean form submission handling
- β Docx file generation for booking confirmation (Apache POI)
Air-go-Backend-Project/ βββ src/ β βββ main/ β βββ java/ β β βββ air/go/ β β βββ files/ β β β βββ BookingLogs.java β β β βββ CreateDocument.java β β βββ base/ β β βββ dao/ β β βββ services/ β β βββ BookingDetails.java β β βββ Flight.java β β βββ Users.java β β βββ Transactions.java β β βββ package-info.java β βββ resources/ β βββ bookings.json β βββ hibernate.cfg.xml βββ webapp/ β βββ WEB-INF/ β βββ add-flight.jsp β βββ admin.jsp β βββ book-flight.jsp β βββ booking-form.jsp β βββ confirm.jsp β βββ edit-flight.jsp β βββ index.jsp β βββ manager.jsp β βββ payment.jsp β βββ show-aval-flights.jsp
-
files/β Booking document generation using Apache POICreateDocument.java: Exports booking info to DOCXBookingLogs.java: (Planned) To log booking activities
-
base/β Main logic + modelsdao/: All database operation classesservices/: Interfaces and implementations for Admin/User/Manager logicBookingDetails.java: Holds booking data (flight, user, seat, etc.)Flight.java: Holds flight info (source, destination, etc.)Users.java: Holds user info (login, role, etc.)Transactions.java: Holds payment/transaction records
-
resources/β Config and mock datahibernate.cfg.xml: Hibernate DB connection configbookings.json: Sample data for testing
-
webapp/β JSP front-end and routingadd-flight.jsp: Admin adds new flightsadmin.jsp: Admin dashboardbook-flight.jsp: Final user booking confirmationbooking-form.jsp: User enters booking infoconfirm.jsp: Confirmation pageedit-flight.jsp: Edit flights (Admin/Manager)index.jsp: Home or login pagemanager.jsp: Manager dashboardpayment.jsp: Payment input formshow-aval-flights.jsp: Displays all available flights
- Java (JDK 17)
- JSP + Servlets (Apache Tomcat 11)
- JDBC + Hibernate ORM
- Oracle DB (test DB)
- Apache POI (for docx export)
- JUnit (testing layer being added) ( in - progress)
- MVC Architecture (Monolithic, hand-built)
-
Clone this repo:
git clone https://github.com/GoluCode/Air-go-Backend-Project -
Open in Eclipse as a Dynamic Web Project
-
Set up Tomcat (version 11 preferred)
-
Configure DB credentials in
hibernate.cfg.xmland/or JDBC connection file -
Import the provided
.sqlschema file if available (coming soon) -
Run project β Start from
login.jsp
- REST API layer (for front-end independence)
- JUnit tests for services and DAO (in-progress)
- Real-time seat availability check
- One-to-Many + Many-to-One Hibernate relationships
- Centralized error handling + logging
- Admin dashboard for analytics and reports
This project was designed by intuition before learning about formal software architecture patterns.
Only later did I discover that my structure closely matches real-world Monolithic MVC.
My focus was on:
- Clean separation of responsibilities
- Scalable role management using polymorphism
- Future support for testing and modularization
I believe this foundation can be evolved into a microservice or RESTful API design over time.
Please Sheare your ideas and suggest For improvement of this project this would help me a lot.
This project is open for educational purposes. Use it, break it, improve it!
Shyam Sunder Roy
Aspiring backend engineer who loves to build scalable, testable systems from scratch.