# sauwin/be_nti architecture

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

- Interactive diagram: https://gitdiagram.com/sauwin/be_nti
- Repository: https://github.com/sauwin/be_nti

## Overview

NTI Backend is a Laravel API for administering program calls and tasks, receiving and reviewing applications, and supporting accepted projects through mentorship and milestones. The main user journey spans call/task publication, application submission, evaluator review and status decisions, then project follow-up. Admins also manage users, send segmented campaigns, and export operational data. The tree and README establish the broader feature set; arrows are limited to relationships visible in the sampled source or directly described there, so some controller-to-subsystem wiring is not shown.

Main entry points: [`app/Services/ApplicationService.php`](https://github.com/sauwin/be_nti/blob/master/app/Services/ApplicationService.php) (Application Workflow), [`app/Jobs/SendBulkNotification.php`](https://github.com/sauwin/be_nti/blob/master/app/Jobs/SendBulkNotification.php) (Notification Job), [`app/Models/Application.php`](https://github.com/sauwin/be_nti/blob/master/app/Models/Application.php) (Applications), [`app/Models/Task.php`](https://github.com/sauwin/be_nti/blob/master/app/Models/Task.php) (Tasks and Calls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_programs["Programs and Applications"]
  node_application_controller["Application API"]
  node_application_service["Application Workflow"]
  node_application_model[("Applications<br/>[Application.php]")]
  node_call_controller["Call Management<br/>[CallController.php]"]
  node_task_controller["Task Management<br/>[TaskController.php]"]
  node_task_service["Task Service<br/>[TaskService.php]"]
  node_task_model[("Tasks and Calls<br/>[Task.php]")]
end

subgraph group_review["Review and Projects"]
  node_evaluation_controller["Evaluation API"]
  node_workflow_service["Decision Workflow"]
  node_evaluation_model[("Evaluations<br/>[Evaluation.php]")]
  node_project_controller["Project Follow-up"]
end

subgraph group_admin["Administration"]
  node_admin_controller["Admin Management"]
  node_campaign_controller["Campaigns"]
  node_export_controller["Data Exports"]
  node_audit["Audit Logging<br/>[AuditService.php]"]
end

subgraph group_delivery["Notifications and Delivery"]
  node_campaign_job["Notification Job"]
  node_queue["Queue Worker"]
  node_mail["SMTP Mail"]
end

node_users(("Applicants and Staff"))
node_api["API Routes<br/>[api.php]"]
node_database[("MySQL Database")]

node_users -->|"send requests"| node_api
node_api -->|"dispatches"| node_application_controller
node_application_controller -->|"submits workflow"| node_application_service
node_application_service -->|"creates and updates"| node_application_model
node_application_service -->|"queues submission mail"| node_mail
node_call_controller -->|"manages calls"| node_task_model
node_task_controller -->|"delegates task actions"| node_task_service
node_task_service -->|"manages tasks"| node_task_model
node_evaluation_controller -->|"records reviews"| node_evaluation_model
node_evaluation_controller -->|"requests decisions"| node_workflow_service
node_workflow_service -->|"changes application status"| node_application_model
node_project_controller -.->|"manages project records"| node_database
node_admin_controller -->|"manages user records"| node_database
node_campaign_controller -->|"dispatches per recipient"| node_campaign_job
node_campaign_controller -->|"logs campaign"| node_audit
node_campaign_job -->|"runs asynchronously"| node_queue
node_campaign_job -->|"sends notification"| node_mail
node_export_controller -->|"logs exports"| node_audit
node_application_model -->|"persists records"| node_database
node_evaluation_model -->|"persists reviews"| node_database
node_task_model -->|"persists records"| node_database

click node_api "https://github.com/sauwin/be_nti/blob/master/routes/api.php"
click node_application_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/ApplicationController.php"
click node_application_service "https://github.com/sauwin/be_nti/blob/master/app/Services/ApplicationService.php"
click node_application_model "https://github.com/sauwin/be_nti/blob/master/app/Models/Application.php"
click node_call_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/CallController.php"
click node_task_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/TaskController.php"
click node_task_service "https://github.com/sauwin/be_nti/blob/master/app/Services/TaskService.php"
click node_task_model "https://github.com/sauwin/be_nti/blob/master/app/Models/Task.php"
click node_evaluation_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/EvaluationController.php"
click node_workflow_service "https://github.com/sauwin/be_nti/blob/master/app/Services/ApplicationWorkflowService.php"
click node_evaluation_model "https://github.com/sauwin/be_nti/blob/master/app/Models/Evaluation.php"
click node_project_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/MentorshipController.php"
click node_admin_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/AdminController.php"
click node_campaign_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/Admin/BulkNotificationController.php"
click node_export_controller "https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/Admin/ExportController.php"
click node_audit "https://github.com/sauwin/be_nti/blob/master/app/Services/AuditService.php"
click node_campaign_job "https://github.com/sauwin/be_nti/blob/master/app/Jobs/SendBulkNotification.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_application_controller,node_application_service,node_application_model,node_call_controller,node_task_controller,node_task_service,node_task_model toneBlue
class node_evaluation_controller,node_workflow_service,node_evaluation_model,node_project_controller,node_database toneAmber
class node_admin_controller,node_campaign_controller,node_export_controller,node_audit,node_api toneMint
class node_campaign_job,node_queue,node_mail toneRose
class node_users toneIndigo
```

## Components

### Programs and Applications

- [Application API](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/ApplicationController.php): `app/Http/Controllers/ApplicationController.php`
- [Application Workflow](https://github.com/sauwin/be_nti/blob/master/app/Services/ApplicationService.php): `app/Services/ApplicationService.php`
- [Applications](https://github.com/sauwin/be_nti/blob/master/app/Models/Application.php): `app/Models/Application.php`
- [Call Management](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/CallController.php): `app/Http/Controllers/CallController.php`
- [Task Management](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/TaskController.php): `app/Http/Controllers/TaskController.php`
- [Task Service](https://github.com/sauwin/be_nti/blob/master/app/Services/TaskService.php): `app/Services/TaskService.php`
- [Tasks and Calls](https://github.com/sauwin/be_nti/blob/master/app/Models/Task.php): `app/Models/Task.php`

### Review and Projects

- [Evaluation API](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/EvaluationController.php): `app/Http/Controllers/EvaluationController.php`
- [Decision Workflow](https://github.com/sauwin/be_nti/blob/master/app/Services/ApplicationWorkflowService.php): `app/Services/ApplicationWorkflowService.php`
- [Evaluations](https://github.com/sauwin/be_nti/blob/master/app/Models/Evaluation.php): `app/Models/Evaluation.php`
- [Project Follow-up](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/MentorshipController.php): `app/Http/Controllers/MentorshipController.php`

### Administration

- [Admin Management](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/AdminController.php): `app/Http/Controllers/AdminController.php`
- [Campaigns](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/Admin/BulkNotificationController.php): `app/Http/Controllers/Admin/BulkNotificationController.php`
- [Data Exports](https://github.com/sauwin/be_nti/blob/master/app/Http/Controllers/Admin/ExportController.php): `app/Http/Controllers/Admin/ExportController.php`
- [Audit Logging](https://github.com/sauwin/be_nti/blob/master/app/Services/AuditService.php): `app/Services/AuditService.php`

### Notifications and Delivery

- [Notification Job](https://github.com/sauwin/be_nti/blob/master/app/Jobs/SendBulkNotification.php): `app/Jobs/SendBulkNotification.php`
- **Queue Worker**
- **SMTP Mail**

### Other components

- **Applicants and Staff**
- [API Routes](https://github.com/sauwin/be_nti/blob/master/routes/api.php): `routes/api.php`
- **MySQL Database**

## Connections

- Applicants and Staff → API Routes: send requests
- API Routes → Application API: dispatches
- Application API → Application Workflow: submits workflow
- Application Workflow → Applications: creates and updates
- Application Workflow → SMTP Mail: queues submission mail
- Call Management → Tasks and Calls: manages calls
- Task Management → Task Service: delegates task actions
- Task Service → Tasks and Calls: manages tasks
- Evaluation API → Evaluations: records reviews
- Evaluation API → Decision Workflow: requests decisions
- Decision Workflow → Applications: changes application status
- Project Follow-up → MySQL Database: manages project records
- Admin Management → MySQL Database: manages user records
- Campaigns → Notification Job: dispatches per recipient
- Campaigns → Audit Logging: logs campaign
- Notification Job → Queue Worker: runs asynchronously
- Notification Job → SMTP Mail: sends notification
- Data Exports → Audit Logging: logs exports
- Applications → MySQL Database: persists records
- Evaluations → MySQL Database: persists reviews
- Tasks and Calls → MySQL Database: persists records
