RailsEventStore/ecommerce: Application with CQRS and Event Sourcing built on Rails and Rails Event Store

4 phút đọc

RailsEventStore/ecommerce: Application with CQRS and Event Sourcing built on Rails and Rails Event Store – Repository RailsEventStore/ecommerce. Mô tả: Application with CQRS and Event Sourcing built on Rails and Rails Event Store. 505 stars, 85 forks, ngôn ngữ chính Ruby, cập nhật 2026-09-21.

1. Repository làm gì?

A non-trivial application with DDD, CQRS and Event Sourcing built on Rails and Rails Event Store.

This project has several high-level goals:

Event storming (events and commands) – Miro documentation

Domains exist in directories starting at domains.

(almost) Each one has a README introduction:

Order management application lives at rails_application directory.

RailsEventStore/ecommerce: Application with CQRS and Event Sourcing built on Rails and Rails Event Store
Hình 1: Minh họa RailsEventStore/ecommerce: Application with CQRS and Event Sourcing built on Rails and Rails Event Store

2. Dữ liệu và cấu trúc đáng chú ý

This application simulates a process of managing orders.

We start with a list of exiting products, customers and coupons (populated with seeds).

The customer perspective is "simulated" only – via using the select box.

Read models are application specific so they live at the application level. In our case it's in the main ecommerce Rails app:

Additionally, we have created the Pricing Catalog application that is a separate Rails application. It's a good example of how to create a separate application that uses the same domains, but has different read models.

Processes are application specific so they live at the application level. In our case it's in the main ecommerce Rails app:

We welcome all the contributors here.

3. Khả năng ứng dụng và giới hạn

As you see, this project is not an usual Rails project. Many Rails conventions are not followed here. Usually there's a good reason for that. Trust us, but feel free to challenge our decisions.

Do not leave comments in the code by default. Just leave an GitHub issue instead of a TODO comment for example.

One of the goals of this project is educational – to show how to implement certain features with DDD. As such we treat the actual code as business value. That's why (as opposed to "normal" projects") we can treat technical debt as part of the "backlog".

Whenever you add a temporary hack to the codebase, add a Github issue – maybe someone else will be able to help or clean. When you work on certain are and see some not pretty code – fix it or create an issue and add the "debt" label.

If you're somehow experienced with ecommerce (even when not as a dev) – your experience can help us. Please create new Github issues with features that can exist in typical ecommerces. Our goal is to cover as many features as possible – especially the tricky ones.

If you're a developer working on ecommerce and you want to learn how to implement a specific feature – feel free to add this as a ticket too.

All tickets should bring business value and be consistent with previous features. It's fine to create vague tickets at the beginning and let them be more specific later.

Please check that your bundler version is not ancient, and up to date. For more details check: git show 6dc6e1c2ea833e1ea5821cc9bc9bd5dfadbfda9a which explains the problem and proposes a solution. A sign that you have a problem will be unusual changes in Gemfile.lock i.e. changes in remote sources and placement of gems definitions.

When merging a pull request into the master branch, please use "Rebase and merge" option.

Số liệu repository có thể thay đổi; nên mở liên kết nguồn để kiểm tra README, giấy phép và trạng thái phát hành.

Nguồn tham khảo: Xem bài gốc

📆
Âm Lịch: 17/8
Giáp Thìn

📆 Lịch Âm Dương NsN

×
Hôm Nay - Chủ Nhật
Âm Lịch: 17 Tháng 8
Năm Bính Ngọ
📌 Ngày Can Chi: Giáp Thìn
✨ Giờ Hoàng Đạo: Dần (3-5), Thìn (7-9), Tỵ (9-11), Thân (15-17), Dậu (17-19), Hợi (21-23)
Vĩnh Phúc (Liên Bảo - Vĩnh Yên)
27°C
Nắng Đẹp
💧 89% | 💨 15 km/h
Hôm nay 32°
28/09 33°
29/09 34°
30/09 33°
01/10 31°