Project Architecture Overview - OpenDataEnterprise/sdg-nri-website GitHub Wiki

The SDG National Reporting Initiative website utilizes several technical tools, services, and platforms. This section is provides an overview of the different parts of the project's infrastructure.

The following is a quick overview diagram.

Front End

SDG National Reporting Initiative Website

The website is built using Jekyll. All of the styles are compiled using Sass and written in SCSS (Sassy CSS) syntax. The Vue.js JavaScript framework is used to many of the dynamic components and behaviors on the site. Webpack is used during the application build process to prepare scripts and stylesheets for deployment.

Forestry

Forestry is a static CMS (content management system) used to provide a user-friendly administrative dashboard for editing website content directly. This is so that editors do not necessarily need to have expertise using Git or navigating the directory structure in Jekyll in order to manage web content.

Back End

PostgreSQL

PostgreSQL is the DBMS (database management system) used to manage the data storage needs for this project.

SDG National Reporting Initiative API

The internal API (application programming interface) that powers the website is built in Node.js using the Express framework. The internal API is used to provide controlled data exposure and communication with the PostgreSQL database.

Forest

Forest is used to provide an administrative dashboard for managing data within the PostgreSQL database.

Website Hosting

Netlify is used to host the website and its assets, as well as handle the automated build and deployment process for the website.

For more detailed information, please see Netlify Overview.

AWS (Amazon Web Services)

A number of services from AWS are utilized to provide the necessary infrastructure for the website.

For more detailed information, please see AWS Setup.

Provisioning

Ansible is used to automate server provisioning. This eliminates the manual effort required to replicate or restore technical infrastructure.

CI/CD and Automated Task Running

Jenkins is a CI/CD (continuous integration/continuous deployment) server primarily used to run automatically triggered application builds and deployments. However, Jenkins is very flexible and can be extended to automate the running of many types of tasks.