Giter Site home page Giter Site logo

pure-cqrs-example's Introduction

pure-cqrs-es-example

An implementation of a CQRS/ES system using functional FP in scala.

Goal

This is a side project for learning and experimentation purposes. It is not a "production ready" system :)

We use a simplified domain model in order to focus only on technical implementation details and functional programming principles. CQRS and Event Sourcing is a huge domain with many flavors and variations on its own.

Our goal is to implement some of the principles and ideas that we have in a purely functional way.

How to build run and test?

TODO

This is work in progress

and under heavy development. Many of the design decisions will propably change.

Domain

The domain of the project is an minimal garage management system.

Project tasks and status

  • Write side server (that serves ES commands via REST API)

  • Write side validator in memory store

  • An event log (used for Event Sourcing) implemented in postgres

  • Read side server that serves a materialized view of the log (via REST API).

  • Read side server websocket support

  • An alternative event log implemented using kafka

  • Complete dockerized build process

  • User authentication / authorization (using TSec?)

  • A front SPA application (using Angular ?)

  • Nginx configuration as a reverse proxy for the read/write servers

  • Read side server testing

  • Write side server testing

  • Documentation

Stack

  • Cats

  • Http4s

  • fs2

  • Doobie

  • Circe

  • Docker

  • Postgres

TODO Fill the list

Resources

These are some of online resources we use to learn and take inspiration from:

About Functional Programming

About CQRS

pure-cqrs-example's People

Contributors

fpaschos avatar

Watchers

Alex Henning Johannessen avatar James Cloos avatar  avatar

Forkers

nickthebarista

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.