Skip to content

srvindukuri/FlightStatusTracker

Repository files navigation

Flight Status Tracker

A full-stack flight status aggregation system built as part of an EPAM AI-Assisted Development case study, exploring how GitHub Copilot, Claude AI, and ChatGPT can accelerate real-world software delivery.


What It Does

Flight Status Tracker solves a common integration challenge: multiple flight data providers return the same information in different shapes. This application pulls status data from two providers, normalizes it into a single unified model, applies merge logic to resolve conflicts, and serves the result through a clean REST API and a React frontend.

Rather than tightly coupling business logic to any one provider's contract, the system is designed around a provider abstraction — making it straightforward to swap in real data sources as the project evolves.


How It's Built

Backend — ASP.NET Core 8

The backend follows a layered architecture with clear separation of concerns:

Controller
  └── FlightStatusService
        └── IFlightStatusProvider
              ├── AeroTrackProvider
              └── QuickFlightProvider
                    └── StatusNormalizerService
                          └── Unified FlightStatusResult

Each provider implements a shared interface and returns raw flight data. The StatusNormalizerService translates provider-specific statuses into a consistent format, and the merge logic picks the most recent result using LastUpdatedUtc as the tiebreaker.

Other backend highlights:

  • Dependency Injection throughout, keeping components loosely coupled and testable
  • Global Exception Middleware for consistent error handling across the API
  • Structured Logging for visibility into provider responses and merge decisions
  • Swagger / XML Documentation so the API is self-describing out of the box
  • Unit Tests using xUnit, Moq, and FluentAssertions — covering normalization, merge logic, and service behavior

Frontend — React + TypeScript

A lightweight Vite-powered UI lets you query flight status by flight number and date, and displays the normalized result returned by the API.


Tech Stack

Layer Technology
API ASP.NET Core 8, C#
Testing xUnit, Moq, FluentAssertions
Frontend React, TypeScript, Vite
Docs Swagger

Project Structure

FlightStatus.Api        # ASP.NET Core Web API
FlightStatus.Tests      # Unit test project
flight-status-ui        # React + TypeScript frontend

Getting Started

Backend

dotnet restore
dotnet build
dotnet run

Swagger UI is available at https://localhost:55124/swagger

Frontend

npm install
npm run dev

App runs at http://localhost:3000


API

GET /api/flights/status?flightNumber=AI101&date=2026-06-26
Parameter Description
flightNumber IATA flight number (e.g. AI101)
date Date in YYYY-MM-DD format

Design Decisions & Assumptions

  • Provider stubs are used in place of real integrations — the focus of this case study is architecture and AI-assisted development workflow, not live data.
  • No authentication is required; the API is intentionally open for evaluation purposes.
  • Merge strategy: when providers return conflicting data, the response with the most recent LastUpdatedUtc wins.
  • Provider responses are treated as deterministic for testing purposes.

What's Next

This project is scoped as a case study, but the natural next steps for a production path would be:

  • Integrating real flight data provider APIs
  • Adding Redis caching to reduce provider round-trips
  • Introducing authentication and rate limiting
  • Containerizing with Docker and wiring up a CI/CD pipeline
  • Health check endpoints for monitoring provider availability

AI-Assisted Development Notes

This project was developed with active assistance from GitHub Copilot, Claude AI, and ChatGPT —used to accelerate scaffolding, implementation, testing, and documentation. All generated code was reviewed, refined, and validated before integration. The case study examines how these tools complement a developer's workflow rather than replace judgment.

About

Flight Status Tracker built with ASP.NET Core 8, React, and TypeScript for the EPAM AI-Assisted Development case study.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors