Skip to content

Latest commit

 

History

History
45 lines (28 loc) · 3.14 KB

README.md

File metadata and controls

45 lines (28 loc) · 3.14 KB

Flight Guesser

Site-Up Build-Status Last-Commit


Overview

When you see an aircraft overhead, you may use the flight-guesser application to guess the destination of the aircraft. You will score points based on accuracy. Data is sourced from FlightRadar24 using FlightRadarAPI.


Architecture

Frontend

The frontend is written using React with the code written in TypeScript. I have used the Grommet component library for UI elements as well as icons. The frontend is hosted from an AWS S3 bucket using the static website hosting functionality. This service does not support HTTPS connections, so I have used an AWS Cloudfront distribution along with AWS's certificate manager to provide this functionality.

Backend

The backend is written in Python 3.9 and is deployed as a set of AWS Lambda functions. The deployment is handled using Serverless Framework along with the Serverless Python Requirements and Serverless IAM Roles Per Function plugins. The Serverless Python Requirements plugin is used to create a Lambda layer with the required Pip dependencies which is driven from the backend Pipfile, and the Serverless IAM Roles Per Function plugin is used to conveniently control IAM permissions on a per-function basis. The backend uses a DynamoDB table to handle multiplayer functionality.

Pipelines

When a PR is created or updated, a CodeBuild event is triggered which will deploy the project into a development environment, and a second event which will run the unit and integration tests. A merge into the main branch will trigger an event which will deploy the project into the production environment.

For this project I have decided to use one of AWS's default build images, since I do not have the time to consistently maintain my own. As a result, the dependencies are installed each time a build is run which is not ideal, but this works well enough for now.

The pipelines will build the required DynamoDB table using Terraform, deploy the backend using Serverless Framework, and then finally build the frontend and copy the files to AWS S3.


To Do

  • Allow aircraft model guesses
  • Retrieve additional flight data if data saver is turned off
  • Refactoring and tidying
  • Write and update tests
  • Update Documentation