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.