# tjuarroz/eventos-universitarios architecture

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

## Overview

A university event-management platform: users authenticate, discover and manage events, enroll, record attendance, submit satisfaction surveys, and view statistics and attendance forecasts. The React client uses the Java core for business workflows; the core persists operational data and sends historical data or event inputs to Python analytics. The README documents the Python model, recommendations, and trend capabilities. Arrows are limited to relationships shown in excerpts or README; unsampled subsystem links are omitted where caller evidence is unavailable.

Main entry points: [`frontend/src/api.js`](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/api.js) (API client), [`frontend/src/App.jsx`](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/App.jsx) (Routes and access), [`core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java`](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java) (Forecast orchestration), [`analitica-python/app/main.py`](https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/main.py) (Analytics API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Routes and access<br/>[App.jsx]"]
  node_auth_ui["Client authentication<br/>[auth.jsx]"]
  node_api["API client<br/>[api.js]"]
  node_events_ui["Event discovery<br/>[Eventos.jsx]"]
  node_event_detail["Event details<br/>[EventoDetalle.jsx]"]
  node_signup_ui["Enrollment views"]
  node_survey_ui["Survey views<br/>[MisEncuestas.jsx]"]
  node_organizer_ui["Organizer panel"]
  node_attendance_ui["Attendance capture<br/>[Asistencia.jsx]"]
  node_stats_ui["Event statistics<br/>[Estadisticas.jsx]"]
  node_forecast_ui["Forecast views"]
  node_dashboard_ui["Analytics dashboard<br/>[Dashboard.jsx]"]
end

subgraph group_core["Java business core"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_event_service["Event management<br/>[EventoService.java]"]
  node_enrollment["Enrollment and codes"]
  node_attendance["Attendance recording"]
  node_surveys["Satisfaction surveys"]
  node_panel["Panels and statistics<br/>[PanelService.java]"]
  node_forecast["Forecast orchestration"]
  node_analytics_client["Analytics HTTP client"]
end

subgraph group_analytics["Predictive analytics"]
  node_python_api["Analytics API<br/>[main.py]"]
  node_model["Attendance models<br/>[modelo.py]"]
  node_trends["Trend forecasts<br/>[tendencias.py]"]
end

subgraph group_state["Operational data"]
  node_pg[("PostgreSQL")]
  node_event_repo["Event repository"]
  node_enrollment_repo["Enrollment repository"]
  node_prediction_repo["Prediction repository"]
end

node_people(("University users"))

node_people -->|"use"| node_app
node_app -->|"renders"| node_auth_ui
node_app -->|"routes"| node_events_ui
node_app -->|"routes"| node_event_detail
node_app -->|"routes"| node_signup_ui
node_app -->|"routes"| node_survey_ui
node_app -->|"routes"| node_organizer_ui
node_app -->|"routes"| node_attendance_ui
node_app -->|"routes"| node_stats_ui
node_app -->|"routes"| node_forecast_ui
node_app -->|"routes"| node_dashboard_ui
node_auth_ui -->|"calls"| node_api
node_auth_ui -->|"REST auth"| node_auth_service
node_events_ui -.->|"calls"| node_api
node_event_detail -.->|"calls"| node_api
node_signup_ui -.->|"calls"| node_api
node_survey_ui -.->|"calls"| node_api
node_organizer_ui -.->|"calls"| node_api
node_attendance_ui -.->|"calls"| node_api
node_stats_ui -.->|"calls"| node_api
node_forecast_ui -.->|"calls"| node_api
node_dashboard_ui -->|"calls"| node_api
node_people -.->|"browse"| node_events_ui
node_api -.->|"REST events"| node_event_service
node_api -.->|"REST enrollment"| node_enrollment
node_api -.->|"REST attendance"| node_attendance
node_api -.->|"REST surveys"| node_surveys
node_api -.->|"REST panels"| node_panel
node_api -.->|"REST forecasts"| node_forecast
node_auth_service -->|"issues tokens"| node_jwt
node_event_service -->|"queries and saves"| node_event_repo
node_enrollment -.->|"reads and writes"| node_enrollment_repo
node_surveys -->|"reads"| node_enrollment_repo
node_panel -.->|"historical records"| node_python_api
node_forecast -->|"loads history"| node_panel
node_forecast -->|"requests forecasts"| node_analytics_client
node_analytics_client -.->|"HTTP requests"| node_python_api
node_forecast -->|"stores forecasts"| node_prediction_repo
node_python_api -->|"uses"| node_model
node_python_api -->|"uses"| node_trends
node_event_repo -.->|"JPA access"| node_pg
node_enrollment_repo -.->|"JPA access"| node_pg
node_prediction_repo -.->|"JPA access"| node_pg
node_people -->|"register or login"| node_auth_service

click node_app "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/App.jsx"
click node_auth_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/auth.jsx"
click node_api "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/api.js"
click node_events_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Eventos.jsx"
click node_event_detail "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/EventoDetalle.jsx"
click node_signup_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/MisInscripciones.jsx"
click node_survey_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/MisEncuestas.jsx"
click node_organizer_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/PanelOrganizador.jsx"
click node_attendance_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Asistencia.jsx"
click node_stats_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Estadisticas.jsx"
click node_forecast_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/PrediccionEvento.jsx"
click node_dashboard_ui "https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Dashboard.jsx"
click node_auth_service "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AuthService.java"
click node_jwt "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/security/JwtService.java"
click node_event_service "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/EventoService.java"
click node_enrollment "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/InscripcionService.java"
click node_attendance "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AsistenciaService.java"
click node_surveys "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/EncuestaService.java"
click node_panel "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/PanelService.java"
click node_forecast "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java"
click node_analytics_client "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AnaliticaClient.java"
click node_python_api "https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/main.py"
click node_model "https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/modelo.py"
click node_trends "https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/tendencias.py"
click node_event_repo "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/EventoRepository.java"
click node_enrollment_repo "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/InscripcionRepository.java"
click node_prediction_repo "https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/PrediccionRepository.java"

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_auth_ui,node_api,node_events_ui,node_event_detail,node_signup_ui,node_survey_ui,node_organizer_ui,node_attendance_ui,node_stats_ui,node_forecast_ui,node_dashboard_ui,node_people toneBlue
class node_auth_service,node_jwt,node_event_service,node_enrollment,node_attendance,node_surveys,node_panel,node_forecast,node_analytics_client toneAmber
class node_python_api,node_model,node_trends toneMint
class node_pg,node_event_repo,node_enrollment_repo,node_prediction_repo toneRose
```

## Components

### React client

- [Routes and access](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Client authentication](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/auth.jsx): `frontend/src/auth.jsx`
- [API client](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/api.js): `frontend/src/api.js`
- [Event discovery](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Eventos.jsx): `frontend/src/pages/Eventos.jsx`
- [Event details](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/EventoDetalle.jsx): `frontend/src/pages/EventoDetalle.jsx`
- [Enrollment views](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/MisInscripciones.jsx): `frontend/src/pages/MisInscripciones.jsx`
- [Survey views](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/MisEncuestas.jsx): `frontend/src/pages/MisEncuestas.jsx`
- [Organizer panel](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/PanelOrganizador.jsx): `frontend/src/pages/PanelOrganizador.jsx`
- [Attendance capture](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Asistencia.jsx): `frontend/src/pages/Asistencia.jsx`
- [Event statistics](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Estadisticas.jsx): `frontend/src/pages/Estadisticas.jsx`
- [Forecast views](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/PrediccionEvento.jsx): `frontend/src/pages/PrediccionEvento.jsx`
- [Analytics dashboard](https://github.com/tjuarroz/eventos-universitarios/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`

### Java business core

- [Authentication](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AuthService.java): `core-java/src/main/java/ar/edu/eventos/core/service/AuthService.java`
- [JWT service](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/security/JwtService.java): `core-java/src/main/java/ar/edu/eventos/core/security/JwtService.java`
- [Event management](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/EventoService.java): `core-java/src/main/java/ar/edu/eventos/core/service/EventoService.java`
- [Enrollment and codes](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/InscripcionService.java): `core-java/src/main/java/ar/edu/eventos/core/service/InscripcionService.java`
- [Attendance recording](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AsistenciaService.java): `core-java/src/main/java/ar/edu/eventos/core/service/AsistenciaService.java`
- [Satisfaction surveys](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/EncuestaService.java): `core-java/src/main/java/ar/edu/eventos/core/service/EncuestaService.java`
- [Panels and statistics](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/PanelService.java): `core-java/src/main/java/ar/edu/eventos/core/service/PanelService.java`
- [Forecast orchestration](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java): `core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java`
- [Analytics HTTP client](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/service/AnaliticaClient.java): `core-java/src/main/java/ar/edu/eventos/core/service/AnaliticaClient.java`

### Predictive analytics

- [Analytics API](https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/main.py): `analitica-python/app/main.py`
- [Attendance models](https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/modelo.py): `analitica-python/app/modelo.py`
- [Trend forecasts](https://github.com/tjuarroz/eventos-universitarios/blob/main/analitica-python/app/tendencias.py): `analitica-python/app/tendencias.py`

### Operational data

- **PostgreSQL**
- [Event repository](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/EventoRepository.java): `core-java/src/main/java/ar/edu/eventos/core/repository/EventoRepository.java`
- [Enrollment repository](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/InscripcionRepository.java): `core-java/src/main/java/ar/edu/eventos/core/repository/InscripcionRepository.java`
- [Prediction repository](https://github.com/tjuarroz/eventos-universitarios/blob/main/core-java/src/main/java/ar/edu/eventos/core/repository/PrediccionRepository.java): `core-java/src/main/java/ar/edu/eventos/core/repository/PrediccionRepository.java`

### Other components

- **University users**

## Connections

- University users → Routes and access: use (evidence: `frontend/src/App.jsx`)
- Routes and access → Client authentication: renders (evidence: `frontend/src/App.jsx`)
- Routes and access → Event discovery: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Event details: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Enrollment views: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Survey views: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Organizer panel: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Attendance capture: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Event statistics: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Forecast views: routes (evidence: `frontend/src/App.jsx`)
- Routes and access → Analytics dashboard: routes (evidence: `frontend/src/App.jsx`)
- Client authentication → API client: calls (evidence: `frontend/src/auth.jsx`)
- Client authentication → Authentication: REST auth (evidence: `frontend/src/auth.jsx`)
- Event discovery → API client: calls
- Event details → API client: calls
- Enrollment views → API client: calls
- Survey views → API client: calls
- Organizer panel → API client: calls
- Attendance capture → API client: calls
- Event statistics → API client: calls (evidence: `frontend/src/pages/Estadisticas.jsx`)
- Forecast views → API client: calls (evidence: `frontend/src/pages/PrediccionEvento.jsx`)
- Analytics dashboard → API client: calls (evidence: `frontend/src/pages/Dashboard.jsx`)
- University users → Event discovery: browse
- API client → Event management: REST events
- API client → Enrollment and codes: REST enrollment
- API client → Attendance recording: REST attendance
- API client → Satisfaction surveys: REST surveys
- API client → Panels and statistics: REST panels
- API client → Forecast orchestration: REST forecasts
- Authentication → JWT service: issues tokens (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/AuthService.java`)
- Event management → Event repository: queries and saves (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/EventoService.java`)
- Enrollment and codes → Enrollment repository: reads and writes
- Satisfaction surveys → Enrollment repository: reads (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/EncuestaService.java`)
- Panels and statistics → Analytics API: historical records
- Forecast orchestration → Panels and statistics: loads history (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java`)
- Forecast orchestration → Analytics HTTP client: requests forecasts (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java`)
- Analytics HTTP client → Analytics API: HTTP requests
- Forecast orchestration → Prediction repository: stores forecasts (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/PrediccionService.java`)
- Analytics API → Attendance models: uses (evidence: `analitica-python/app/main.py`)
- Analytics API → Trend forecasts: uses (evidence: `analitica-python/app/main.py`)
- Event repository → PostgreSQL: JPA access
- Enrollment repository → PostgreSQL: JPA access
- Prediction repository → PostgreSQL: JPA access
- University users → Authentication: register or login (evidence: `core-java/src/main/java/ar/edu/eventos/core/service/AuthService.java`)
