V1
Templating & packaging
dotnet templates
- Setup nuget package
- "mcsp_cli" template
- "mcsp_doc" template
- Guidelines option
- Tech doc option
- Product doc option
- Blog option
- Organization option
- "mcsp_distributed" template
- "Terraform" option
- "CLI“ option
- "E2E" tests option
- "BaaS" option
- "Aspire" option
- "Jaeger" option
- "Minio" option
- "mcsp_desktop" (avaloniaui + material template + layout & sidemenu)
- "mcsp_bff_ssr_blazor" (blazor BFF SSR + auth template + hasura: aka #BLASURA)
- serviceDefault option
- aspire option
- docker option
- mudblazor
- radzen
- fluent
- "mcsp_module" (standalone module template)
- "mcsp_service" (standalone microservice template, module + api)
- "mcsp_vertical_service" (standalone microservice template vertical slice style, module + api) template ?
- "mcsp_bff_ssr_blazor_wasm" (blazor WASM + mudblazor + auth template) ?
- "mcsp_mobile" (dotnet MAUI mobile / desktop app template) ?
- "mcsp_mobile_avalonia" (dotnet avalonia mobile / desktop template) ?
dotnet tool
- Setup nuget package
- Clean label and options
- install as global tool "microscope"
DISTRIBUTED TEMPLATE
Solution
- Hasura JWT
- Keycloak default role & role mapping
- Dotnet 8 migration
- Nullables
- Clean warnings
- Clean todos
Clients
- Move to blazor WEB & SSR instead of WASM only
- Go to BFF SSR Blazor template
- Blazor PWA
- Setup mudblazor UI
- Setup Preferences & Settings
- Dark / Light mode
- Drawer open
- Language support
- Setup Authentication
- Setup Feature management
- Setup Globalization
- Setup PWA
- Refactoring program.cs
- SDKs
- GraphQL SDK
- SDK generation with admin key dotnet graphql -x x-hasura-admin xxx
- REST SDK
- Setup
- Automate swagger.json output from api project
- GraphQL SDK
- BFF
- blazor hosted
- reverse proxy APIs (YARP)
- GraphQL gateway & schema stitching
- Forward all headers during schema stitching (related to sdk generation as admin)
- File upload sample
Services
TodoApp service
- Core
Domain
- Setup aggregate root
- Setup entities
- Setup domain events
- Setup repository interface
- Setup exceptions
Application
- Common behaviours
- Mappings
- Features
- Todolist
- Commands
- Create todo list
- Delete todo list
- Update todo list
- Create todo item
- Delete todo item
- Toggle todo item
- Queries
- Get all todo lists by user
- Get todo list by id
- Policies
- Todolist created by policy requirement
- Events
- SendMailOnTodoListCompleted
- OnTodoListCompletedIntegrationEvent
- Commands
- Todolist
Infrastructure
- Infrastructure settings (IOption validation)
- Persistence
- Entity framework
- EF Entities configuration
- EF Migration
- MartenDB
- Entity framework
- External systems implementation
- Storage
- User
- Bus
- MassTransit
- RabbitMQ
- Azure Service Bus
- Amazon SQS
- OpenTelemetry
- MassTransit
Interface
- GraphQL API
- GraphQL documentation
- Refactoring with QueryType et MutationType attributes ?
- REST API
- OpenAPI documentation
- Complete missing operations
- API versioning
- Async API / messenging documentation
- Authentication
- OPENID JWT
- MASTER KEY
- Authorization
- HealthCheck
- Feature management
- Auto migration option
- Interface settings (IOption validation)
- Users endpoints
- Keycloak service
- AAD service
- SignalR websocket use case
- Listen service bus
- OpenTelemetry
- REST api
- GraphQL api
- GraphQL API
Tests
- Unit tests
- Architecture tests
- Integration tests
- E2E tests
- Setup playwright NUnit project
- Home page test
- Login test
- Todolist test
- Create todo list test
- Update todo list test
- Create todo item test
- Toggle todo item test
- Delete todo item test
- Delete todo list test
POC service "Backend As A Service"
- Hasura
- Docker
- Auth
- Azure Data API Builder
- Docker
- Auth
Storage (optional) ?
- File system
- Azure blob storage
- AWS S3
- Minio
- Upgrade minio sdk to 6.x
Workflow (optional)
- Elsa core
Scheduled Jobs (optional)
- Hangfire
Cross cutting
- SharedKernel
- use mediatr contract only
- Refactoring to move Microscope.Storage crosscutting lib
- ServiceDefaults
- OpenTelemetry
- Default Healthcheck
IAC
Docker compose
- BFF
- TodoAPI
- IAM (keycloak)
- Storage (minio)
- Database (postgres)
- Bus (rabbitmq)
- BaaS (hasura)
- OTEL (Jaeger)
Aspire
- BFF
- TodoAPI
- IAM (keycloak)
- Storage (minio)
- Database (postgres)
- Bus (rabbitmq)
- BaaS (hasura)
- OTEL (aspire)
Terraform
- Azure
- AWS
- GCP
K8S
DOCUMENTATION TEMPLATE
- Setup vitepress
- Setup revealjs slides
- Setup docs web server as static files & container
- Refactoring documentation in template
- Templating options