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.
- Amazon EC2 (Elastic Compute Cloud) provides general server instances used to host services like the internal API or Jenkins.
- Amazon RDS (Relational Database Store) provides the PostgreSQL database server instances.
- Amazon S3 (Simple Storage Service) provides file storage for assets such as images, build artifacts, and configuration files.
- Amazon SES (Simple Email Service) provides automated e-mail functionality. This is used to forward data from contact forms processed by the internal API to a collection address.
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.