# jilbertvasquez/ticketing-system architecture

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

- Interactive diagram: https://gitdiagram.com/jilbertvasquez/ticketing-system
- Repository: https://github.com/jilbertvasquez/ticketing-system

## Overview

Ticketing-System is a small real-time ticket availability app: users view a ticket, join its SignalR group, request availability, and order tickets; administrators join the admin group to inspect availability and reset tickets. Angular routes and components invoke a shared RTC service, which sends hub commands and receives broadcasts. The ASP.NET Core hub applies orders and resets to an in-memory store and broadcasts updates. The README documents these capabilities; the UI ticket-list implementation and some hosting/configuration details were not sampled, so their wiring is not expanded here.

Main entry points: [`ticketing-ui/src/app/_services/ticketing-rtc.service.ts`](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/_services/ticketing-rtc.service.ts) (RTC service), [`ticketing-ui/src/app/admin/admin.component.ts`](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/admin/admin.component.ts) (Admin view), [`ticketing-ui/src/app/app.routes.ts`](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/app.routes.ts) (UI routes), [`ticketing-ui/src/app/ticket/ticket-details/ticket-details.component.ts`](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/ticket/ticket-details/ticket-details.component.ts) (Ticket details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Angular UI"]
  node_app["App bootstrap<br/>[main.ts]"]
  node_routes["UI routes<br/>[app.routes.ts]"]
  node_ticket["Ticket view"]
  node_ticket_details["Ticket details"]
  node_admin["Admin view<br/>[admin.component.ts]"]
  node_dialog["Dialogs<br/>[dialog.service.ts]"]
  node_rtc["RTC service"]
  node_app_config["App config<br/>[app.config.ts]"]
end

subgraph group_realtime["SignalR API"]
  node_host["API host<br/>[Program.cs]"]
  node_hub["Ticket hub<br/>[TicketHub.cs]"]
end

subgraph group_state["Ticket state"]
  node_store[("In-memory tickets<br/>[TicketHub.cs]")]
end

node_user(("User"))
node_hub_endpoint["SignalR hub endpoint"]
node_groups["SignalR groups"]

node_user -->|"browses"| node_ticket
node_user -->|"manages"| node_admin
node_app -->|"loads"| node_app_config
node_app -->|"starts"| node_routes
node_routes -->|"routes to"| node_ticket
node_routes -->|"routes to"| node_admin
node_ticket -->|"opens"| node_ticket_details
node_ticket_details -->|"confirms"| node_dialog
node_admin -->|"confirms"| node_dialog
node_ticket_details -->|"requests tickets"| node_rtc
node_admin -->|"requests admin actions"| node_rtc
node_app_config -->|"starts connection"| node_rtc
node_rtc -->|"invokes commands"| node_hub_endpoint
node_hub_endpoint -->|"connects at"| node_host
node_host -->|"maps hub"| node_hub
node_hub -->|"reads and updates"| node_store
node_hub -->|"joins and broadcasts"| node_groups
node_groups -->|"delivers updates"| node_rtc

click node_app "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/main.ts"
click node_routes "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/app.routes.ts"
click node_ticket "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/ticket/ticket.component.ts"
click node_ticket_details "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/ticket/ticket-details/ticket-details.component.ts"
click node_admin "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/admin/admin.component.ts"
click node_dialog "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/_services/dialog.service.ts"
click node_rtc "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/_services/ticketing-rtc.service.ts"
click node_app_config "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/app.config.ts"
click node_host "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Program.cs"
click node_hub "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Hubs/TicketHub.cs"
click node_store "https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Hubs/TicketHub.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_app,node_routes,node_ticket,node_ticket_details,node_admin,node_dialog,node_rtc,node_app_config,node_user toneBlue
class node_host,node_hub toneAmber
class node_store toneMint
class node_hub_endpoint,node_groups toneIndigo
```

## Components

### Angular UI

- [App bootstrap](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/main.ts): `ticketing-ui/src/main.ts`
- [UI routes](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/app.routes.ts): `ticketing-ui/src/app/app.routes.ts`
- [Ticket view](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/ticket/ticket.component.ts): `ticketing-ui/src/app/ticket/ticket.component.ts`
- [Ticket details](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/ticket/ticket-details/ticket-details.component.ts): `ticketing-ui/src/app/ticket/ticket-details/ticket-details.component.ts`
- [Admin view](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/admin/admin.component.ts): `ticketing-ui/src/app/admin/admin.component.ts`
- [Dialogs](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/_services/dialog.service.ts): `ticketing-ui/src/app/_services/dialog.service.ts`
- [RTC service](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/_services/ticketing-rtc.service.ts): `ticketing-ui/src/app/_services/ticketing-rtc.service.ts`
- [App config](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-ui/src/app/app.config.ts): `ticketing-ui/src/app/app.config.ts`

### SignalR API

- [API host](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Program.cs): `ticketing-api/Program.cs`
- [Ticket hub](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Hubs/TicketHub.cs): `ticketing-api/Hubs/TicketHub.cs`

### Ticket state

- [In-memory tickets](https://github.com/jilbertvasquez/ticketing-system/blob/main/ticketing-api/Hubs/TicketHub.cs): `ticketing-api/Hubs/TicketHub.cs`

### Other components

- **User**
- **SignalR hub endpoint**
- **SignalR groups**

## Connections

- User → Ticket view: browses
- User → Admin view: manages
- App bootstrap → App config: loads
- App bootstrap → UI routes: starts
- UI routes → Ticket view: routes to
- UI routes → Admin view: routes to
- Ticket view → Ticket details: opens
- Ticket details → Dialogs: confirms
- Admin view → Dialogs: confirms
- Ticket details → RTC service: requests tickets
- Admin view → RTC service: requests admin actions
- App config → RTC service: starts connection
- RTC service → SignalR hub endpoint: invokes commands
- SignalR hub endpoint → API host: connects at
- API host → Ticket hub: maps hub
- Ticket hub → In-memory tickets: reads and updates
- Ticket hub → SignalR groups: joins and broadcasts
- SignalR groups → RTC service: delivers updates
