Edit me

Summary

The platform is composed of several components communicating between each others through different channels as sumerized by the following schema.

Main architecture of the platform

Explainations

The core

The core component process all the functional part of the platform

  • user registration
  • creation of a project
  • contribution
  • etc.

It directly stores its data in a PostgreSQL Database and exposes an API whose structure is described with this Swagger page. In order to synchronize users with the database, it also connect to Slack on its Web API when needed. The framework used for this component is Spring Boot.

Events from Slack

The slack-events-catcher component is a small NodeJS project that listen to the Slack Events API for several events :

  • A user joins a Slack Team
  • A user is disabled
  • etc.

When conditions are met, this component call the appropriate endpoint on the core API.

The user interface

Theweb component is the user interface of the platform. It is basically a web client grabbing data and executing functions through the core API. The majority of the resources are stored in cache of web browsers to optimize efficiency. Today, this forces us to inform user that they need to empty their cache after an update.

This documentation

The les-projets-cagnottes.github.io component is managing the documentation you are reading. It also stores Cucumber report for the core component and may storing other similar static files in the future. This project is build with Jekyll, the tomjoht/documentation-theme-jekyll template and hosted on GitHub Pages

Why ?

This structure allows us to take advantage of each involved technology and eventually replace them independently when the time will come. It also gives us the opportunity to expand with other clients in front on the platform.