How gundx2k4/sportclub works
LegendsTeamVN Badminton Club is a .NET Minimal API for managing badminton venues, courts, schedules, pricing, users, and authentication. The principal workflow is client request → endpoint → CQRS handler → repository or identity service → SQL-backed result, with Redis supporting authentication state. The tree also documents domain entities for bookings, payments, rentals, matches, reviews, vouchers, and notifications, plus optional RabbitMQ integration. Sampled handlers confirm filtering, pagination, DTO projection, JWT issuance, permission lookup, and cache writes; endpoint wiring and unsampled feature behavior are represented only at directory level.
Components 23
API Boundary
- API Host
src/Hosts/LegendsTeamVN.BadmintonClub.API/Program.cs - Resource Endpoints
src/LegendsTeamVN.BadmintonClub.Presentation/Endpoints
Application Workflows
- CQRS Pipeline
src/BuildingBlocks/LegendsTeamVN.Core.Application/Messaging/CQRS - Authentication Flow
src/LegendsTeamVN.BadmintonClub.Application/Features/Auth - Venue Workflows
src/LegendsTeamVN.BadmintonClub.Application/Features/Venues - Court Workflows
src/LegendsTeamVN.BadmintonClub.Application/Features/Courts - Pricing Workflows
src/LegendsTeamVN.BadmintonClub.Application/Features/CourtPricings - Schedule Workflows
src/LegendsTeamVN.BadmintonClub.Application/Features/VenueSchedules - User Workflows
src/LegendsTeamVN.BadmintonClub.Application/Features/Users
Domain and Persistence
- Club Domain Model
src/LegendsTeamVN.BadmintonClub.Domain/Entities - Venue Repository
src/LegendsTeamVN.BadmintonClub.Persistence/Repositories/VenueRepository.cs - Court Repository
src/LegendsTeamVN.BadmintonClub.Persistence/Repositories/CourtRepository.cs - Pricing Repository
src/LegendsTeamVN.BadmintonClub.Persistence/Repositories/CourtPricingRepository.cs - Schedule Repository
src/LegendsTeamVN.BadmintonClub.Persistence/Repositories/VenueScheduleRepository.cs - Club DbContext
src/LegendsTeamVN.BadmintonClub.Persistence/BadmintonDbContext.cs - Club SQL Database
Platform Services
- Identity Service
src/BuildingBlocks/LegendsTeamVN.Core.Identity/Services/UserManagerService.cs - Identity Database
- JWT Token Service
src/BuildingBlocks/LegendsTeamVN.Core.Identity/Services/JwtTokenService.cs - Redis Cache
src/BuildingBlocks/LegendsTeamVN.Core.Infrastructure/Caching/RedisCacheService.cs - Integration Event Bus
src/BuildingBlocks/LegendsTeamVN.Core.Infrastructure/Messaging/EventBus.cs
Other components
- API Client
- RabbitMQ Broker
Connections 28
- API Client → API Host: sends requests
- API Host → Resource Endpoints: hosts routes
- Resource Endpoints → CQRS Pipeline: dispatches requests
- CQRS Pipeline → Authentication Flow: handles auth
- CQRS Pipeline → Venue Workflows: handles venues
- CQRS Pipeline → Court Workflows: handles courts
- CQRS Pipeline → Pricing Workflows: handles pricing
- CQRS Pipeline → Schedule Workflows: handles schedules
- CQRS Pipeline → User Workflows: handles users
- Authentication Flow → Identity Service: checks users
- Authentication Flow → JWT Token Service: generates tokens
- Authentication Flow → Redis Cache: stores sessions
- User Workflows → Identity Service: reads identity
- Venue Workflows → Venue Repository: queries venues
- Court Workflows → Court Repository: queries courts
- Pricing Workflows → Pricing Repository: queries prices
- Schedule Workflows → Schedule Repository: queries schedules
- Venue Workflows → Club Domain Model: uses venue model
- Court Workflows → Club Domain Model: uses court model
- Pricing Workflows → Club Domain Model: uses pricing model
- Schedule Workflows → Club Domain Model: uses schedule model
- Venue Repository → Club DbContext: reads and writes
- Court Repository → Club DbContext: reads and writes
- Pricing Repository → Club DbContext: reads and writes
- Schedule Repository → Club DbContext: reads and writes
- Club DbContext → Club SQL Database: persists entities
- Identity Service → Identity Database: manages accounts
- Integration Event Bus → RabbitMQ Broker: publishes events