Air Travel Service Web Application

A full-stack distributed web application that allows users to search, book, and manage flights with authentication, REST APIs, and persistent data storage.

Technologies Used: Java, Spring Boot, REST APIs, HTML5, CSS3, JavaScript, H2 Database, JPA, XML, JSON

The Air Travel Service Web Application is a browser-based distributed system designed to simulate a real-world flight booking platform. It integrates frontend and backend technologies to provide a seamless user experience while demonstrating key software engineering concepts such as RESTful communication, authentication, and database persistence.

Users can register, log in, search for flights, book flights, and view their personal booking history through a dynamic interface.

Key Features:

  • User authentication with XML-based registration and login

  • Flight search using RESTful APIs

  • Secure flight booking for authenticated users

  • “My Bookings” view with user-specific data

  • Dynamic UI updates using JavaScript (Fetch API)

  • Persistent booking storage using H2 database

  • Conditional UI rendering based on authentication state

Architecture:

This application follows a distributed architecture with clear separation of concerns:

Frontend

  • Built with HTML5, CSS, and JavaScript

  • Handles user interaction, modals, and dynamic content rendering

Backend (Spring Boot)

  • REST controllers manage flight search and booking endpoints

  • Service layer handles business logic

  • Repository layer manages database interactions via JPA

Authentication Service

  • Separate XML-based system for user credentials

  • Communicates with the main app via HTTP requests

Database

  • H2 file-based database for persistent booking storage

  • Relational mapping between bookings and flights

Data Flow

  • JSON used for API communication

  • XML used for authentication storage

Screenshots / Demo

Challenges & Solutions

  • Implementing authentication using a separate XML-based service

  • Managing communication between distributed components

  • Debugging issues with API calls and authentication headers

  • Ensing database persistence across application restarts

  • Handling UI state changes based on login/logout behavior

  • Coordinating multiple data formats (XML and JSON)

What I Learned

  • Gained hands-on experience building a full-stack distributed application

  • Improved understanding of RESTful API design and integration

  • Learned how to implement authentication and authorization flows

  • Developed skills in database modeling and persistence using JPA

  • Strengthened debugging skills across frontend and backend systems

  • Understood how different technologies interact in real-world applications

Future Improvements

  • Implement JWT-based authentication instead of Basic Auth

  • Migrate from H2 to PostgreSQL or MySQL

  • Deploy the application to a cloud platform (AWS or Azure)

  • Enhance UI with a modern frontend framework (React)

  • Add booking cancellation and user profile features

  • Improve error handling and validation across services

Links

Github