Build a simple food delivery system demonstrating event sourcing patterns using Sekiban framework, with Domain, API, and Blazor UI layers.
- Single user journey: Browse → Order → Track → Deliver → Review
- Real-time status updates using event-driven architecture
- Event history visualization to showcase event sourcing benefits
// Essential events only
- MenuItemAddedToCart(OrderId, ItemId, ItemName, Price, Quantity)
- CartCleared(OrderId)
- OrderPlaced(OrderId, Items[], TotalAmount, DeliveryAddress)
- PaymentCompleted(OrderId, PaymentMethod, Amount)
- OrderAccepted(OrderId, EstimatedPrepTime)
- OrderReady(OrderId)
- OrderPickedUp(OrderId, DriverName)
- OrderDelivered(OrderId, DeliveredAt)
- OrderRated(OrderId, Rating, Comment)
- Cart - Manages cart operations
- Order - Handles order lifecycle
- Delivery - Tracks delivery status
- AddItemToCart
- PlaceOrder
- ProcessPayment
- UpdateDeliveryStatus
- SubmitRating
POST /api/cart/add-item
POST /api/cart/clear
POST /api/order/place
POST /api/order/pay
PUT /api/order/{id}/status
POST /api/order/{id}/rate
GET /api/order/{id}/events
GET /api/order/{id}/current-state
- Menu Page - Simple grid with "Add to Cart" buttons
- Cart Page - Show items with total, "Place Order" button
- Order Tracking Page - Status progress bar with real-time updates
- Order History Page - List past orders with event timeline
- Use Sekiban Documents MCP to generate domain models
- Replace Weather sample with Order domain
- Create simple in-memory menu items (no database needed)
- Focus on event flow visualization over complex business logic
- Use SignalR for real-time status updates
- Skip: Authentication, multiple restaurants, complex pricing
- Mock: Payment processing, GPS tracking
- Hardcode: Menu items, delivery times
- Focus: Event sourcing patterns, state reconstruction, event history
- Show how current state is derived from events
- Demonstrate event replay to any point in time
- Highlight audit trail capabilities
- Display real-time updates through event propagation
Keep it simple enough to code live in 30-45 minutes while effectively demonstrating event sourcing concepts.