/flight-tracker

Demo service for tracking flight paths among complicated routes.

Primary LanguageGo

Flight Path Tracker

Overview

There are over 100,000 flights a day, with millions of people and cargo being transferred around the world. With so many people and different carrier/agency groups, it can be hard to track where a person might be. In order to determine the flight path of a person, we must sort through all of their flight records.

Examples:

  • [["SFO", "EWR"]] => ["SFO", "EWR"]
  • [["ATL", "EWR"], ["SFO", "ATL"]] => ["SFO", "EWR"]
  • [["IND", "EWR"], ["SFO", "ATL"], ["GSO", "IND"], ["ATL", "GSO"]] => ["SFO", "EWR"]

Specifications: Your microservice must listen on port 8080 and expose the flight path tracker under the /calculate endpoint.

Getting Started

Local Setup

Step 0. Install pre-commit:

pip install pre-commit

# For macOS users.
brew install pre-commit

Then run pre-commit install to setup git hook scripts. Used hooks can be found here.


NOTE

pre-commit aids in running checks (end of file fixing, markdown linting, go linting, runs go tests, json validation, etc.) before you perform your git commits.


Step 1. Install external tooling (golangci-lint, etc.):

make install

Step 2. Setup project for local testing (code lint, runs tests, builds all needed binaries):

make all

NOTE

All binaries can be found in <project_root>/bin directory. Use make clean to delete old binaries.


Step 3. Run server:

make run-server

Step 4. Run following example query

curl -X 'POST' \
  'http://localhost:8080/calculate' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '[
  [
    "A","B"
  ],
  [
    "B","C"
  ]
]'

NOTE

Check Makefile for other useful commands.


Docker-compose Setup

Step 1. Run docker-compose to build and run the application as a Docker container:

docker-compose up -d

API Specification

@Description Trace start and end airport given a list of flight routes.

POST /calculate

Content-Type: application/json
Accept: application/json

License

MIT