Skip to content

Latest commit

 

History

History
51 lines (32 loc) · 2.45 KB

README.md

File metadata and controls

51 lines (32 loc) · 2.45 KB

CentsIdeas

Full stack application for sharing Fastlane ideas based on the CENTS commandments by MJ DeMarco

Motives

Backend

CentsIdeas is running on small services within a Kubernetes cluster. All requests coming from the outside go into the gateway. From there remote procedure calls are used to communicate with speicific services. Every service has it's own database.

Event Sourcing

Often systems just store the current state of the system. With event sourcing it is possible to know every state at any point of time. Events are the source of truth. Projectors listen for events and project events to the current state. Thus we can separate the write and read side and the current state behaves just like a cache.

Web Application

The frontend is a progressive web application, which is sends a server side rendered copy to the client first, to improve search engine optimization and initial load time. CentsIdeas also tries to make user experience better by using a clean user interface and realtime data.

Development

All the code for this project is contained in this one monorepo, which is made possible with the help of Bazel and Typescript. Developers can see changes in realtime through Docker Compose and run the code in a local Microk8s cluster to simulate the production environment.

The goal is to have unit and integration tests spaning across all services and packages, such that new features can be delivered to production frequently.

Miscealenous

This project also aims to be compliant with GDPR.

Documentation

Setup your development environment on Ubuntu

Develop CentsIdeas

Run a local Kubernetes cluster on Ubuntu

Deploy CentsIdeas to Google Cloud Platform

Thanks to all the people listed below!

@rayman1104 @xmontero @marcus-sa @joeljeske