Skip to content

Technology Solution Proposal

Dan Melton edited this page Apr 7, 2019 · 3 revisions

Technology Solution Proposal

CIVIC Software Foundation Proposal for the Open and Accountable Elections Program (OAEP) Application

Outline

  • DNS Solution
  • Hosting
  • Database
  • Database Cache
  • File Storage
  • Email System
  • Bug Reporting
  • Backend App
  • Frontend App
  • Version Control

Virtual Private Cloud

The Open Elections project resources are located in their own separate virtual private cloud to isolate the instances.

The VPC is tagged openelections.

DNS Solution

CSF will buy a short domain name, and then forward the name to a subdomain on the civicsoftwarefoundation.org. Hosting CIVIC Software Foundation will be hosting the entirety of the OAEP Application on Amazon Web Services using its EC2 Container Solutions.

Database

The OAEP Application is going to use a Postgresql database with the PostGIS spatial database extender. CSF will host the Postgresql solution in AWS Relational Database Service.

Database Cache

OAEP will use Redis, an in-memory data structure store, used as a database, cache and message broker. CSF will host Redis using the Elasticache solution in AWS.

File Storage

OAEP will use Amazon Web Services S3 for file storage. All files will be version controlled, all documents will be encrypted at rest and backed up (using AWS s3 backup service).

Email System

This project will keep in the AWS ecosystem and use the Simple Email Service. All emails will come from [email protected]

Bug Reporting

We will use Bugsnap for tracking issues and tracking application stability.

Continuous Integration / Continuous Deployment

We will use Travis CI, integrated with GitHub.

Backend App

The backend will be live in a docker container on AWS EC2. It will be built using a Node REST Framework and use PostgreSQL.

API Endpoint

The API will be written in a CRUD format with a Swagger descriptor

Background Jobs/Cron

The background job system will be written in Node, and hosted in AWS EC2 container service

Frontend App

React using CSF reusable components

Version Control

GitHub