# lusalvi/sipro-gestor-de-proyectos-hu architecture

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

- Interactive diagram: https://gitdiagram.com/lusalvi/sipro-gestor-de-proyectos-hu
- Repository: https://github.com/lusalvi/sipro-gestor-de-proyectos-hu

## Overview

SiPro is a hospital project-management application built with Laravel and React/Inertia. Users work within organizational areas, access projects, manage hierarchical tasks and collaborate through comments, notes, activity, and notifications; personal planning and project calendar/timeline views are additional workflows. The README documents the major UI capabilities and stack, while source-index references and excerpts support selected backend calls and model relationships. Several routes, frontend data requests, and integrations were not sampled, so those links are omitted or marked unverified.

Main entry points: [`app/Http/Controllers/TaskController.php`](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/TaskController.php) (Project tasks API), [`app/Models/Project.php`](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Project.php) (Projects), [`app/Models/Task.php`](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Task.php) (Task hierarchy), [`app/Services/PermissionService.php`](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Services/PermissionService.php) (Access rules)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_frontend["React Inertia app<br/>[app.jsx]"]
  node_project_views["Project task views<br/>[Index.jsx]"]
  node_timeline["Gantt timeline<br/>[Index.jsx]"]
  node_calendar["Project calendar<br/>[Index.jsx]"]
  node_personal_ui["Personal agenda<br/>[Index.jsx]"]
end

subgraph group_project_work["Project work"]
  node_project_controller["Project tasks API<br/>[TaskController.php]"]
  node_task_actions["Task actions<br/>[CreateTask.php]"]
  node_task_model[("Task hierarchy<br/>[Task.php]")]
  node_task_groups[("Task groups<br/>[TaskGroup.php]")]
  node_project_model[("Projects<br/>[Project.php]")]
end

subgraph group_organization["Organization and access"]
  node_area_controller["Area management<br/>[AreaController.php]"]
  node_area_model[("Organizational areas<br/>[Area.php]")]
  node_user_model[("Users and roles<br/>[User.php]")]
  node_permissions["Access rules"]
end

subgraph group_collaboration["Collaboration and planning"]
  node_personal_controller["Personal task handler"]
  node_personal_model[("Personal tasks<br/>[PersonalTask.php]")]
  node_notes_controller["Project notes<br/>[NoteController.php]"]
  node_note_encryption["Note encryption<br/>[NoteEncryption.php]"]
  node_activity[("Activity history<br/>[Activity.php]")]
  node_subscriber_listener["Subscriber notifications"]
  node_notification["User notifications"]
end

subgraph group_platform["Application platform"]
  node_routes["HTTP route registration"]
  node_database[("Relational database<br/>[database.php]")]
end

node_user(("Hospital user"))

node_user -->|"uses"| node_frontend
node_frontend -.->|"opens"| node_project_views
node_project_views -.->|"requests tasks"| node_project_controller
node_timeline -.->|"edits project tasks"| node_project_controller
node_calendar -.->|"views project schedule"| node_project_controller
node_personal_ui -.->|"manages agenda"| node_personal_controller
node_routes -.->|"routes requests"| node_project_controller
node_project_controller -->|"invokes"| node_task_actions
node_task_actions -->|"creates or updates"| node_task_model
node_project_controller -->|"queries tasks"| node_task_model
node_project_controller -->|"loads groups"| node_task_groups
node_project_controller -->|"loads project"| node_project_model
node_task_model -->|"belongs to project"| node_project_model
node_task_model -->|"belongs to group"| node_task_groups
node_personal_controller -->|"manages"| node_personal_model
node_notes_controller -->|"uses"| node_note_encryption
node_notes_controller -->|"loads project notes"| node_project_model
node_area_controller -->|"manages areas"| node_area_model
node_area_controller -->|"checks project access"| node_permissions
node_user_model -->|"checks access"| node_permissions
node_permissions -->|"filters projects"| node_project_model
node_area_model -->|"groups projects"| node_project_model
node_subscriber_listener -->|"sends notification"| node_notification
node_project_controller -.->|"reads and writes"| node_database
node_user_model -.->|"persists users"| node_database

