How raees21/microcommerce works
MicroCommerce is a backend-first ecommerce platform with a React checkout client, REST gateway, and separate identity, profile, catalog, cart, ordering, payment, and shipping services. The main flow is authenticate, browse, manage a cart, submit an order, and query its projected status. Ordering validates product snapshots over gRPC, then coordinates payment and shipment through Kafka events and commands. The README documents the persistence roles and saga; sampled source confirms gateway routing, order submission, and several service registrations, but not every consumer or storage call in detail.
Main entry points: KafkaEventPublisher.cs Kafka · MicroCommerce.ApiGateway/Program.cs API gateway · MicroCommerce.Ordering.Api/Program.cs Order submission · PaymentAndShippingConsumers.cs Order saga
Components 16
Client entry
- React frontend
frontend/web/src/App.jsx - API gateway
src/Gateway/MicroCommerce.ApiGateway/Program.cs
Commerce services
- Identity service
src/Services/Identity/MicroCommerce.Identity.Api/Program.cs - User profiles
src/Services/Users/MicroCommerce.Users.Api/Program.cs - Product catalog
src/Services/Products/MicroCommerce.Products.Api/Program.cs - Shopping cart
src/Services/Cart/MicroCommerce.Cart.Api/Program.cs
Order workflow
- Order submission
src/Services/Ordering/MicroCommerce.Ordering.Api/Program.cs - Order saga
src/Services/Ordering/MicroCommerce.Ordering.Api/Services/PaymentAndShippingConsumers.cs - Order read model
src/Services/Ordering/MicroCommerce.Ordering.Api/Services/OrderProjectionStore.cs - Payments
src/Services/Payments/MicroCommerce.Payments.Api/Program.cs - Shipping
src/Services/Shipping/MicroCommerce.Shipping.Api/Program.cs
Messaging and state
- Kafka
src/BuildingBlocks/MicroCommerce.Infrastructure/Messaging/KafkaEventPublisher.cs - Postgres
- MongoDB
- Redis
Other components
- Shopper
Connections 33
- Shopper → React frontend: uses
- React frontend → API gateway: REST requests
- API gateway → Identity service: forwards auth
- API gateway → User profiles: forwards profiles
- API gateway → Product catalog: forwards catalog
- API gateway → Shopping cart: forwards cart
- API gateway → Order submission: forwards orders
- API gateway → Payments: forwards decisions
- API gateway → Shipping: forwards shipments
- Order submission → Product catalog: gRPC lookup
- Identity service → Kafka: publishes registration
- Kafka → User profiles: registration event
- Order submission → Kafka: publishes submission
- Kafka → Order saga: submission event
- Order saga → Kafka: payment command
- Kafka → Payments: payment command
- Payments → Kafka: payment result
- Kafka → Order saga: payment result
- Order saga → Kafka: shipment command
- Kafka → Shipping: shipment command
- Shipping → Kafka: shipment result
- Kafka → Order saga: shipment result
- Order submission → Order read model: projects orders
- React frontend → Order read model: queries via API
- Identity service → Postgres: persists credentials
- User profiles → Postgres: persists profiles
- Product catalog → Postgres: persists catalog
- Payments → Postgres: persists payments
- Shipping → Postgres: persists shipments
- Order submission → Postgres: stores events and saga state
- Order submission → MongoDB: projects read model
- Shopping cart → MongoDB: persists snapshots
- Shopping cart → Redis: serves fast basket