All Projects → osoykan → Productcontext Eventsourcing

osoykan / Productcontext Eventsourcing

Licence: mit
A practical/experimental Event Sourcing application on Product Bounded Context in an e-commerce

Projects that are alternatives of or similar to Productcontext Eventsourcing

Kreta
Modern project management solution
Stars: ✭ 177 (+101.14%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Rails event store
A Ruby implementation of an Event Store based on Active Record
Stars: ✭ 947 (+976.14%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Messagebus
A MessageBus (CommandBus, EventBus and QueryBus) implementation in PHP7
Stars: ✭ 178 (+102.27%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+6956.82%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
delta
DDD-centric event-sourcing library for the JVM
Stars: ✭ 15 (-82.95%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing
Revo
Event Sourcing, CQRS and DDD framework for C#/.NET Core.
Stars: ✭ 162 (+84.09%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Eventsourcing
A library for event sourcing in Python.
Stars: ✭ 760 (+763.64%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (+26.14%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+168.18%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (-45.45%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+80.68%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (+370.45%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Goes
Go Event Sourcing made easy
Stars: ✭ 144 (+63.64%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-22.73%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (+48.86%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+159.09%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+102.27%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing
Event Sourcing Cqrs Examples
Event Sourcing and CQRS in practice.
Stars: ✭ 265 (+201.14%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Eventhorizon
CQRS/ES toolkit for Go
Stars: ✭ 961 (+992.05%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+5718.18%)
Mutual labels:  event-sourcing, ddd, cqrs

ProductContext-EventSourcing

A practical/experimental Event Sourcing application on Product Bounded Context in an e-commerce

Purpose

I wanted to implement what i learnt about DDD CQRS and EventSourcing, that's why i created this repository. I will add new things to here by time as i learn.

Dependencies

EventStore and Docker will be organized by docker-compose.yml

Libraries

How

Repository contains a docker-compose.yml file which provides all dependencies for bootstrapping and developing.

docker-compose up

You can run tests afterwards.

Domain Model

StoryStream is used for Event Storming while modeling domain model.

Domain model basically provides a Product which has a Color (Content) and it's Variants.

Project Structure

Solution has 3 main projects. These projects are:

  • ProductContext.WebApi
  • ProductContext.Domain
  • ProductContext.Framework

ProductContext.WebApi

  • Uses Swagger for documentation
  • Has a ProductCommandsApi as controller
  • Uses Mediator for sending commands to handler

ProductContext.Domain

  • Events and Commands sit here.
AggregateRoot Entities ValueObjects Documents
Product ProductContent ProductContentId ProductContentDocument
ProductVariant ProductVariantId ProductVariantDocument
ProductId ProductDocument
ProductContentVariantValue
ProductVariantTypeValue
VariantTypeValue VariantTypeValueId Not yet implemented

Product is a Snapshotable aggregate root.

ProductContext.Framework

  • Snapshotting with AsyncSnapshotableRepository<TAggregateRoot>
  • Tracking last projection status with CouchbaseCheckpointStore
  • Now, GetStreamName, GetSnapshotStreamName delegates for creating proper stream Ids
  • ProjectionManager runs the Projections and every event fall into Projac projection handler.

Deploy

  • Kubernetes

    • minikube start
    • eval $(minikube docker-env) switch to kubernetes local registry your current terminal context
    • docker ps #see what's going on kubernetes local registry
    • docker build -t productcontextes .
  • Helm

    • Switch to /deployments
    • helm package productcontext --debug
    • helm install productcontext

To Be Implemented

  • Correlation/Causation Id

Notes

What brings you here of course not unique. I inspired a lot from WorkshopEventSourcing

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].