/
Proposed Architecture

Proposed Architecture

Overview

Migrating away from the legacy architecture of having json objects implemented into the front end source code as well as all image assets, we are proposing implementing a database to house the data contained within the json files and a REST API to transform and enable access to that data in an ingestible way for front end consumption.

API Design

NodeJS runtime environment was chosen for its high throughput capacity as well as the fact that it uses the JavaScript programming language which will enable a single language to be used in both the front end and back end of our applications. Having the same language in both the front end and back end lowers the barrier of entry for developers to work in both specializations.

ExpressJS framework was chosen because it is lightweight and has a very large community due to it’s popularity and age. Because ExpressJS is mostly unopinionated we have chosen to create a template following the the standard REST design patterns, MVC project structure and SOLID principals.

Database Engine

PostgreSQL databasing engine was chosen because it is open source and an enterprise ready sql engine. The data structures observed should be capable of being represented in a SQL table structure, which should provide easy maintenance, strict typing and sufficient retrieval speeds.

Asset Image Storage

Azure blob was chosen in order to keep infrastructure in the Azure environment and the speed, safety, and cost efficiency that web storage services provide. Web storage services are low cost and optimized for safety and speed enabling fast development with very little start up costs.

Related content

Current Architecture
Current Architecture
Read with this
Image Architecture
Image Architecture
More like this
DSTs Architecture Preliminary Design
DSTs Architecture Preliminary Design
Read with this
Species Selector Release Notes
Species Selector Release Notes
More like this
Initial state and reducer notes
Initial state and reducer notes
Read with this
Image upload page (App1)
Image upload page (App1)
More like this