# jennymph/tt-web-backend architecture

> Architecture diagram of the GitHub repository jennymph/tt-web-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jennymph/tt-web-backend
- Repository: https://github.com/jennymph/tt-web-backend

## Overview

1. **What this repository is**
   - `TT-Web` is a **Laravel-based REST backend** for managing the “proceso de protocolos” at ESCOM.
   - The architecture is server-side focused: HTTP APIs, database persistence, email delivery, and a small set of Blade views for mail/templates and public pages.

2. **Top-level application boundary**
   - The application follows the standard Laravel split: `routes` receive requests, `app/Http/Controllers` orchestrate logic, `app/Models` map to the database, and `database/migrations` define the schema.
   - The main runtime boundary is the Laravel HTTP kernel plus middleware stack, with an additional CLI boundary through `artisan` and console kernel.

3. **Primary business areas**
   - The codebase centers on a few domain objects:
     - `User` for authentication and account management
     - `Student`
     - `Staff`
     - `Protocol`
     - `DatesAndTerms`
     - `Consulta` for contact/help inquiries
   - These suggest the backend coordinates users and academic protocol records, with time/term configuration as a separate concern.

4. **HTTP/API layer**
   - Controllers in `app/Http/Controllers` are the main entry points:
     - `AuthController`
     - `UsersController`
     - `StudentController`
     - `StaffController`
     - `ProtocolController`
     - `DatesAndTermsController`
     - `VerifyMail`
   - Routes are split between `routes/web.php` and `routes/api.php`, so the app likely serves both browser-facing pages and API endpoints.

5. **Authentication and session/token handling**
   - Auth is reinforced by Laravel middleware and config, including `Authenticate`, `RedirectIfAuthenticated`, `UpdateTokenExpiry`, and `ValidateSignature`.
   - `config/sanctum.php` and `personal_access_tokens` migration indicate **Laravel Sanctum** is used for API authentication/token access.
   - `config/session.php` and the standard Laravel auth scaffolding suggest some routes may still rely on session-based behavior for web flows.

6. **Persistence and database model**
   - Database structure is defined entirely through migrations, including users, students, staff, protocols, consultas, and dates/terms.
   - There is a migration to enable **PostgreSQL extensions**, which strongly suggests PostgreSQL is the primary database.
   - Eloquent models mirror the tables and are the main persistence abstraction; no separate repository layer is present.

7. **Protocol document/file handling**
   - `app/Services/FileService.php` is a dedicated service boundary for file operations.
   - This likely supports protocol-related attachments, PDF handling, or uploads stored via Laravel’s filesystem abstraction (`config/filesystems.php`).
   - The migration `change_pdf_type_in_protocols` implies protocol records store PDF-related data or references.

8. **Email and communication flow**
   - Mail classes in `app/Mail` show a distinct outbound communication subsystem:
     - `BienvenidoVerifMail`
     - `EnvioCorreoMailabre`
     - `MensajeDeContacto`
     - `RecuperarContrasena`
   - Corresponding Blade templates in `resources/views` support email content and likely public contact/recovery pages.
   - This mail flow is important for account verification, password recovery, and contact messages.

9. **Middleware and request processing**
   - The custom middleware `UpdateTokenExpiry` is notable because it suggests token lifecycle management beyond default Laravel behavior.
   - Standard Laravel middleware handles CSRF, cookie encryption, proxy trust, host trust, maintenance mode, and auth gating.
   - This indicates a conventional request pipeline with one custom extension around token freshness.

10. **Presentation layer**
   - `resources/views` contains a small set of Blade templates (`welcome`, `contacto`, `Recuperar`, `BienvenidoVerifMail`, etc.), so the UI footprint is limited and mostly supportive.
   - `resources/js` and `resources/css` exist with Vite configuration, but this appears secondary to the backend API role.
   - The UI layer likely serves account/contact/recovery screens rather than a large SPA.

11. **Operational and framework infrastructure**
   - The app uses standard Laravel providers, logging, cache, queue, broadcasting, and CORS configuration.
   - `config/queue.php` and mail configuration imply asynchronous-capable infrastructure, even if the current codebase may primarily use synchronous execution.
   - `public/index.php` is the web entry point, while `artisan` is the CLI/admin entry point.

12. **Testing and documentation artifacts**
   - There is a basic PHPUnit setup under `tests`, currently with scaffold tests.
   - `umlDiagrams/` contains Visual Paradigm files, indicating the project has existing design documentation outside the codebase.
   - These artifacts suggest the repository is maintained with explicit modeling/documentation in mind, even if implementation tests are minimal.

