Skip to content

dwrik/jetsetgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JetSetGo API

Overview

JetSetGo is a Spring based microservices project using technologies like Spring Cloud (Eureka, Config, Gateway, Stream), Spring Data JPA, JWT etc. among other technologies. It simulates the backend of a flight booking system and was built with the primary focus of implementing a full fledged microservices architecture.

The API allows users to:

  • register and login
  • fetch flight details based on location and date
  • book seats, fetch bookings and delete bookings
  • checkin

Documentation

Postman generated API Documentation can be found here.

Services

The project consists of 7 different services that interact with each other using internal REST calls or Messaging. Each service handles the responsibilities of it's own domain. Here is the detailed breakdown for each service:

Service Responsibility
Eureka Service registration and discovery
Gateway Routing and Authentication
Config Hosts configuration properties for each of the services
Auth User registration and login
Flight Fetch flight details, reserve seats and vacate seats on a flight
Booking Fetch, create and delete bookings
Checkin Checkin functionality

Messaging

The application uses Spring Cloud Stream along with RabbitMQ for messaging. The following message flows are used in the application:

  • Checkin subscribes to Booking for new bookings that are yet to checkin
  • Booking subscribes to Checkin for updates to checkin status & seat number
  • Flight and Checkin subscribes to Booking for cancellation updates

Todo

  • Dockerizing the application, including the database and message binder.
  • Deploying the application to the web.
  • Maybe use Kafka instead of RabbitMQ.

Related Links

  • JetSetGo frontend built with Next.js can be found here.
  • JetSetGo config repository can be found here.

Releases

No releases published

Packages

No packages published

Languages