Appearance
Project Overview
Club Wilo Platform is a comprehensive management system for Club Wilo Valdelagrana, a social sports club in El Puerto de Santa María, Cádiz. The platform manages members, padel courts, gym, clinic, restaurant, shop, and events.
Architecture
The platform is built as a Vertical Slices + Screaming Architecture + Modular Monolith with event-driven inter-module communication. Modules never reference each other directly; all communication goes through Wilo.Contracts types.
wilo/
├── src/ .NET backend projects
│ ├── Wilo.Api/ Composition root (ASP.NET 10 + Minimal APIs)
│ ├── Wilo.Common/ Shared kernel (zero project refs — pure utilities)
│ ├── Wilo.Contracts/ Inter-module contracts (events, requests, DTOs)
│ ├── Wilo.Infrastructure/ Technical cross-cutting (email, storage, outbox, audit)
│ ├── Wilo.Modules.Identity/ Authentication & Identity
│ ├── Wilo.Modules.Members/ Member Management
│ └── Wilo.Modules.Storage/ File storage endpoints
├── sites/ Client applications
│ └── Wilo.App/ Vue 3 SPA (Vite + TypeScript)
├── services/ Backend services
│ └── Wilo.Email/ React Email + Hono renderer (Bun/TypeScript)
├── webs/ Public-facing websites
│ └── Wilo.Docs/ VitePress documentation (this site)
└── tests/ Test projects
├── Wilo.Api.UnitTests/
├── Wilo.Api.IntegrationTests/
├── Wilo.ArchitectureTests/
├── Wilo.Modules.Identity.Tests/
├── Wilo.Modules.Members.Tests/
└── Wilo.Modules.Storage.Tests/Project Dependencies
| Project | References | CANNOT reference |
|---|---|---|
Wilo.Common | NuGet packages only | Any project |
Wilo.Contracts | Wilo.Common | Modules, Infrastructure, Api |
Wilo.Infrastructure | Wilo.Common, Wilo.Contracts | Modules, Api |
Wilo.Modules.* | Wilo.Common, Wilo.Contracts, Wilo.Infrastructure | Other modules, Api |
Wilo.Api | Everything | — |
Business Modules
The platform delivers 25 modules across incremental phases:
| Module | Description |
|---|---|
| Platform / Identity | Core user management, authentication, RBAC |
| Members | Membership management and club operations |
| Marketing & CRM | Customer relationship and campaigns |
| Shop | Merchandise and e-commerce |
| Clinic | Health and wellness services |
| Padel | Court reservations and competitions |
| Box | Group fitness classes and attendance |
| Personal Training | Trainer scheduling and programs |
| Restaurant | Menu, orders, and reservations |
| Events & Competitions | Sports events and leaderboards |
| Administration | Billing, banking, and operations |
| Support | Help center and ticket system |
Cross-Cutting Services
Shared modules used by multiple business modules:
- Identity — JWT auth, HttpOnly cookies, RBAC, sessions
- Audit — Immutable audit logs in ClickHouse via outbox pipeline
- Storage — MinIO-backed file storage with presigned URLs (S3-compatible)
- Email — MailKit SMTP + React Email template rendering
- Notifications — Multi-channel notification delivery
- Reservations — Shared booking engine
- Billing — Invoice and payment processing
- Inventory — Stock management
- Staff Scheduling — Work schedules and shifts
- Communication — Internal messaging
- Promotions — Discounts and campaigns
- Reports — Analytics and data export
Current Phase
Phases 0–2 complete. The platform has full member management, subscriptions, and authentication infrastructure.
| Phase | Description | Status |
|---|---|---|
| 0 | Base infrastructure | ✅ Complete |
| 1a | Outbox Pattern | ✅ Complete |
| 1b | Audit Logging | ✅ Complete |
| 1c | RBAC & Permissions | ✅ Complete |
| 1d | Authentication & Identity | ✅ Complete |
| 2 | Member Management | ✅ Complete |
See the Architecture Overview for technical details.