13. **Overall data flow**
   - A typical request enters through Laravel routing, passes middleware/auth checks, reaches a controller, then reads/writes Eloquent models backed by PostgreSQL migrations.
   - If needed, the controller delegates file work to `FileService` or email work to a Mailable class.
   - Responses are returned as API payloads or Blade-rendered pages depending on the route group.

14. **Architecture summary for a diagram**
   - The clearest diagram would show four layers: **HTTP/API + Middleware**, **Controllers**, **Domain/Persistence Models**, and **Infrastructure services** (database, mail, filesystem, auth tokens).
   - The key external systems are **PostgreSQL**, **email delivery**, and **Laravel Sanctum token auth**.
   - The app is not a generic frontend-heavy system; it is primarily a **backend workflow service** for managing protocol-related academic records and communications.

Main entry points: [`src/database/migrations/2025_02_29_061853_create_protocols_table.php`](https://github.com/jennymph/tt-web-backend/blob/main/src/database/migrations/2025_02_29_061853_create_protocols_table.php) (Migrations), [`src/app/Http/Kernel.php`](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Kernel.php) (HTTP Kernel), [`src/routes/api.php`](https://github.com/jennymph/tt-web-backend/blob/main/src/routes/api.php) (API Routes), [`src/app/Http/Controllers/UsersController.php`](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/UsersController.php) (Users)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry & Runtime"]
  node_public_index(("Entry<br/>[index.php]"))
  node_artisan(("Artisan<br/>cli entry"))
  node_console_kernel["Console Kernel<br/>cli kernel<br/>[Kernel.php]"]
end

subgraph group_http["HTTP Layer"]
  node_http_kernel["HTTP Kernel<br/>request kernel<br/>[Kernel.php]"]
  node_web_routes["Web Routes<br/>route map<br/>[web.php]"]
  node_api_routes["API Routes<br/>route map<br/>[api.php]"]
  node_auth_controller["Auth<br/>controller<br/>[AuthController.php]"]
  node_users_controller["Users<br/>controller"]
  node_student_controller["Students<br/>controller"]
  node_staff_controller["Staff<br/>controller"]
  node_protocol_controller["Protocols<br/>controller"]
  node_terms_controller["Dates & Terms<br/>controller"]
  node_verify_mail_controller["Verify Mail<br/>controller<br/>[VerifyMail.php]"]
  node_middleware_auth["Auth Guard<br/>middleware<br/>[Authenticate.php]"]
  node_middleware_redirect["Redirect Auth<br/>middleware"]
  node_middleware_token["Token Expiry<br/>middleware"]
  node_middleware_signature["Signed URL<br/>middleware"]
end

subgraph group_domain["Domain & Data"]
  node_user_model[("User<br/>eloquent model<br/>[User.php]")]
  node_student_model[("Student<br/>eloquent model<br/>[Student.php]")]
  node_staff_model[("Staff<br/>eloquent model<br/>[Staff.php]")]
  node_protocol_model[("Protocol<br/>eloquent model<br/>[Protocol.php]")]
  node_terms_model[("Dates & Terms<br/>eloquent model<br/>[DatesAndTerms.php]")]
  node_consulta_model[("Consulta<br/>eloquent model<br/>[Consulta.php]")]
  node_migrations["Migrations<br/>schema"]
  node_pgsql[("PostgreSQL<br/>database")]
end

subgraph group_infra["Infrastructure"]
  node_file_service["File Service<br/>[FileService.php]"]
  node_mail_verification["Welcome Mail<br/>mailable"]
  node_mail_contact["Contact Mail<br/>mailable"]
  node_mail_password["Password Mail<br/>mailable"]
  node_mail_open["Open Mail<br/>mailable"]
  node_sanctum["Sanctum<br/>token auth<br/>[sanctum.php]"]
  node_filesystem["Filesystem<br/>storage<br/>[filesystems.php]"]
  node_mail_system["Mail Delivery<br/>email system<br/>[mail.php]"]
end

subgraph group_ui["Views"]
  node_blade_views["Blade Views<br/>view templates<br/>[welcome.blade.php]"]
end

node_public_index -->|"boots"| node_http_kernel
node_artisan -->|"boots"| node_console_kernel
node_http_kernel -->|"pipeline"| node_middleware_auth
node_http_kernel -->|"pipeline"| node_middleware_redirect
node_http_kernel -->|"pipeline"| node_middleware_token
node_http_kernel -->|"pipeline"| node_middleware_signature
node_web_routes -->|"dispatches"| node_auth_controller
node_web_routes -->|"dispatches"| node_users_controller
node_web_routes -->|"dispatches"| node_verify_mail_controller
node_api_routes -->|"dispatches"| node_student_controller
node_api_routes -->|"dispatches"| node_staff_controller
node_api_routes -->|"dispatches"| node_protocol_controller
node_api_routes -->|"dispatches"| node_terms_controller
node_auth_controller -->|"uses"| node_user_model
node_users_controller -->|"uses"| node_user_model
node_student_controller -->|"uses"| node_student_model
node_staff_controller -->|"uses"| node_staff_model
node_protocol_controller -->|"uses"| node_protocol_model
node_protocol_controller -->|"delegates"| node_file_service
node_terms_controller -->|"uses"| node_terms_model
node_verify_mail_controller -->|"sends"| node_mail_verification
node_protocol_controller -.->|"sends"| node_mail_contact
node_users_controller -->|"sends"| node_mail_password
node_users_controller -.->|"sends"| node_mail_open
node_user_model -->|"backed by"| node_migrations
node_student_model -->|"backed by"| node_migrations
node_staff_model -->|"backed by"| node_migrations
node_protocol_model -->|"backed by"| node_migrations
node_terms_model -->|"backed by"| node_migrations
node_consulta_model -->|"backed by"| node_migrations
node_migrations -->|"targets"| node_pgsql
node_auth_controller -->|"auth"| node_sanctum
node_middleware_token -.->|"refreshes"| node_sanctum
node_file_service -->|"stores in"| node_filesystem
node_mail_verification -->|"delivered via"| node_mail_system
node_mail_contact -->|"delivered via"| node_mail_system
node_mail_password -->|"delivered via"| node_mail_system
node_mail_open -->|"delivered via"| node_mail_system
node_blade_views -->|"renders"| node_mail_verification
node_blade_views -->|"renders"| node_mail_password
node_blade_views -->|"renders"| node_mail_contact

click node_public_index "https://github.com/jennymph/tt-web-backend/blob/main/src/public/index.php"
click node_artisan "https://github.com/jennymph/tt-web-backend/tree/main/src/artisan"
click node_http_kernel "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Kernel.php"
click node_console_kernel "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Console/Kernel.php"
click node_web_routes "https://github.com/jennymph/tt-web-backend/blob/main/src/routes/web.php"
click node_api_routes "https://github.com/jennymph/tt-web-backend/blob/main/src/routes/api.php"
click node_auth_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/AuthController.php"
click node_users_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/UsersController.php"
click node_student_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/StudentController.php"
click node_staff_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/StaffController.php"
click node_protocol_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/ProtocolController.php"
click node_terms_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/DatesAndTermsController.php"
click node_verify_mail_controller "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/VerifyMail.php"
click node_user_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/User.php"
click node_student_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Student.php"
click node_staff_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Staff.php"
click node_protocol_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Protocol.php"
click node_terms_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/DatesAndTerms.php"
click node_consulta_model "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Consulta.php"
click node_file_service "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Services/FileService.php"
click node_mail_verification "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/BienvenidoVerifMail.php"
click node_mail_contact "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/MensajeDeContacto.php"
click node_mail_password "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/RecuperarContrasena.php"
click node_mail_open "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/EnvioCorreoMailabre.php"
click node_middleware_auth "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/Authenticate.php"
click node_middleware_redirect "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/RedirectIfAuthenticated.php"
click node_middleware_token "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/UpdateTokenExpiry.php"
click node_middleware_signature "https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/ValidateSignature.php"
click node_migrations "https://github.com/jennymph/tt-web-backend/blob/main/src/database/migrations/2025_02_29_061853_create_protocols_table.php"
click node_sanctum "https://github.com/jennymph/tt-web-backend/blob/main/src/config/sanctum.php"
click node_filesystem "https://github.com/jennymph/tt-web-backend/blob/main/src/config/filesystems.php"
click node_mail_system "https://github.com/jennymph/tt-web-backend/blob/main/src/config/mail.php"
click node_blade_views "https://github.com/jennymph/tt-web-backend/blob/main/src/resources/views/welcome.blade.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_public_index,node_artisan,node_console_kernel toneBlue
class node_http_kernel,node_web_routes,node_api_routes,node_auth_controller,node_users_controller,node_student_controller,node_staff_controller,node_protocol_controller,node_terms_controller,node_verify_mail_controller,node_middleware_auth,node_middleware_redirect,node_middleware_token,node_middleware_signature toneAmber
class node_user_model,node_student_model,node_staff_model,node_protocol_model,node_terms_model,node_consulta_model,node_migrations,node_pgsql toneMint
class node_file_service,node_mail_verification,node_mail_contact,node_mail_password,node_mail_open,node_sanctum,node_filesystem,node_mail_system toneRose
class node_blade_views toneIndigo
```

## Components

### Entry & Runtime

Framework entry points and runtime kernels

- [Entry](https://github.com/jennymph/tt-web-backend/blob/main/src/public/index.php): web entry · Web bootstrap entry point · `src/public/index.php`
- [Artisan](https://github.com/jennymph/tt-web-backend/tree/main/src/artisan): cli entry · Command-line application entry point · `src/artisan`
- [Console Kernel](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Console/Kernel.php): cli kernel · Console command scheduling and bootstrapping · `src/app/Console/Kernel.php`

### HTTP Layer

Routes, controllers, and request middleware

- [HTTP Kernel](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Kernel.php): request kernel · Main HTTP middleware pipeline · `src/app/Http/Kernel.php`
- [Web Routes](https://github.com/jennymph/tt-web-backend/blob/main/src/routes/web.php): route map · Browser-facing route definitions · `src/routes/web.php`
- [API Routes](https://github.com/jennymph/tt-web-backend/blob/main/src/routes/api.php): route map · API route definitions · `src/routes/api.php`
- [Auth](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/AuthController.php): controller · Login, verification, and auth flows · `src/app/Http/Controllers/AuthController.php`
- [Users](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/UsersController.php): controller · User account and profile operations · `src/app/Http/Controllers/UsersController.php`
- [Students](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/StudentController.php): controller · Student management endpoints · `src/app/Http/Controllers/StudentController.php`
- [Staff](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/StaffController.php): controller · Staff management endpoints · `src/app/Http/Controllers/StaffController.php`
- [Protocols](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/ProtocolController.php): controller · Protocol workflow endpoints · `src/app/Http/Controllers/ProtocolController.php`
- [Dates & Terms](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/DatesAndTermsController.php): controller · Academic dates and term configuration · `src/app/Http/Controllers/DatesAndTermsController.php`
- [Verify Mail](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Controllers/VerifyMail.php): controller · Mail verification endpoint · `src/app/Http/Controllers/VerifyMail.php`
- [Auth Guard](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/Authenticate.php): middleware · Authentication gate for protected routes · `src/app/Http/Middleware/Authenticate.php`
- [Redirect Auth](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/RedirectIfAuthenticated.php): middleware · Redirects authenticated users away from guest routes · `src/app/Http/Middleware/RedirectIfAuthenticated.php`
- [Token Expiry](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/UpdateTokenExpiry.php): middleware · Refreshes API token lifecycle · `src/app/Http/Middleware/UpdateTokenExpiry.php`
- [Signed URL](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Http/Middleware/ValidateSignature.php): middleware · Validates signed requests · `src/app/Http/Middleware/ValidateSignature.php`

### Domain & Data

Core business entities and schema

- [User](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/User.php): eloquent model · Authentication and account entity · `src/app/Models/User.php`
- [Student](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Student.php): eloquent model · Student record entity · `src/app/Models/Student.php`
- [Staff](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Staff.php): eloquent model · Staff record entity · `src/app/Models/Staff.php`
- [Protocol](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Protocol.php): eloquent model · Protocol record entity · `src/app/Models/Protocol.php`
- [Dates & Terms](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/DatesAndTerms.php): eloquent model · Dates and academic term entity · `src/app/Models/DatesAndTerms.php`
- [Consulta](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Models/Consulta.php): eloquent model · Contact and help inquiry entity · `src/app/Models/Consulta.php`
- [Migrations](https://github.com/jennymph/tt-web-backend/blob/main/src/database/migrations/2025_02_29_061853_create_protocols_table.php): schema · Database schema and change history · `src/database/migrations/2025_02_29_061853_create_protocols_table.php`
- **PostgreSQL**: database · Primary relational persistence store

### Infrastructure

Mail, files, and external integrations

- [File Service](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Services/FileService.php): service · Protocol file and upload handling · `src/app/Services/FileService.php`
- [Welcome Mail](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/BienvenidoVerifMail.php): mailable · Account verification email · `src/app/Mail/BienvenidoVerifMail.php`
- [Contact Mail](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/MensajeDeContacto.php): mailable · Inbound contact message email · `src/app/Mail/MensajeDeContacto.php`
- [Password Mail](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/RecuperarContrasena.php): mailable · Password recovery email · `src/app/Mail/RecuperarContrasena.php`
- [Open Mail](https://github.com/jennymph/tt-web-backend/blob/main/src/app/Mail/EnvioCorreoMailabre.php): mailable · Outgoing mail helper/template flow · `src/app/Mail/EnvioCorreoMailabre.php`
- [Sanctum](https://github.com/jennymph/tt-web-backend/blob/main/src/config/sanctum.php): token auth · API token authentication · `src/config/sanctum.php`
- [Filesystem](https://github.com/jennymph/tt-web-backend/blob/main/src/config/filesystems.php): storage · File storage backend for protocol assets · `src/config/filesystems.php`
- [Mail Delivery](https://github.com/jennymph/tt-web-backend/blob/main/src/config/mail.php): email system · Outbound email transport and rendering · `src/config/mail.php`

### Views

Blade templates and public-facing pages

- [Blade Views](https://github.com/jennymph/tt-web-backend/blob/main/src/resources/views/welcome.blade.php): view templates · Public pages and email templates · `src/resources/views/welcome.blade.php`

## Connections

- Entry → HTTP Kernel: boots · Web requests enter the Laravel HTTP pipeline
- Artisan → Console Kernel: boots · CLI commands enter the console runtime
- HTTP Kernel → Auth Guard: pipeline · HTTP requests pass through middleware
- HTTP Kernel → Redirect Auth: pipeline · Guest/auth redirects are applied in the request path
- HTTP Kernel → Token Expiry: pipeline · Token freshness is maintained for authenticated API access
- HTTP Kernel → Signed URL: pipeline · Signed URLs are validated during request handling
- Web Routes → Auth: dispatches · Web routes map into controller actions
- Web Routes → Users: dispatches · Web routes map into controller actions
- Web Routes → Verify Mail: dispatches · Web routes map into controller actions
- API Routes → Students: dispatches · API routes map into controller actions
- API Routes → Staff: dispatches · API routes map into controller actions
- API Routes → Protocols: dispatches · API routes map into controller actions
- API Routes → Dates & Terms: dispatches · API routes map into controller actions
- Auth → User: uses · Authentication and account logic operates on users
- Users → User: uses · User management reads and updates user records
- Students → Student: uses · Student endpoints operate on student records
- Staff → Staff: uses · Staff endpoints operate on staff records
- Protocols → Protocol: uses · Protocol workflow persists protocol records
- Protocols → File Service: delegates · Protocol documents and uploads are handled separately
- Dates & Terms → Dates & Terms: uses · Dates and term settings are persisted through Eloquent
- Verify Mail → Welcome Mail: sends · Verification flow triggers email delivery
- Protocols → Contact Mail: sends · Protocol-related contact or notification mail may be sent
- Users → Password Mail: sends · Account recovery uses password reset email
- Users → Open Mail: sends · General email sending flow
- User → Migrations: backed by · Users table is defined in migrations
- Student → Migrations: backed by · Students table is defined in migrations
- Staff → Migrations: backed by · Staff table is defined in migrations
- Protocol → Migrations: backed by · Protocols schema evolves through migrations
- Dates & Terms → Migrations: backed by · Dates and terms schema evolves through migrations
- Consulta → Migrations: backed by · Consulta records are schema-managed
- Migrations → PostgreSQL: targets · Schema is applied to PostgreSQL
- Auth → Sanctum: auth · API access is token-protected through Sanctum
- Token Expiry → Sanctum: refreshes · Token expiry is managed around Sanctum tokens
- File Service → Filesystem: stores in · Uploads and protocol files use Laravel storage
- Welcome Mail → Mail Delivery: delivered via · Verification email is sent through mail infrastructure
- Contact Mail → Mail Delivery: delivered via · Contact mail is sent through mail infrastructure
- Password Mail → Mail Delivery: delivered via · Recovery mail is sent through mail infrastructure
- Open Mail → Mail Delivery: delivered via · General mail flow uses mail infrastructure
- Blade Views → Welcome Mail: renders · Blade templates support email content
- Blade Views → Password Mail: renders · Blade templates support recovery pages and mail content
- Blade Views → Contact Mail: renders · Blade templates support public contact pages and mail content
