# richmondbh/weddingappv3 architecture

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

- Interactive diagram: https://gitdiagram.com/richmondbh/weddingappv3
- Repository: https://github.com/richmondbh/weddingappv3

## Overview

WeddingAppV3 is an ASP.NET Core wedding website: visitors read event and wedding information, register as guests, then submit an RSVP; authorized users manage guests and admins manage content, accounts, and statistics. MVC and JSON APIs expose overlapping guest and statistics capabilities, backed by a shared EF Core/Identity context. The README documents gallery pages and role/claim administration, but their view-level implementation was not sampled; dashed links mark those documented, unverified connections.

Main entry points: [`WeddingAppV3/Data/ApplicationDbContext.cs`](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/ApplicationDbContext.cs) (EF Context), [`WeddingAppV3/Controllers/Api/StatisticsApiController.cs`](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/StatisticsApiController.cs) (Statistics API), [`WeddingAppV3/Controllers/GuestController.cs`](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs) (Guest Registration), [`WeddingAppV3/Controllers/Api/GuestsApiController.cs`](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/GuestsApiController.cs) (Guests API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Wedding Site"]
  node_site["Public Pages<br/>[HomeController.cs]"]
  node_events["Programme<br/>[EventController.cs]"]
  node_info["Wedding Content"]
  node_gallery["Photo Gallery"]
end

subgraph group_guest["Guest RSVP"]
  node_registration["Guest Registration<br/>[GuestController.cs]"]
  node_rsvp["RSVP<br/>[GuestController.cs]"]
end

subgraph group_admin["Protected Management"]
  node_guestadmin["Guest Management<br/>[GuestController.cs]"]
  node_dashboard["Admin Dashboard<br/>[AdminController.cs]"]
  node_contentadmin["Content Management"]
  node_eventadmin["Event Management<br/>[EventController.cs]"]
  node_users["Roles and Claims<br/>[UsersController.cs]"]
end

subgraph group_api["JSON API"]
  node_eventsapi["Events API"]
  node_guestsapi["Guests API"]
  node_statsapi["Statistics API"]
end

subgraph group_core["Identity and Data"]
  node_identity["Account Pages"]
  node_authuser["Application User<br/>[ApplicationUser.cs]"]
  node_dbcontext["EF Context"]
  node_database[("SQLite Store")]
  node_seed["Role Seeding<br/>[SeedData.cs]"]
  node_guestmodel["Guest Records<br/>[Guest.cs]"]
  node_eventmodel["Event Records<br/>[Event.cs]"]
  node_infomodel["Wedding Info<br/>[WeddingInfo.cs]"]
  node_statsservice["Statistics Service"]
end

node_visitor(("Visitor"))
node_apiuser(("API Consumer"))

node_visitor -->|"views"| node_site
node_visitor -.->|"views"| node_events
node_visitor -.->|"views"| node_gallery
node_site -->|"reads"| node_dbcontext
node_events -->|"reads"| node_dbcontext
node_info -->|"reads"| node_dbcontext
node_visitor -->|"registers"| node_registration
node_registration -->|"writes"| node_dbcontext
node_registration -->|"redirects"| node_rsvp
node_visitor -->|"answers"| node_rsvp
node_rsvp -->|"updates"| node_dbcontext
node_guestadmin -->|"manages"| node_dbcontext
node_dashboard -->|"requests stats"| node_statsservice
node_dashboard -->|"reads"| node_dbcontext
node_contentadmin -->|"manages"| node_dbcontext
node_eventadmin -->|"manages"| node_dbcontext
node_users -->|"manages"| node_authuser
node_identity -->|"uses"| node_authuser
node_dbcontext -->|"stores"| node_authuser
node_dbcontext -->|"stores"| node_guestmodel
node_dbcontext -->|"stores"| node_eventmodel
node_dbcontext -->|"stores"| node_infomodel
node_dbcontext -->|"persists"| node_database
node_seed -->|"initializes"| node_dbcontext
node_statsservice -->|"queries"| node_dbcontext
node_apiuser -->|"requests"| node_eventsapi
node_apiuser -->|"requests"| node_guestsapi
node_apiuser -->|"requests"| node_statsapi
node_eventsapi -->|"reads"| node_dbcontext
node_guestsapi -->|"reads"| node_dbcontext
node_statsapi -->|"requests stats"| node_statsservice
node_statsapi -->|"queries"| node_dbcontext
node_apiuser -.->|"admin access"| node_statsapi
node_apiuser -.->|"claim access"| node_guestsapi

click node_site "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/HomeController.cs"
click node_events "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/EventController.cs"
click node_info "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/WeddingInfoController.cs"
click node_gallery "https://github.com/richmondbh/weddingappv3/tree/main/WeddingAppV3/Controllers"
click node_registration "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs"
click node_rsvp "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs"
click node_guestadmin "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs"
click node_dashboard "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/AdminController.cs"
click node_contentadmin "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/WeddingInfoController.cs"
click node_eventadmin "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/EventController.cs"
click node_users "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/UsersController.cs"
click node_identity "https://github.com/richmondbh/weddingappv3/tree/main/WeddingAppV3/Areas/Identity/Pages/Account"
click node_authuser "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/ApplicationUser.cs"
click node_dbcontext "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/ApplicationDbContext.cs"
click node_database "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/ApplicationDbContext.cs"
click node_seed "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/SeedData.cs"
click node_guestmodel "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/Guest.cs"
click node_eventmodel "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/Event.cs"
click node_infomodel "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/WeddingInfo.cs"
click node_statsservice "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Services/StatisticsService.cs"
click node_eventsapi "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/EventsApiController.cs"
click node_guestsapi "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/GuestsApiController.cs"
click node_statsapi "https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/StatisticsApiController.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_site,node_events,node_info,node_gallery toneBlue
class node_registration,node_rsvp toneAmber
class node_guestadmin,node_dashboard,node_contentadmin,node_eventadmin,node_users,node_apiuser toneMint
class node_eventsapi,node_guestsapi,node_statsapi toneRose
class node_identity,node_authuser,node_dbcontext,node_database,node_seed,node_guestmodel,node_eventmodel,node_infomodel,node_statsservice,node_visitor toneIndigo
```

## Components

### Public Wedding Site

- [Public Pages](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/HomeController.cs): `WeddingAppV3/Controllers/HomeController.cs`
- [Programme](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/EventController.cs): `WeddingAppV3/Controllers/EventController.cs`
- [Wedding Content](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/WeddingInfoController.cs): `WeddingAppV3/Controllers/WeddingInfoController.cs`
- [Photo Gallery](https://github.com/richmondbh/weddingappv3/tree/main/WeddingAppV3/Controllers): `WeddingAppV3/Controllers`

### Guest RSVP

- [Guest Registration](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs): `WeddingAppV3/Controllers/GuestController.cs`
- [RSVP](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs): `WeddingAppV3/Controllers/GuestController.cs`

### Protected Management

- [Guest Management](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/GuestController.cs): `WeddingAppV3/Controllers/GuestController.cs`
- [Admin Dashboard](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/AdminController.cs): `WeddingAppV3/Controllers/AdminController.cs`
- [Content Management](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/WeddingInfoController.cs): `WeddingAppV3/Controllers/WeddingInfoController.cs`
- [Event Management](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/EventController.cs): `WeddingAppV3/Controllers/EventController.cs`
- [Roles and Claims](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/UsersController.cs): `WeddingAppV3/Controllers/UsersController.cs`

### JSON API

- [Events API](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/EventsApiController.cs): `WeddingAppV3/Controllers/Api/EventsApiController.cs`
- [Guests API](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/GuestsApiController.cs): `WeddingAppV3/Controllers/Api/GuestsApiController.cs`
- [Statistics API](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Controllers/Api/StatisticsApiController.cs): `WeddingAppV3/Controllers/Api/StatisticsApiController.cs`

### Identity and Data

- [Account Pages](https://github.com/richmondbh/weddingappv3/tree/main/WeddingAppV3/Areas/Identity/Pages/Account): `WeddingAppV3/Areas/Identity/Pages/Account`
- [Application User](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/ApplicationUser.cs): `WeddingAppV3/Models/ApplicationUser.cs`
- [EF Context](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/ApplicationDbContext.cs): `WeddingAppV3/Data/ApplicationDbContext.cs`
- [SQLite Store](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/ApplicationDbContext.cs): `WeddingAppV3/Data/ApplicationDbContext.cs`
- [Role Seeding](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Data/SeedData.cs): `WeddingAppV3/Data/SeedData.cs`
- [Guest Records](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/Guest.cs): `WeddingAppV3/Models/Guest.cs`
- [Event Records](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/Event.cs): `WeddingAppV3/Models/Event.cs`
- [Wedding Info](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Models/WeddingInfo.cs): `WeddingAppV3/Models/WeddingInfo.cs`
- [Statistics Service](https://github.com/richmondbh/weddingappv3/blob/main/WeddingAppV3/Services/StatisticsService.cs): `WeddingAppV3/Services/StatisticsService.cs`

### Other components

- **Visitor**
- **API Consumer**

## Connections

- Visitor → Public Pages: views
- Visitor → Programme: views
- Visitor → Photo Gallery: views
- Public Pages → EF Context: reads (evidence: `WeddingAppV3/Controllers/HomeController.cs`)
- Programme → EF Context: reads (evidence: `WeddingAppV3/Controllers/EventController.cs`)
- Wedding Content → EF Context: reads (evidence: `WeddingAppV3/Controllers/WeddingInfoController.cs`)
- Visitor → Guest Registration: registers (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- Guest Registration → EF Context: writes (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- Guest Registration → RSVP: redirects (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- Visitor → RSVP: answers (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- RSVP → EF Context: updates (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- Guest Management → EF Context: manages (evidence: `WeddingAppV3/Controllers/GuestController.cs`)
- Admin Dashboard → Statistics Service: requests stats (evidence: `WeddingAppV3/Controllers/AdminController.cs`)
- Admin Dashboard → EF Context: reads (evidence: `WeddingAppV3/Controllers/AdminController.cs`)
- Content Management → EF Context: manages (evidence: `WeddingAppV3/Controllers/WeddingInfoController.cs`)
- Event Management → EF Context: manages (evidence: `WeddingAppV3/Controllers/EventController.cs`)
- Roles and Claims → Application User: manages (evidence: `WeddingAppV3/Controllers/UsersController.cs`)
- Account Pages → Application User: uses (evidence: `WeddingAppV3/Areas/Identity/Pages/Account/Login.cshtml.cs`)
- EF Context → Application User: stores (evidence: `WeddingAppV3/Data/ApplicationDbContext.cs`)
- EF Context → Guest Records: stores (evidence: `WeddingAppV3/Data/ApplicationDbContext.cs`)
- EF Context → Event Records: stores (evidence: `WeddingAppV3/Data/ApplicationDbContext.cs`)
- EF Context → Wedding Info: stores (evidence: `WeddingAppV3/Data/ApplicationDbContext.cs`)
- EF Context → SQLite Store: persists (evidence: `WeddingAppV3/Program.cs`)
- Role Seeding → EF Context: initializes (evidence: `WeddingAppV3/Data/SeedData.cs`)
- Statistics Service → EF Context: queries (evidence: `WeddingAppV3/Services/StatisticsService.cs`)
- API Consumer → Events API: requests
- API Consumer → Guests API: requests
- API Consumer → Statistics API: requests
- Events API → EF Context: reads (evidence: `WeddingAppV3/Controllers/Api/EventsApiController.cs`)
- Guests API → EF Context: reads (evidence: `WeddingAppV3/Controllers/Api/GuestsApiController.cs`)
- Statistics API → Statistics Service: requests stats (evidence: `WeddingAppV3/Controllers/Api/StatisticsApiController.cs`)
- Statistics API → EF Context: queries (evidence: `WeddingAppV3/Controllers/Api/StatisticsApiController.cs`)
- API Consumer → Statistics API: admin access
- API Consumer → Guests API: claim access