click node_frontend "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/app.jsx"
click node_project_views "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Tasks/Index.jsx"
click node_timeline "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Timeline/Index.jsx"
click node_calendar "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Calendar/Index.jsx"
click node_personal_ui "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/PersonalTasks/Index.jsx"
click node_project_controller "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/TaskController.php"
click node_task_actions "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Actions/Task/CreateTask.php"
click node_task_model "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Task.php"
click node_task_groups "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/TaskGroup.php"
click node_project_model "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Project.php"
click node_personal_controller "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/PersonalTasks/PersonalTaskController.php"
click node_personal_model "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/PersonalTask.php"
click node_notes_controller "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/Note/NoteController.php"
click node_note_encryption "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Services/NoteEncryption.php"
click node_activity "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Activity.php"
click node_subscriber_listener "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Listeners/NotifyTaskSubscribers.php"
click node_notification "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Notifications/TaskCreatedNotification.php"
click node_area_controller "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/Area/AreaController.php"
click node_area_model "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Area.php"
click node_user_model "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/User.php"
click node_permissions "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Services/PermissionService.php"
click node_routes "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Providers/RouteServiceProvider.php"
click node_database "https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/config/database.php"

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_frontend,node_project_views,node_timeline,node_calendar,node_personal_ui,node_user toneBlue
class node_project_controller,node_task_actions,node_task_model,node_task_groups,node_project_model toneAmber
class node_area_controller,node_area_model,node_user_model,node_permissions toneMint
class node_personal_controller,node_personal_model,node_notes_controller,node_note_encryption,node_activity,node_subscriber_listener,node_notification toneRose
class node_routes,node_database toneIndigo
```

## Components

### User experience

- [React Inertia app](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/app.jsx): `resources/js/app.jsx`
- [Project task views](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Tasks/Index.jsx): `resources/js/pages/Projects/Tasks/Index.jsx`
- [Gantt timeline](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Timeline/Index.jsx): `resources/js/pages/Projects/Timeline/Index.jsx`
- [Project calendar](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/Projects/Calendar/Index.jsx): `resources/js/pages/Projects/Calendar/Index.jsx`
- [Personal agenda](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/resources/js/pages/PersonalTasks/Index.jsx): `resources/js/pages/PersonalTasks/Index.jsx`

### Project work

- [Project tasks API](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/TaskController.php): `app/Http/Controllers/TaskController.php`
- [Task actions](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Actions/Task/CreateTask.php): `app/Actions/Task/CreateTask.php`
- [Task hierarchy](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Task.php): `app/Models/Task.php`
- [Task groups](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/TaskGroup.php): `app/Models/TaskGroup.php`
- [Projects](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Project.php): `app/Models/Project.php`

### Organization and access

- [Area management](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/Area/AreaController.php): `app/Http/Controllers/Area/AreaController.php`
- [Organizational areas](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Area.php): `app/Models/Area.php`
- [Users and roles](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/User.php): `app/Models/User.php`
- [Access rules](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Services/PermissionService.php): `app/Services/PermissionService.php`

### Collaboration and planning

- [Personal task handler](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/PersonalTasks/PersonalTaskController.php): `app/Http/Controllers/PersonalTasks/PersonalTaskController.php`
- [Personal tasks](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/PersonalTask.php): `app/Models/PersonalTask.php`
- [Project notes](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Http/Controllers/Note/NoteController.php): `app/Http/Controllers/Note/NoteController.php`
- [Note encryption](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Services/NoteEncryption.php): `app/Services/NoteEncryption.php`
- [Activity history](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Models/Activity.php): `app/Models/Activity.php`
- [Subscriber notifications](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Listeners/NotifyTaskSubscribers.php): `app/Listeners/NotifyTaskSubscribers.php`
- [User notifications](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Notifications/TaskCreatedNotification.php): `app/Notifications/TaskCreatedNotification.php`

### Application platform

- [HTTP route registration](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/app/Providers/RouteServiceProvider.php): `app/Providers/RouteServiceProvider.php`
- [Relational database](https://github.com/lusalvi/sipro-gestor-de-proyectos-hu/blob/main/config/database.php): `config/database.php`

### Other components

- **Hospital user**

## Connections

- Hospital user → React Inertia app: uses (evidence: `README.md`)
- React Inertia app → Project task views: opens
- Project task views → Project tasks API: requests tasks
- Gantt timeline → Project tasks API: edits project tasks
- Project calendar → Project tasks API: views project schedule
- Personal agenda → Personal task handler: manages agenda
- HTTP route registration → Project tasks API: routes requests
- Project tasks API → Task actions: invokes (evidence: `app/Http/Controllers/TaskController.php`)
- Task actions → Task hierarchy: creates or updates (evidence: `app/Actions/Task/CreateTask.php`)
- Project tasks API → Task hierarchy: queries tasks (evidence: `app/Http/Controllers/TaskController.php`)
- Project tasks API → Task groups: loads groups (evidence: `app/Http/Controllers/TaskController.php`)
- Project tasks API → Projects: loads project (evidence: `app/Http/Controllers/TaskController.php`)
- Task hierarchy → Projects: belongs to project (evidence: `app/Models/Task.php`)
- Task hierarchy → Task groups: belongs to group (evidence: `app/Models/Task.php`)
- Personal task handler → Personal tasks: manages (evidence: `app/Http/Controllers/PersonalTasks/PersonalTaskController.php`)
- Project notes → Note encryption: uses (evidence: `app/Http/Controllers/Note/NoteController.php`)
- Project notes → Projects: loads project notes (evidence: `app/Http/Controllers/Note/NoteController.php`)
- Area management → Organizational areas: manages areas (evidence: `app/Http/Controllers/Area/AreaController.php`)
- Area management → Access rules: checks project access (evidence: `app/Http/Controllers/Area/AreaController.php`)
- Users and roles → Access rules: checks access (evidence: `app/Models/User.php`)
- Access rules → Projects: filters projects (evidence: `app/Services/PermissionService.php`)
- Organizational areas → Projects: groups projects (evidence: `app/Models/Area.php`)
- Subscriber notifications → User notifications: sends notification (evidence: `app/Listeners/NotifyTaskSubscribers.php`)
- Project tasks API → Relational database: reads and writes
- Users and roles → Relational database: persists users
