# 24heuresinsa/overbookd architecture

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

- Interactive diagram: https://gitdiagram.com/24heuresinsa/overbookd
- Repository: https://github.com/24heuresinsa/overbookd

## Overview

Overbookd is a festival operations platform. Its visible workflow lets organizers and reviewers work with festival tasks and activities: API controllers expose previews and review actions, services handle requests, and domain models represent review states and assignment readiness. The broader tree also shows volunteer assignment, availability, membership and contribution management, event participation, logistics, and signage capabilities. Source excerpts confirm controller-to-service calls; several other subsystem connections are uncertain because their implementation was not sampled, so those links are omitted rather than inferred.

Main entry points: [`apps/api/src`](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src) (API application), [`apps/api/src/festival-event/task/review/festival-task-review.controller.ts`](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.controller.ts) (Task review routes), [`apps/api/src/festival-event/task/review/festival-task-review.service.ts`](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.service.ts) (Task review service), [`apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts`](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts) (Task preview routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_festival["Festival planning"]
  node_task_review["Task review routes"]
  node_task_review_service["Task review service"]
  node_task_preview["Task preview routes"]
  node_activity_preview["Activity previews"]
  node_activity_review["Activity review routes"]
  node_activity_review_service["Activity review service"]
  node_task_domain["Task state model<br/>[festival-task.ts]"]
  node_task_review_store[("Task review persistence")]
end

subgraph group_volunteers["Volunteer operations"]
  node_assignment["Volunteer assignment"]
  node_availability["Volunteer availability"]
end

subgraph group_community["Membership and finance"]
  node_registration["Membership registration"]
  node_contributions["Contributions"]
  node_access["Team access"]
end

subgraph group_operations["Event operations"]
  node_charisma["Event participation"]
  node_logistics["Gear and signage"]
end

subgraph group_platform["API and identity"]
  node_api["API application"]
  node_auth["Authentication and permissions"]
  node_database[("Application database<br/>[prisma.service.ts]")]
end

node_organizer(("Organizer / reviewer"))
node_web["Web application"]

node_organizer -.->|"uses"| node_web
node_web -.->|"requests data"| node_api
node_api -.->|"routes requests"| node_task_review
node_api -.->|"routes requests"| node_task_preview
node_api -.->|"routes requests"| node_activity_preview
node_api -.->|"routes requests"| node_activity_review
node_task_review -->|"invokes"| node_task_review_service
node_activity_review -->|"invokes"| node_activity_review_service
node_task_review_service -.->|"persists review"| node_task_review_store
node_task_review -->|"returns task state"| node_task_domain
node_task_review_store -->|"reads and writes"| node_database
node_task_preview -.->|"returns previews"| node_task_domain
node_activity_preview -.->|"serves preview data"| node_organizer
node_organizer -.->|"manages staffing"| node_assignment
node_assignment -.->|"checks availability"| node_availability
node_organizer -.->|"manages members"| node_registration
node_organizer -.->|"manages payments"| node_contributions
node_organizer -.->|"manages team access"| node_access
node_organizer -.->|"manages participation"| node_charisma
node_organizer -.->|"manages signage"| node_logistics
node_auth -.->|"guards routes"| node_api

click node_web "https://github.com/24heuresinsa/overbookd/tree/main/apps/web"
click node_api "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src"
click node_task_review "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.controller.ts"
click node_task_review_service "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.service.ts"
click node_task_preview "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts"
click node_activity_preview "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/preview/festival-activity-preview.controller.ts"
click node_activity_review "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/review/festival-activity-review.controller.ts"
click node_activity_review_service "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/review/festival-activity-review.service.ts"
click node_task_domain "https://github.com/24heuresinsa/overbookd/blob/main/domains/festival-event/src/festival-task/festival-task.ts"
click node_task_review_store "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/common/repository/review-festival-tasks.prisma.ts"
click node_assignment "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/assignment"
click node_availability "https://github.com/24heuresinsa/overbookd/blob/main/domains/volunteer-availability/src/period-orchestrator.ts"
click node_registration "https://github.com/24heuresinsa/overbookd/tree/main/domains/registration/src"
click node_contributions "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/contribution"
click node_access "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/access-manager"
click node_charisma "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/charisma-event"
click node_logistics "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/catalog-signage"
click node_auth "https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/authentication-zitadel"
click node_database "https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/prisma.service.ts"

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_task_review,node_task_review_service,node_task_preview,node_activity_preview,node_activity_review,node_activity_review_service,node_task_domain,node_task_review_store,node_organizer toneBlue
class node_assignment,node_availability toneAmber
class node_registration,node_contributions,node_access toneMint
class node_charisma,node_logistics toneRose
class node_api,node_auth,node_database toneIndigo
class node_web toneTeal
```

## Components

### Festival planning

- [Task review routes](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.controller.ts): `apps/api/src/festival-event/task/review/festival-task-review.controller.ts`
- [Task review service](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/review/festival-task-review.service.ts): `apps/api/src/festival-event/task/review/festival-task-review.service.ts`
- [Task preview routes](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts): `apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts`
- [Activity previews](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/preview/festival-activity-preview.controller.ts): `apps/api/src/festival-event/activity/preview/festival-activity-preview.controller.ts`
- [Activity review routes](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/review/festival-activity-review.controller.ts): `apps/api/src/festival-event/activity/review/festival-activity-review.controller.ts`
- [Activity review service](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/activity/review/festival-activity-review.service.ts): `apps/api/src/festival-event/activity/review/festival-activity-review.service.ts`
- [Task state model](https://github.com/24heuresinsa/overbookd/blob/main/domains/festival-event/src/festival-task/festival-task.ts): `domains/festival-event/src/festival-task/festival-task.ts`
- [Task review persistence](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/festival-event/task/common/repository/review-festival-tasks.prisma.ts): `apps/api/src/festival-event/task/common/repository/review-festival-tasks.prisma.ts`

### Volunteer operations

- [Volunteer assignment](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/assignment): `apps/api/src/assignment`
- [Volunteer availability](https://github.com/24heuresinsa/overbookd/blob/main/domains/volunteer-availability/src/period-orchestrator.ts): `domains/volunteer-availability/src/period-orchestrator.ts`

### Membership and finance

- [Membership registration](https://github.com/24heuresinsa/overbookd/tree/main/domains/registration/src): `domains/registration/src`
- [Contributions](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/contribution): `apps/api/src/contribution`
- [Team access](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/access-manager): `apps/api/src/access-manager`

### Event operations

- [Event participation](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/charisma-event): `apps/api/src/charisma-event`
- [Gear and signage](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/catalog-signage): `apps/api/src/catalog-signage`

### API and identity

- [API application](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src): `apps/api/src`
- [Authentication and permissions](https://github.com/24heuresinsa/overbookd/tree/main/apps/api/src/authentication-zitadel): `apps/api/src/authentication-zitadel`
- [Application database](https://github.com/24heuresinsa/overbookd/blob/main/apps/api/src/prisma.service.ts): `apps/api/src/prisma.service.ts`

### Other components

- **Organizer / reviewer**
- [Web application](https://github.com/24heuresinsa/overbookd/tree/main/apps/web): `apps/web`

## Connections

- Organizer / reviewer → Web application: uses
- Web application → API application: requests data
- API application → Task review routes: routes requests (evidence: `apps/api/src/festival-event/task/review/festival-task-review.controller.ts`)
- API application → Task preview routes: routes requests (evidence: `apps/api/src/festival-event/task/preview/festival-task-preview.controller.ts`)
- API application → Activity previews: routes requests (evidence: `apps/api/src/festival-event/activity/preview/festival-activity-preview.controller.ts`)
- API application → Activity review routes: routes requests (evidence: `apps/api/src/festival-event/activity/review/festival-activity-review.controller.ts`)
- Task review routes → Task review service: invokes (evidence: `apps/api/src/festival-event/task/review/festival-task-review.controller.ts`)
- Activity review routes → Activity review service: invokes (evidence: `apps/api/src/festival-event/activity/review/festival-activity-review.controller.ts`)
- Task review service → Task review persistence: persists review
- Task review routes → Task state model: returns task state (evidence: `apps/api/src/festival-event/task/review/festival-task-review.controller.ts`)
- Task review persistence → Application database: reads and writes (evidence: `apps/api/src/festival-event/task/common/repository/review-festival-tasks.prisma.ts`)
- Task preview routes → Task state model: returns previews
- Activity previews → Organizer / reviewer: serves preview data
- Organizer / reviewer → Volunteer assignment: manages staffing
- Volunteer assignment → Volunteer availability: checks availability
- Organizer / reviewer → Membership registration: manages members
- Organizer / reviewer → Contributions: manages payments
- Organizer / reviewer → Team access: manages team access
- Organizer / reviewer → Event participation: manages participation
- Organizer / reviewer → Gear and signage: manages signage
- Authentication and permissions → API application: guards routes (evidence: `apps/api/src/authentication-zitadel/request-hydrated-user.ts`)
