# sofiaolmospino/eventhub architecture

> Architecture diagram of the GitHub repository sofiaolmospino/eventhub, 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/sofiaolmospino/eventhub
- Repository: https://github.com/sofiaolmospino/eventhub

## Overview

EventHub is an early-stage event-management platform, currently represented mainly by domain models and one implemented event-service/repository slice. Its documented end-to-end workflow is event publication, participant enrollment with capacity and waitlist handling, attendance recording, then attendance-qualified certification. Dashed workflow links reflect README requirements, not verified runtime wiring: the sampled web controller is empty, and the enrollment, attendance, waitlist, and certificate areas contain domain models but no sampled orchestration. Communications, feedback, venues, sessions, roles, and reporting remain documented or modeled capabilities.

Main entry points: [`src/main/java/com/eventhub/evento/application/EventoService.java`](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/application/EventoService.java) (Event service), [`src/main/java/com/eventhub/inscripcion/domain/Inscripcion.java`](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/inscripcion/domain/Inscripcion.java) (Enrollment), [`src/main/java/com/eventhub/evento/infrastructure/adapter/in/web/EventoController.java`](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/infrastructure/adapter/in/web/EventoController.java) (Event web entry), [`src/main/java/com/eventhub/evento/domain/Evento.java`](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/domain/Evento.java) (Event model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_event["Event management"]
  node_event_api["Event web entry"]
  node_event_service["Event service<br/>[EventoService.java]"]
  node_event_model["Event model<br/>[Evento.java]"]
  node_event_repository["Event repository port"]
  node_event_memory[("In-memory event store")]
  node_sessions["Event sessions<br/>[SesionEvento.java]"]
  node_venues["Venues and rooms<br/>[Sede.java]"]
end

subgraph group_enrollment["Enrollment lifecycle"]
  node_enrollment["Enrollment<br/>[Inscripcion.java]"]
  node_waitlist["Waitlist and capacity<br/>[ListaEspera.java]"]
end

subgraph group_participation["Participation services"]
  node_attendee["Participant records<br/>[Participante.java]"]
  node_attendance["Attendance tracking<br/>[Asistencia.java]"]
  node_certificate["Attendance certificates<br/>[Certificado.java]"]
  node_feedback["Participant feedback<br/>[Feedback.java]"]
end

subgraph group_platform["Platform capabilities"]
  node_communications["Event communications<br/>[Comunicacion.java]"]
  node_users["Users and roles<br/>[Usuario.java]"]
  node_reports["Reports and indicators"]
end

node_organizer(("Organizer"))
node_participant_actor(("Participant"))

node_organizer -.->|"publishes"| node_event_api
node_event_api -.->|"would dispatch"| node_event_service
node_event_service -->|"calls"| node_event_repository
node_event_repository -->|"implemented by"| node_event_memory
node_event_service -->|"creates"| node_event_model
node_event_model -->|"holds sessions"| node_sessions
node_participant_actor -.->|"requests enrollment"| node_enrollment
node_enrollment -.->|"queues if full"| node_waitlist
node_enrollment -.->|"precedes"| node_attendance
node_attendance -.->|"qualifies for"| node_certificate
node_participant_actor -.->|"submits"| node_feedback
node_organizer -.->|"manages"| node_communications
node_organizer -.->|"consults"| node_reports
node_organizer -.->|"administers"| node_users

click node_event_api "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/infrastructure/adapter/in/web/EventoController.java"
click node_event_service "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/application/EventoService.java"
click node_event_model "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/domain/Evento.java"
click node_event_repository "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/domain/port/EventoRepository.java"
click node_event_memory "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/infrastructure/memory/EventoRepositoryEnMemoria.java"
click node_sessions "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/sesionevento/domain/SesionEvento.java"
click node_venues "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/sede/domain/Sede.java"
click node_enrollment "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/inscripcion/domain/Inscripcion.java"
click node_waitlist "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/listaespera/domain/ListaEspera.java"
click node_attendee "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/participante/domain/Participante.java"
click node_attendance "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/asistencia/domain/Asistencia.java"
click node_certificate "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/certificado/domain/Certificado.java"
click node_feedback "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/feedback/domain/Feedback.java"
click node_communications "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/comunicacion/domain/Comunicacion.java"
click node_users "https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/usuario/domain/Usuario.java"
click node_reports "https://github.com/sofiaolmospino/eventhub/tree/main/src/main/java/com/eventhub"

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_event_api,node_event_service,node_event_model,node_event_repository,node_event_memory,node_sessions,node_venues toneBlue
class node_enrollment,node_waitlist toneAmber
class node_attendee,node_attendance,node_certificate,node_feedback toneMint
class node_communications,node_users,node_reports toneRose
class node_organizer,node_participant_actor toneIndigo
```

## Components

### Event management

- [Event web entry](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/infrastructure/adapter/in/web/EventoController.java): `src/main/java/com/eventhub/evento/infrastructure/adapter/in/web/EventoController.java`
- [Event service](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/application/EventoService.java): `src/main/java/com/eventhub/evento/application/EventoService.java`
- [Event model](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/domain/Evento.java): `src/main/java/com/eventhub/evento/domain/Evento.java`
- [Event repository port](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/domain/port/EventoRepository.java): `src/main/java/com/eventhub/evento/domain/port/EventoRepository.java`
- [In-memory event store](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/evento/infrastructure/memory/EventoRepositoryEnMemoria.java): `src/main/java/com/eventhub/evento/infrastructure/memory/EventoRepositoryEnMemoria.java`
- [Event sessions](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/sesionevento/domain/SesionEvento.java): `src/main/java/com/eventhub/sesionevento/domain/SesionEvento.java`
- [Venues and rooms](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/sede/domain/Sede.java): `src/main/java/com/eventhub/sede/domain/Sede.java`

### Enrollment lifecycle

- [Enrollment](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/inscripcion/domain/Inscripcion.java): `src/main/java/com/eventhub/inscripcion/domain/Inscripcion.java`
- [Waitlist and capacity](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/listaespera/domain/ListaEspera.java): `src/main/java/com/eventhub/listaespera/domain/ListaEspera.java`

### Participation services

- [Participant records](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/participante/domain/Participante.java): `src/main/java/com/eventhub/participante/domain/Participante.java`
- [Attendance tracking](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/asistencia/domain/Asistencia.java): `src/main/java/com/eventhub/asistencia/domain/Asistencia.java`
- [Attendance certificates](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/certificado/domain/Certificado.java): `src/main/java/com/eventhub/certificado/domain/Certificado.java`
- [Participant feedback](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/feedback/domain/Feedback.java): `src/main/java/com/eventhub/feedback/domain/Feedback.java`

### Platform capabilities

- [Event communications](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/comunicacion/domain/Comunicacion.java): `src/main/java/com/eventhub/comunicacion/domain/Comunicacion.java`
- [Users and roles](https://github.com/sofiaolmospino/eventhub/blob/main/src/main/java/com/eventhub/usuario/domain/Usuario.java): `src/main/java/com/eventhub/usuario/domain/Usuario.java`
- [Reports and indicators](https://github.com/sofiaolmospino/eventhub/tree/main/src/main/java/com/eventhub): `src/main/java/com/eventhub`

### Other components

- **Organizer**
- **Participant**

## Connections

- Organizer → Event web entry: publishes
- Event web entry → Event service: would dispatch
- Event service → Event repository port: calls
- Event repository port → In-memory event store: implemented by
- Event service → Event model: creates
- Event model → Event sessions: holds sessions
- Participant → Enrollment: requests enrollment
- Enrollment → Waitlist and capacity: queues if full
- Enrollment → Attendance tracking: precedes
- Attendance tracking → Attendance certificates: qualifies for
- Participant → Participant feedback: submits
- Organizer → Event communications: manages
- Organizer → Reports and indicators: consults
- Organizer → Users and roles: administers
