<commit_before># cqrs-python-demo
For research purposes only. But feel free to learn from our experiments :)

Generally this is an attempt to do the following:

* working CQRS system
* event sourced
* view model
* commands
* single REST api (for convenience)

## The Stack

Since we're considering event-sourcing and CQRS for our own techstack, I wanted to try it out first hand, using some pre-made event-source offering.
The focus was to get a practical feel of a CQRS implementation, and the possible issues with event-sourcing.

* Event Sourcing https://geteventstore.com
* Event Store Client https://github.com/madedotcom/atomicpuppy
* REST API http://flask.pocoo.org
* View Models https://www.postgresql.org

### Event-Store Options

* [https://geteventstore.com](https://geteventstore.com) (C#, .NET, and plenty of community adapterS)
* [http://eventuate.io](http://eventuate.io) (java)
* [https://github.com/johnbywater/eventsourcing](https://github.com/johnbywater/eventsourcing) (Python)

### What is CQRS?

CQRS stands for Command Query Responsibility Segregation

https://martinfowler.com/bliki/CQRS.html

**Learn more about CQRS**

If you're new to microservices or command query responsibility segregation checkout some of these resources which I found particularily useful.

* [When Microservices Meet Event Sourcing](https://www.youtube.com/watch?v=cISNDnwlSgw)
* [Developing microservices with aggregates - <NAME>](https://www.youtube.com/watch?v=7kX3fs0pWwc)
* [Event Sourcing in practice](https://ookami86.github.io/event-sourcing-in-practice/)
* [Eventually Consistent Distributed Systems with Node.js for Finance - <NAME> Electronifie](https://www.youtube.com/watch?v=X_VHWQa1k0k)
* [Dealing with CQRS issues](http://danielwhittaker.me/2015/02/02/upgrade-cqrs-events-without-busting/)
* [Principles Of Microservices by <NAME>](https://www.youtube.com/watch?v=PFQnNFe27kU)<commit_msg>added install with docker note<commit_after># WIP
## cqrs-python-demo
For research purposes only. But feel free to learn from our experiments :)

Generally this is an attempt to do the following:

* working CQRS system
* event sourced
* view model
* commands
* single REST api (for convenience)

### The Stack

Since we're considering event-sourcing and CQRS for our own techstack, I wanted to try it out first hand, using some pre-made event-source offering.
The focus was to get a practical feel of a CQRS implementation, and the possible issues with event-sourcing.

* Event Sourcing [https://geteventstore.com](https://geteventstore.com)
* Event Store Client [https://github.com/madedotcom/atomicpuppy](https://github.com/madedotcom/atomicpuppy)
* REST API [http://flask.pocoo.org](http://flask.pocoo.org)
* View Models [https://www.postgresql.org](https://www.postgresql.org)

#### event-sourcing options

* [https://geteventstore.com](https://geteventstore.com) (C#, .NET, and plenty of community adapterS)
* [http://eventuate.io](http://eventuate.io) (java)
* [https://github.com/johnbywater/eventsourcing](https://github.com/johnbywater/eventsourcing) (Python)

## Install

Easiest way to get this up and running is to use [docker-compose](https://docs.docker.com/compose/).

### If you have docker-compose

`docker-compose up -d --build`

### What is CQRS?

CQRS stands for Command Query Responsibility Segregation

https://martinfowler.com/bliki/CQRS.html

**Learn more about CQRS**

If you're new to microservices or command query responsibility segregation checkout some of these resources which I found particularily useful.

* [When Microservices Meet Event Sourcing](https://www.youtube.com/watch?v=cISNDnwlSgw)
* [Developing microservices with aggregates - <NAME>](https://www.youtube.com/watch?v=7kX3fs0pWwc)
* [Event Sourcing in practice](https://ookami86.github.io/event-sourcing-in-practice/)
* [Eventually Consistent Distributed Systems with Node.js for Finance - <NAME>](https://www.youtube.com/watch?v=X_VHWQa1k0k)
* [Dealing with CQRS issues](http://danielwhittaker.me/2015/02/02/upgrade-cqrs-events-without-busting/)
* [Principles Of Microservices by <NAME>](https://www.youtube.com/watch?v=PFQnNFe27kU)
{'fraction_non_alphanumeric': 0.12270087124878994, 'fraction_numerical': 0.008228460793804453, 'mean_word_length': 5.060117302052786, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 30, 'lorem ipsum': 0, 'www.': 11, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5116928', 'n_tokens_mistral': 1377, 'n_tokens_neox': 1290, 'n_words': 372}