864carson / BAM_TECH_EXERCISE

This is the technical exercise that forms the basis of the technical interview.
0 stars 0 forks source link

Stargate - Astronaut Career Tracking System (ACTS)

Overview

This application maintains a log of all people that has served as Astronauts along with a history of their duties.

The application consists of a RESTful API and a single page application (SPA). A SQLite database is used for development purposes.

Dictionary

Acronym / Term Definition
SPA Single page application
UI User interface
UX User experience

Architectural Overview

The following is a high-level overview of the architecture for this simple application.

flowchart LR;
  ui[SPA] <--> api[RESTful API] <--> DB

RESTful API

The RESTful API is written using C# .NET 8.0.303 and has 6 endpoints to service the data creation, modification, and retrieval processes.

Astronaut (Person) Endpoints

Method Endpoint Uri Purpose
GET /Person Returns all Astronaut names and current duty records.
GET /Person/{name} Retrieve a single Astronaut's current duty record.
POST /Person Creates a new Astronaut.
PUT /Person/{name} Updates an Astronaut's name.

Astronaut Duty Record Endpoints

Method Endpoint Uri Purpose
GET /AstronautDuty{name} Retrieves all duty records for a single Astronaut.
POST /AstronautDuty Creates a new Duty Record for a single Astronaut.

Single Page Application (SPA)

The SPA was written using Angular 18.1.1 and allows the user to add Astronauts and Astronaut Duty records.

Limitations

The SPA is only supports creating and reading Astronaut data, but no editing Astronaut names. This is the only variance between the functionality offered by the API and SPA.

Changes

Thoughts

The following are thoughts I have about this application and they come from the angle of how I would prefer to do or structure things.

More To Do

There is plenty more work to do on this application to make it production quality. Following is an incomplete list (in no particular order):

Unit Test Coverage

The unit testing coverage requirement was met for the API. The screenshot below shows a 60.9% branch coverage.

Code Coverage

Compiler Warnings

The following compiler warnings existed on the first build before any changes were made: Initial Build Warning