# raflizocky/field-service-management architecture

> Architecture diagram of the GitHub repository raflizocky/field-service-management, 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/raflizocky/field-service-management
- Repository: https://github.com/raflizocky/field-service-management

## Overview

Fieldo is a field-service management application with a Filament web administration panel and a Sanctum-backed API intended for technician mobile use. The main technician workflow is to authenticate, retrieve assigned work, and submit a report with status, notes, optional photo, and GPS coordinates; administrators manage tasks, reports, and technicians. The graph includes the sampled API-to-model interactions and documented admin capabilities. Route declarations and Filament resource internals were not sampled, so their detailed wiring is not asserted.

Main entry points: [`routes/api.php`](https://github.com/raflizocky/field-service-management/blob/main/routes/api.php) (API Routes), [`app/Models/User.php`](https://github.com/raflizocky/field-service-management/blob/main/app/Models/User.php) (User), [`app/Models/Task.php`](https://github.com/raflizocky/field-service-management/blob/main/app/Models/Task.php) (Task), [`app/Http/Controllers/Api/AuthController.php`](https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/AuthController.php) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_admin_panel["Admin Panel"]
  node_task_admin["Task Management<br/>[TaskResource.php]"]
  node_report_admin["Report Management<br/>[ReportResource.php]"]
  node_user_admin["Technician Management<br/>[UserResource.php]"]
  node_task_stats["Task Statistics"]
  node_task_chart["Status Chart"]
end

subgraph group_technician["Technician API"]
  node_api_routes["API Routes<br/>[api.php]"]
  node_auth_api["Authentication API<br/>[AuthController.php]"]
  node_task_api["Assigned Tasks API<br/>[TaskController.php]"]
  node_report_api["Reports API"]
end

subgraph group_domain["Field Service Data"]
  node_user_model["User<br/>[User.php]"]
  node_task_model["Task<br/>[Task.php]"]
  node_report_model["Report<br/>[Report.php]"]
end

subgraph group_runtime["Laravel Runtime"]
  node_database[("Application Database")]
  node_photo_storage[("Public File Storage")]
end

node_administrator(("Administrator"))
node_technician_actor(("Technician"))
node_mobile_app["Mobile App"]

node_administrator -->|"uses"| node_admin_panel
node_technician_actor -->|"uses"| node_mobile_app
node_mobile_app -->|"sends requests"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_api
node_api_routes -->|"dispatches"| node_task_api
node_api_routes -->|"dispatches"| node_report_api
node_auth_api -->|"finds user"| node_user_model
node_auth_api -->|"creates token"| node_user_model
node_task_api -->|"queries tasks"| node_task_model
node_report_api -->|"creates and queries"| node_report_model
node_report_api -->|"stores photos"| node_photo_storage
node_task_admin -.->|"manages tasks"| node_task_model
node_report_admin -.->|"manages reports"| node_report_model
node_user_admin -.->|"manages technicians"| node_user_model
node_task_chart -->|"counts statuses"| node_task_model
node_user_model -->|"persists"| node_database
node_task_model -->|"persists"| node_database
node_report_model -->|"persists"| node_database

click node_admin_panel "https://github.com/raflizocky/field-service-management/blob/main/app/Providers/Filament/AdminPanelProvider.php"
click node_task_admin "https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/TaskResource.php"
click node_report_admin "https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/ReportResource.php"
click node_user_admin "https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/UserResource.php"
click node_task_stats "https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Widgets/TaskStatsOverview.php"
click node_task_chart "https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Widgets/TaskStatusChart.php"
click node_api_routes "https://github.com/raflizocky/field-service-management/blob/main/routes/api.php"
click node_auth_api "https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/AuthController.php"
click node_task_api "https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/TaskController.php"
click node_report_api "https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/ReportController.php"
click node_user_model "https://github.com/raflizocky/field-service-management/blob/main/app/Models/User.php"
click node_task_model "https://github.com/raflizocky/field-service-management/blob/main/app/Models/Task.php"
click node_report_model "https://github.com/raflizocky/field-service-management/blob/main/app/Models/Report.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_admin_panel,node_task_admin,node_report_admin,node_user_admin,node_task_stats,node_task_chart toneBlue
class node_api_routes,node_auth_api,node_task_api,node_report_api toneAmber
class node_user_model,node_task_model,node_report_model toneMint
class node_database,node_photo_storage toneRose
class node_administrator,node_technician_actor,node_mobile_app toneIndigo
```

## Components

### Administration

- [Admin Panel](https://github.com/raflizocky/field-service-management/blob/main/app/Providers/Filament/AdminPanelProvider.php): `app/Providers/Filament/AdminPanelProvider.php`
- [Task Management](https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/TaskResource.php): `app/Filament/Resources/TaskResource.php`
- [Report Management](https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/ReportResource.php): `app/Filament/Resources/ReportResource.php`
- [Technician Management](https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Resources/UserResource.php): `app/Filament/Resources/UserResource.php`
- [Task Statistics](https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Widgets/TaskStatsOverview.php): `app/Filament/Widgets/TaskStatsOverview.php`
- [Status Chart](https://github.com/raflizocky/field-service-management/blob/main/app/Filament/Widgets/TaskStatusChart.php): `app/Filament/Widgets/TaskStatusChart.php`

### Technician API

- [API Routes](https://github.com/raflizocky/field-service-management/blob/main/routes/api.php): `routes/api.php`
- [Authentication API](https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/AuthController.php): `app/Http/Controllers/Api/AuthController.php`
- [Assigned Tasks API](https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/TaskController.php): `app/Http/Controllers/Api/TaskController.php`
- [Reports API](https://github.com/raflizocky/field-service-management/blob/main/app/Http/Controllers/Api/ReportController.php): `app/Http/Controllers/Api/ReportController.php`

### Field Service Data

- [User](https://github.com/raflizocky/field-service-management/blob/main/app/Models/User.php): `app/Models/User.php`
- [Task](https://github.com/raflizocky/field-service-management/blob/main/app/Models/Task.php): `app/Models/Task.php`
- [Report](https://github.com/raflizocky/field-service-management/blob/main/app/Models/Report.php): `app/Models/Report.php`

### Laravel Runtime

- **Application Database**
- **Public File Storage**

### Other components

- **Administrator**
- **Technician**
- **Mobile App**

## Connections

- Administrator → Admin Panel: uses
- Technician → Mobile App: uses
- Mobile App → API Routes: sends requests
- API Routes → Authentication API: dispatches
- API Routes → Assigned Tasks API: dispatches
- API Routes → Reports API: dispatches
- Authentication API → User: finds user
- Authentication API → User: creates token
- Assigned Tasks API → Task: queries tasks
- Reports API → Report: creates and queries
- Reports API → Public File Storage: stores photos
- Task Management → Task: manages tasks
- Report Management → Report: manages reports
- Technician Management → User: manages technicians
- Status Chart → Task: counts statuses
- User → Application Database: persists
- Task → Application Database: persists
- Report → Application Database: persists
