Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flolu/centsideas
💡 Modern Fullstack Application for Sharing Fastlane Ideas
https://github.com/flolu/centsideas
angular bazel cqrs docker elasticsearch eventsourcing fullstack gateway grpc kafka kubernetes microservices mongodb monorepo nodejs pwa server-side-rendering typescript
Last synced: 4 days ago
JSON representation
💡 Modern Fullstack Application for Sharing Fastlane Ideas
- Host: GitHub
- URL: https://github.com/flolu/centsideas
- Owner: flolu
- Created: 2019-09-01T17:25:32.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-09-08T10:07:29.000Z (about 2 years ago)
- Last Synced: 2024-05-01T19:27:39.176Z (7 months ago)
- Topics: angular, bazel, cqrs, docker, elasticsearch, eventsourcing, fullstack, gateway, grpc, kafka, kubernetes, microservices, mongodb, monorepo, nodejs, pwa, server-side-rendering, typescript
- Language: TypeScript
- Homepage:
- Size: 4.97 MB
- Stars: 31
- Watchers: 3
- Forks: 5
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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](./misc/docs/ubuntu.md)
[Develop CentsIdeas](./misc/docs/development.md)
[Run a local Kubernetes cluster on Ubuntu](./misc/docs/microk8s.md)
[Deploy CentsIdeas to Google Cloud Platform](./misc/docs/deployment.md)
## Thanks to all the people listed below!
[@rayman1104](https://github.com/rayman1104) [@xmontero](https://github.com/xmontero) [@marcus-sa](https://github.com/marcus-sa) [@joeljeske](https://github.com/joeljeske)