172 lines
5.5 KiB
Markdown
172 lines
5.5 KiB
Markdown
# Tutorials
|
|
|
|
Step-by-step tutorials for building applications with Svrnty.CQRS.
|
|
|
|
## Overview
|
|
|
|
This section provides comprehensive, hands-on tutorials that walk you through building real-world applications using Svrnty.CQRS.
|
|
|
|
## Tutorial Series
|
|
|
|
### [Modular Solution](modular-solution/)
|
|
|
|
Build a properly structured solution with separated concerns:
|
|
|
|
1. **[Solution Structure](modular-solution/01-solution-structure.md)** - Create project structure (Api, CQRS, Domain, Infrastructure)
|
|
2. **[Domain Layer](modular-solution/02-domain-layer.md)** - Define entities, value objects, and domain events
|
|
3. **[CQRS Layer](modular-solution/03-cqrs-layer.md)** - Implement commands, queries, and handlers
|
|
4. **[DAL Layer](modular-solution/04-dal-layer.md)** - Set up Entity Framework Core and repositories
|
|
5. **[API Layer](modular-solution/05-api-layer.md)** - Configure HTTP and gRPC endpoints
|
|
6. **[Testing Strategy](modular-solution/06-testing-strategy.md)** - Unit and integration testing
|
|
|
|
**What You'll Learn:**
|
|
- Multi-project solution architecture
|
|
- Layer separation and dependencies
|
|
- Best practices for code organization
|
|
- Testing strategies for each layer
|
|
|
|
**Prerequisites:**
|
|
- .NET 10 SDK
|
|
- Basic understanding of C# and ASP.NET Core
|
|
|
|
**Duration:** ~2-3 hours
|
|
|
|
### [Event Sourcing](event-sourcing/)
|
|
|
|
Build an event-sourced application from scratch:
|
|
|
|
1. **[Fundamentals](event-sourcing/01-fundamentals.md)** - Event sourcing concepts and benefits
|
|
2. **[Aggregate Design](event-sourcing/02-aggregate-design.md)** - Design aggregates and domain events
|
|
3. **[Events and Workflows](event-sourcing/03-events-and-workflows.md)** - Implement event workflows
|
|
4. **[Projections](event-sourcing/04-projections.md)** - Build read models from events
|
|
5. **[Snapshots](event-sourcing/05-snapshots.md)** - Optimize with snapshots
|
|
6. **[Replay and Rebuild](event-sourcing/06-replay-and-rebuild.md)** - Replay events to rebuild projections
|
|
|
|
**What You'll Learn:**
|
|
- Event sourcing pattern
|
|
- Aggregate root design
|
|
- Projection building
|
|
- Event replay
|
|
- Snapshot optimization
|
|
|
|
**Prerequisites:**
|
|
- Completed "Getting Started" guide
|
|
- Understanding of domain-driven design
|
|
- PostgreSQL installed
|
|
|
|
**Duration:** ~3-4 hours
|
|
|
|
### [E-Commerce Example](ecommerce-example/)
|
|
|
|
Build a complete e-commerce order system:
|
|
|
|
1. **[Requirements](ecommerce-example/01-requirements.md)** - Define domain and requirements
|
|
2. **[Domain Events](ecommerce-example/02-domain-events.md)** - Design order lifecycle events
|
|
3. **[Commands](ecommerce-example/03-commands.md)** - PlaceOrder, CancelOrder, ShipOrder
|
|
4. **[Queries](ecommerce-example/04-queries.md)** - GetOrder, ListOrders, SearchOrders
|
|
5. **[Projections](ecommerce-example/05-projections.md)** - Order summaries and analytics
|
|
6. **[Sagas](ecommerce-example/06-sagas.md)** - Order fulfillment saga
|
|
7. **[HTTP API](ecommerce-example/07-http-api.md)** - Expose via HTTP endpoints
|
|
8. **[gRPC API](ecommerce-example/08-grpc-api.md)** - Expose via gRPC services
|
|
9. **[Complete Code](ecommerce-example/09-complete-code.md)** - Full working implementation
|
|
|
|
**What You'll Learn:**
|
|
- Real-world CQRS application
|
|
- Event-driven workflows
|
|
- Saga pattern for distributed transactions
|
|
- Dual HTTP/gRPC endpoints
|
|
- Complete working code
|
|
|
|
**Prerequisites:**
|
|
- Completed "Modular Solution" tutorial
|
|
- PostgreSQL installed
|
|
- Understanding of e-commerce domain
|
|
|
|
**Duration:** ~4-6 hours
|
|
|
|
## Quick Start Projects
|
|
|
|
### Hello World CQRS
|
|
|
|
```bash
|
|
# Create new project
|
|
dotnet new webapi -n HelloCQRS
|
|
cd HelloCQRS
|
|
|
|
# Add packages
|
|
dotnet add package Svrnty.CQRS
|
|
dotnet add package Svrnty.CQRS.MinimalApi
|
|
|
|
# Create command
|
|
# Create handler
|
|
# Register services
|
|
# Run
|
|
```
|
|
|
|
See [Getting Started](../getting-started/README.md) for full guide.
|
|
|
|
### Event Streaming Quick Start
|
|
|
|
```bash
|
|
# Add event streaming
|
|
dotnet add package Svrnty.CQRS.Events.PostgreSQL
|
|
dotnet add package Svrnty.CQRS.Events.ConsumerGroups
|
|
|
|
# Start PostgreSQL
|
|
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:16
|
|
|
|
# Configure services
|
|
# Publish events
|
|
# Consume events
|
|
```
|
|
|
|
See [Event Streaming Getting Started](../event-streaming/fundamentals/getting-started.md) for full guide.
|
|
|
|
## Learning Path
|
|
|
|
### Beginner
|
|
|
|
1. [Introduction to CQRS](../getting-started/01-introduction.md)
|
|
2. [Your First Command](../getting-started/03-first-command.md)
|
|
3. [Your First Query](../getting-started/04-first-query.md)
|
|
4. [Adding Validation](../getting-started/05-adding-validation.md)
|
|
|
|
### Intermediate
|
|
|
|
1. [Modular Solution Tutorial](modular-solution/README.md)
|
|
2. [Dynamic Queries](../core-features/dynamic-queries/README.md)
|
|
3. [gRPC Integration](../grpc-integration/getting-started-grpc.md)
|
|
|
|
### Advanced
|
|
|
|
1. [Event Sourcing Tutorial](event-sourcing/README.md)
|
|
2. [Consumer Groups](../event-streaming/consumer-groups/README.md)
|
|
3. [Projections and Sagas](../event-streaming/projections/README.md)
|
|
4. [E-Commerce Example](ecommerce-example/README.md)
|
|
|
|
## Sample Code
|
|
|
|
All tutorial code is available in the [Svrnty.Sample](../../Svrnty.Sample/) project.
|
|
|
|
**Key Examples:**
|
|
- [Commands](../../Svrnty.Sample/Commands/)
|
|
- [Queries](../../Svrnty.Sample/Queries/)
|
|
- [Events](../../Svrnty.Sample/Events/)
|
|
- [Projections](../../Svrnty.Sample/Projections/)
|
|
- [Sagas](../../Svrnty.Sample/Sagas/)
|
|
- [Workflows](../../Svrnty.Sample/Workflows/)
|
|
|
|
## Community Examples
|
|
|
|
Share your tutorials and examples:
|
|
- Submit a pull request with your tutorial
|
|
- Link to your blog post or GitHub repo
|
|
- Join the discussion on GitHub
|
|
|
|
## See Also
|
|
|
|
- [Getting Started](../getting-started/README.md)
|
|
- [Best Practices](../best-practices/README.md)
|
|
- [Samples](../samples/README.md)
|
|
- [Troubleshooting](../troubleshooting/README.md)
|