# nielsgrrr/clubmedv2 architecture

> Architecture diagram of the GitHub repository nielsgrrr/clubmedv2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nielsgrrr/clubmedv2
- Repository: https://github.com/nielsgrrr/clubmedv2

## Overview

ClubMed is an ASP.NET Core API for resort discovery and travel booking, with CRUD endpoints for clubs, rooms, activities, clients, reviews, and related catalog data. A typical booking-related workflow is a user exploring club and room information, submitting a reservation, and paying through Stripe; the tree shows distinct reservation, transaction, and payment components, but the excerpts do not establish their exact runtime sequencing. Controllers use repository/data-manager layers over Entity Framework and PostgreSQL. The README is empty, and only selected source was sampled, so uncertain subsystem wiring is omitted.

Main entry points: [`ClubMed/Models/Repository/IDataRepository.cs`](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/Repository/IDataRepository.cs) (Repository contract), [`ClubMed/Controllers/ClubsController.cs`](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ClubsController.cs) (Club endpoints), [`ClubMed/Controllers/ReservationsController.cs`](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ReservationsController.cs) (Reservation endpoints), [`ClubMed/Models/EntityFramework/ClubMedDbContext.cs`](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/EntityFramework/ClubMedDbContext.cs) (EF Core context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_clubs_api["Club endpoints<br/>[ClubsController.cs]"]
  node_reservations_api["Reservation endpoints"]
  node_clients_api["Client endpoints"]
  node_auth_api["Authentication<br/>[AuthController.cs]"]
  node_stripe_api["Stripe endpoints"]
  node_catalog_api["Travel catalog"]
  node_activities_api["Adult activities"]
  node_reviews_api["Guest reviews<br/>[AvisController.cs]"]
  node_photos_api["Club photos"]
end

subgraph group_domain["Travel Domain"]
  node_club_domain["Club queries<br/>[ClubManager.cs]"]
  node_reservation_domain["Reservation manager"]
  node_payment_domain["Payment manager<br/>[StripeManager.cs]"]
  node_transaction_domain["Transaction records"]
end

subgraph group_data["Persistence"]
  node_repository["Repository contract<br/>[IDataRepository.cs]"]
  node_dbcontext["EF Core context"]
end

subgraph group_integrations["External Services"]
  node_postgres[("PostgreSQL")]
  node_stripe["Stripe"]
end

node_traveler(("Traveler"))

node_traveler -->|"browses"| node_clubs_api
node_traveler -->|"explores rooms"| node_catalog_api
node_traveler -->|"requests booking"| node_reservations_api
node_clubs_api -->|"queries clubs"| node_club_domain
node_clubs_api -->|"reads and updates"| node_repository
node_catalog_api -->|"CRUD operations"| node_repository
node_clients_api -->|"CRUD operations"| node_repository
node_reviews_api -->|"CRUD operations"| node_repository
node_activities_api -->|"CRUD operations"| node_repository
node_reservations_api -->|"manages reservations"| node_reservation_domain
node_stripe_api -->|"delegates payments"| node_payment_domain
node_payment_domain -.->|"processes payment"| node_stripe
node_reservations_api -->|"records transactions"| node_transaction_domain
node_reservation_domain -->|"queries and saves"| node_dbcontext
node_repository -->|"data access"| node_dbcontext
node_dbcontext -->|"persists entities"| node_postgres

click node_clubs_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ClubsController.cs"
click node_reservations_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ReservationsController.cs"
click node_clients_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ClientsController.cs"
click node_auth_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/AuthController.cs"
click node_stripe_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/StripeController.cs"
click node_catalog_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/TypeChambresController.cs"
click node_activities_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ActiviteAdultesController.cs"
click node_reviews_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/AvisController.cs"
click node_photos_api "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/PhotosController.cs"
click node_club_domain "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/ClubManager.cs"
click node_reservation_domain "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/ReservationsManager.cs"
click node_payment_domain "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/StripeManager.cs"
click node_transaction_domain "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/TransactionsManager.cs"
click node_repository "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/Repository/IDataRepository.cs"
click node_dbcontext "https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/EntityFramework/ClubMedDbContext.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_clubs_api,node_reservations_api,node_clients_api,node_auth_api,node_stripe_api,node_catalog_api,node_activities_api,node_reviews_api,node_photos_api toneBlue
class node_club_domain,node_reservation_domain,node_payment_domain,node_transaction_domain toneAmber
class node_repository,node_dbcontext toneMint
class node_postgres,node_stripe toneRose
class node_traveler toneIndigo
```

## Components

### HTTP API

- [Club endpoints](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ClubsController.cs): `ClubMed/Controllers/ClubsController.cs`
- [Reservation endpoints](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ReservationsController.cs): `ClubMed/Controllers/ReservationsController.cs`
- [Client endpoints](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ClientsController.cs): `ClubMed/Controllers/ClientsController.cs`
- [Authentication](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/AuthController.cs): `ClubMed/Controllers/AuthController.cs`
- [Stripe endpoints](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/StripeController.cs): `ClubMed/Controllers/StripeController.cs`
- [Travel catalog](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/TypeChambresController.cs): `ClubMed/Controllers/TypeChambresController.cs`
- [Adult activities](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/ActiviteAdultesController.cs): `ClubMed/Controllers/ActiviteAdultesController.cs`
- [Guest reviews](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/AvisController.cs): `ClubMed/Controllers/AvisController.cs`
- [Club photos](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Controllers/PhotosController.cs): `ClubMed/Controllers/PhotosController.cs`

### Travel Domain

- [Club queries](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/ClubManager.cs): `ClubMed/Models/DataManager/ClubManager.cs`
- [Reservation manager](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/ReservationsManager.cs): `ClubMed/Models/DataManager/ReservationsManager.cs`
- [Payment manager](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/StripeManager.cs): `ClubMed/Models/DataManager/StripeManager.cs`
- [Transaction records](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/DataManager/TransactionsManager.cs): `ClubMed/Models/DataManager/TransactionsManager.cs`

### Persistence

- [Repository contract](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/Repository/IDataRepository.cs): `ClubMed/Models/Repository/IDataRepository.cs`
- [EF Core context](https://github.com/nielsgrrr/clubmedv2/blob/master/ClubMed/Models/EntityFramework/ClubMedDbContext.cs): `ClubMed/Models/EntityFramework/ClubMedDbContext.cs`

### External Services

- **PostgreSQL**
- **Stripe**

### Other components

- **Traveler**

## Connections

- Traveler → Club endpoints: browses
- Traveler → Travel catalog: explores rooms
- Traveler → Reservation endpoints: requests booking
- Club endpoints → Club queries: queries clubs
- Club endpoints → Repository contract: reads and updates
- Travel catalog → Repository contract: CRUD operations
- Client endpoints → Repository contract: CRUD operations
- Guest reviews → Repository contract: CRUD operations
- Adult activities → Repository contract: CRUD operations
- Reservation endpoints → Reservation manager: manages reservations
- Stripe endpoints → Payment manager: delegates payments
- Payment manager → Stripe: processes payment
- Reservation endpoints → Transaction records: records transactions
- Reservation manager → EF Core context: queries and saves
- Repository contract → EF Core context: data access
- EF Core context → PostgreSQL: persists entities
