Skip to content
This repository has been archived by the owner on Mar 3, 2021. It is now read-only.
/ docs Public archive

oveview documentation on our different repositories

Notifications You must be signed in to change notification settings

CommitChange/docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

CommitChange Platform Overview

Web Services, Applications, and Libraries

CommitChange.com

This application comprises the main CommitChange product for nonprofits, all of the frontend of commitchange.com, and much of our backend business logic with Postgresql and Ruby.

This repo is actively maintained and iterated. We have no plans to upgrade to Rails 4 or 5 and are instead transitioning into a more modular, microservices-oriented approach by moving the business logic into separate applications. We are migrating the Rails asset pipeline into a Node build process using Browserify and PostCSS.

API

This is a JSON API gateway using Ruby and Sinatra that interfaces with our Postgresql database. We are actively moving our database business logic into this application (or into other microservices below). It uses cross-site authentications with JWT tokens and can serve any web or mobile app.

The API uses a GraphQL/Postgrest inspired generalized endpoint system with less nesting. It uses a Ruby module structure to generate Postgresql queries for different endpoints and has the ability to run many SQL queries in parallel for one request.

API Documentation and User Interface

Automatically generated documentation for every API endpoint. These docs get generated dynamically by the frontend making OPTIONS requests to the API, discovering all its endpoints, and formatting the JSON documentation from those requests. You can login and see the endpoints available for your account type (by default it shows only public endpoints).

The documentation site also has the ability to login and construct actual API requests using a GUI. This is still experimental and may prove very useful for support and admin.

API Ruby Gem

This is a Ruby Gem wrapper around the API for easily using the API endpoints from the backends of other Ruby applications.

Javascript SDK

This is an embedable javascript file for third-party websites (such as Wordpress and Squarespace) that allows people to insert and control CommitChange fundraising widgets like the donate button, campaign cards, and supporter forms.

Machine Learning App

This is a work-in-progress Python application using Keras to train machine learning models using large CSV datasets from our API.

Reporting Database (Metabase)

A business intelligence reporting app for showing platform activity, sales performance, creating custom exports for clients, etc etc.

File Upload Server

This is an Amazon S3 file upload microservice with image resizing capabilities that the API gateway and other services can use.

Webhooks Server

This is a microservice (and client to the API) that listens for webhook events from services like Stripe and updates the database correspondingly.

Commons.css

Our base CSS files for our CommitChange-branded web components. This can be installed with npm.

Future Expansion

  • Use Ruby YARD and Javascript ESDoc to add in-code documentation throughout the entire platform.
  • Increase collection of Ruby Gems and NPM modules by extracting discrete functionality out of the apps.
  • Migrate all the commitchange.com frontend to unit-tested, npm-hosted Flimflam components and Postcss modules
  • Migrate commitchange.com to be purely a frontend client to the API gateway.
  • Create a payment Audits server that is an API client and has crons for checking the database on the data, performing regularly scheduled audits, and emailing and results
  • Add Websocket based real-time messaging support for the API for things like campaign activity and metrics

Support and Maintenance

We keep track of dev support tickets here: https://github.com/commitchange/tix/issues. We spend on average 10 dev-hours per week on support.

About

oveview documentation on our different repositories

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published