
Take a tour of the completed full stack airline booking app, showing flight search, login-protected bookings, profile management, passenger details, and admin/pilot roles with flight and ticket management.
Explore the design overview of a full stack airline booking app, including the home screen, flight search, booking, and profile, plus data flow design and key backend entities.
Create a spring boot back-end project using start.spring.io with maven and java 21, add web, jpa, lombok, validation, security, templates, mail, and database drivers, then open in IntelliJ.
Add external dependencies to the Maven project, including JSON Web Token for authentication and model mapper for conversion, then configure implementation and api dependencies and synchronize downloads.
Connects the application to a database by configuring the data source and credentials in application.properties, creates the flights database, and runs the app on port 8082 to verify startup.
Structure a Java Spring Boot app by creating and organizing packages such as config, controller, dtos, entities, enums, exception, repo, security, and services to keep code modular and maintainable.
Configure a model mapper bean to convert between entity and dto objects, enabling file matching, private field access, and standard matching strategy for a single globally available instance.
Define enums for country, city, flight status, booking status, and passenger type to structure airline data with examples from Nigeria, USA, UK and cities like Lagos, Abuja, Miami, Dallas, London.
Create a role entity annotated for JPA persistence with an auto generated id and a unique name, mapped to the roles table, and provide a corresponding role dto.
Create a user entity and dto for a full stack airline booking app, including id, name, email, phone, password handling, email verified, oauth provider id, roles, bookings, and timestamps.
Define the airport entity and dto to capture name, city, country, and a unique IATA code in airports table. Enforce not null validations and string enums with three-character IATA constraint.
Create a flight entity and a flight DTO, modeling flight number, status, departure and arrival airports, times, base price, and relationships: many-to-one pilot and one-to-many bookings, with mappings and constraints.
Develop the booking entity and dto, detailing id, booking reference, user and flight relations, booking date, status enum, and passengers, with cascade rules and related dto classes.
Define passenger entity with name, last name, passport number, passenger type enum, seat number, and special requests, linked to booking via booking_id; create a passenger DTO with not blank validations.
Define and persist an email notification entity to track system emails, including subject, recipient email, body as a LOB, booking reference, sent at, is_html, and a many-to-one booking relationship.
Create registration and login dtos with fields name, email, password, phone number, and optional roles; implement validations and a login response with token and user data.
Define a create flight request data transfer object to capture flight number, departure and arrival IATA codes, times, price, status, and pilot id with not null and not blank validations.
Create a booking request dto with flight id and a passengers list, enforce not null validation, and a generic response dto with Jackson including non-null fields and builder pattern.
Create role and user repositories by extending JPA repository with long keys, and implement find by name, find by email, and a custom query to fetch users by rule name.
Develop and extend JPA repositories for airports and flights, including find by IATA code, check flight number existence, and search flights by departure and arrival codes, status, and date.
Create and configure booking, passenger, and email notification repositories as JPA interfaces, including a find by user id method ordered by id desc, then build and run to auto-create tables.
Build a global exception handler in a Spring Boot app by creating not found and bad request exceptions, using controller advice to return standardized DTO responses.
Implement a custom access denied handler and custom authentication entry points to intercept authentication errors before the controller, returning JSON errors with 403 or 401 status.
Implement a security user class that implements security user details, map user roles to authorities, and supply password, email as username, and active status from the user entity.
Implement a custom user detail service to convert your user entity into security user details, loading by email via findByEmail, throwing not found when missing, and building the auth user.
Develop a Java, Spring Boot JWT utility to generate and validate tokens using a secret key, set 30-day expiration, extract usernames, and verify token validity.
Implement a jwt filter intercepting requests, extracting bearer tokens from the auth header, validating them, loading user details, and setting the spring security context with authentication entry point for errors.
Implement a security filter chain with http security to permit api airports and flights, require authentication for other routes, use JWT with stateless sessions, and configure bcrypt password encoding.
Configure cors in course security by creating a course config class, implementing web mvc configure, and registering mappings with registry.addMapping for get, post, put, delete methods and allow origins.
Set up email delivery for the airline booking app using smtp.gmail.com on port 587, configure username and app password in application.properties with two-factor authentication, to enable welcome and booking emails.
Configure a command line runner to auto-send a test email using java mail sender, build a mime message with a helper, set recipient, subject, and body, and verify delivery.
Create and deploy html email templates for welcome and booking tickets, stored under resources/templates, with dynamic variables like username, login url, booking reference, and flight number.
Implement an email notification service in a Java Spring Boot app that sends booking tickets and welcome emails using a template engine, mail sender, and transactional, asynchronous processing.
implement a role service with create rule, update rule, and get all rows. use model mapper to map rule entities to row DTOs, uppercase names, and return structured responses.
Create a role controller as a rest controller mapped to /api/rows, wiring the row service and route service to handle create, update, and get rows with admin and pilot access.
Run the app, verify the database connection, and use Postman to test the roles API by creating admin, pilot, and customer, adjusting security and performing CRUD on rows.
Develop and implement an auth service with register and login flows, including password encoding, role assignment, email notification, and jwt token generation.
Build an auth controller with /api/auth/register and /api/auth/login endpoints, wiring to an auth service, and handle registration request and login request with corresponding responses.
Demonstrates auth API testing by running the app, using Postman to register users with roles (admin, pilot, customer), log in, and secure endpoints with a bearer token.
Implement users service to fetch current user from the security context, update details via a user DTO, and retrieve pilots and account details with a repository and model mapper.
Create a users controller at /api/users, wire in the user service, implement update accounts and protect the pilots list for admin and pilot access, then expose /me for user details.
Test the users api in a full stack airline booking app by authenticating with a bearer token to access /users/me, /pilots, and update account data.
This isn't just another tutorial; it's a deep dive into building an enterprise-grade application with all the bells and whistles. We'll meticulously craft both the backend with Spring Boot and the dynamic single-page application (SPA) frontend with React, ensuring seamless communication and a rich user experience. From user authentication and authorization to complex booking flows and role-based access, you'll gain hands-on expertise with cutting-edge technologies.
Here's what you will master in this course:
Robust Backend Development with Java & Spring Boot:
RESTful API Design & Implementation: Create clean, efficient, and well-structured APIs for handling flights, bookings, users, and more.
Database Management: Seamlessly integrate and interact with MySQL and PostgreSQL databases, mastering data persistence and relationships.
Spring Security & JWT: Implement advanced security features using Spring Security for authentication and authorization, securing your APIs with JSON Web Tokens (JWT) for stateless, secure communication.
User & Role Management: Build robust systems for handling different user types: Customer, Admin, and Pilot roles, each with specific permissions and access levels.
Email Communication: Integrate JavaMailSender to send automated notifications, including custom email templates for booking confirmations, password resets, and more.
Dynamic Frontend Development with React:
Single Page Application (SPA) Architecture: Learn to build a highly responsive and interactive user interface using React.
State Management: Effectively manage complex application state, ensuring a smooth user experience as data flows through the app.
API Integration: Connect your React frontend to the Spring Boot backend, making asynchronous requests and handling responses efficiently.
Component-Based Design: Develop reusable and modular React components for a scalable and maintainable codebase.
Comprehensive UI Features: Implement essential functionalities for searching flights, selecting seats, managing bookings, and user profiles.
Core Application Features You Will Build:
User Registration & Login (with JWT authentication)
Role-based Authorization (Customer, Admin, Pilot)
Flight Search & Filtering (with various criteria)
Seat Selection & Reservation
Booking Creation & Management
User Profile Management
Admin Dashboards for flight and user management
Pilot-specific functionalities
Beyond the Code:
Gain a detailed explanation of architectural patterns and best practices for full-stack development.
Understand the entire development lifecycle from backend API creation to frontend UI implementation and data flow.
Learn how to structure your projects for scalability, maintainability, and future growth.
Whether you're an aspiring full-stack developer looking to build your first major project, a backend developer wanting to learn modern frontend, or a frontend developer eager to dive into robust backend systems, this course provides the practical, hands-on experience you need. Enroll now and start building your impressive Airline Booking App!