Air Discount Scheme

About

Generates discount codes that can be used for booking domestic flights online.

There are certain precondition to be eligible for a discount. They are:

  • The person's legal domicile needs to be in a predefined set of towns outside

    the capital (We fetch postal codes from Þjóðskrá to validate if user is

    eligible).

URLs

API

The API is used by airlines to verify the discount code validity and get basic booking info about the user.

The airlines that have access to this api are Icelandair, Ernir and Norlandair. Historically some flights were booked for Norlandair through Icelandair, those flights are marked with the Icelandair airline but have a cooperation field with Norlandair.

Swagger API

yarn start air-discount-scheme-api

Backend

The admin frontend has a view over the bookings that have been registered in the system. This is mainly for Vegagerðin.

Admin

yarn start air-discount-scheme-backend

Web

The user frontend has information about the initiative, legal terms and a way for users to get their discount codes.

Dev

yarn start air-discount-scheme-web

Integrations

  • Þjóðskrá: To be able to verify the persons legal domicile,

    give the airlines basic information about the person and fetch a persons

    relations to show the discount codes for related children.

Development

To get started developing this project, go ahead and:

  1. Fetch the environment secrets:

yarn get-secrets air-discount-scheme --reset
  1. Start the resources with docker-compose:

docker-compose -f apps/air-discount-scheme/backend/docker-compose.base.yml -f apps/air-discount-scheme/backend/docker-compose.dev.yml up
  1. Start the front end:

yarn start air-discount-scheme-web
  1. Start the graphql api:

yarn start air-discount-scheme-api
  1. Start the backend api:

yarn start air-discount-scheme-backend

Navigate to localhost:4200 for the website or localhost:4248/api/swagger/ for the airline api.

Admin

To access the Admin UI, you'll need to add your Icelandic National ID to the comma separated environment variable DEVELOPERS (.env.secret) and restart the api.

export DEVELOPERS=1234567890

Shortcuts

Because of the short timeline this assignment had, there were few shortcuts taken that can be improved upon:

  • The authentication is pretty primitive, the IDP is still in development at

    the time of this writing so we needed to use static api keys.

  • The deployment pipeline is outside of the islandis main pipeline.

  • The graphql api is separate of the main graphql api of islandis.

Project owner

Code owners and maintainers