# regal18/tabel-dinamis architecture

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

- Interactive diagram: https://gitdiagram.com/regal18/tabel-dinamis
- Repository: https://github.com/regal18/tabel-dinamis

## Overview

Tabel Dinamis is a Laravel web module for presenting and managing development indicators across Maluku Utara’s IPW agencies. The main user flow starts at the public dashboard, retrieves filter references and selected indicator values through the API, then presents the resulting table and interactive charts; users can also export the data. Admins manage indicator master data and upload Excel files, with import history recorded for audit. The graph follows documented routes and sampled controller/service references; chart behavior and some API capabilities are documented in the README, while unsampled implementation details are not inferred.

Main entry points: [`routes/tabel_dinamis.php`](https://github.com/regal18/tabel-dinamis/blob/master/routes/tabel_dinamis.php) (Module routes), [`app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php`](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php) (Export API), [`app/Modules/TabelDinamis/Models`](https://github.com/regal18/tabel-dinamis/tree/master/app/Modules/TabelDinamis/Models) (Indicator data models), [`app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php`](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php) (Table API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Public presentation"]
  node_dashboard["Landing dashboard"]
  node_table_ui["Table and charts<br/>[index.blade.php]"]
end

subgraph group_api["Query and export API"]
  node_routes["Module routes<br/>[tabel_dinamis.php]"]
  node_filter_api["Filter API"]
  node_table_api["Table API"]
  node_table_request["Table validation<br/>[TabelRequest.php]"]
  node_export_api["Export API"]
end

subgraph group_domain["Indicator domain"]
  node_table_service["Table builder<br/>[TabelService.php]"]
  node_export_service["Export formatter<br/>[ExportService.php]"]
  node_domain_models["Indicator data models"]
  node_import_service["Excel importer"]
end

subgraph group_admin["Admin operations"]
  node_import_admin["Excel import admin"]
  node_import_history[("Import audit history<br/>[RiwayatImpor.php]")]
  node_indicator_admin["Indicator CRUD"]
end

node_visitor(("Web visitor"))
node_admin_user(("Admin user"))

node_visitor -->|"opens module"| node_routes
node_routes -->|"routes to"| node_dashboard
node_routes -->|"routes to"| node_filter_api
node_routes -->|"routes to"| node_table_api
node_routes -->|"routes to"| node_export_api
node_routes -->|"routes to"| node_import_admin
node_routes -->|"routes to"| node_indicator_admin
node_dashboard -->|"queries counts"| node_domain_models
node_table_ui -->|"requests filters"| node_filter_api
node_table_ui -->|"requests table data"| node_table_api
node_table_ui -->|"requests export"| node_export_api
node_filter_api -->|"queries references"| node_domain_models
node_table_api -->|"validates input"| node_table_request
node_table_api -->|"builds table"| node_table_service
node_table_service -->|"queries indicator data"| node_domain_models
node_export_api -->|"validates input"| node_table_request
node_export_api -->|"builds table"| node_table_service
node_export_api -->|"formats export"| node_export_service
node_import_admin -->|"imports workbook"| node_import_service
node_import_admin -->|"records outcomes"| node_import_history
node_import_service -->|"upserts indicator data"| node_domain_models
node_admin_user -.->|"uses admin pages"| node_routes
node_indicator_admin -->|"manages indicators"| node_domain_models

click node_dashboard "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/BerandaController.php"
click node_table_ui "https://github.com/regal18/tabel-dinamis/blob/master/resources/views/tabel-dinamis/index.blade.php"
click node_routes "https://github.com/regal18/tabel-dinamis/blob/master/routes/tabel_dinamis.php"
click node_filter_api "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/FilterController.php"
click node_table_api "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php"
click node_table_request "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Requests/TabelRequest.php"
click node_table_service "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/TabelService.php"
click node_export_api "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php"
click node_export_service "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/ExportService.php"
click node_domain_models "https://github.com/regal18/tabel-dinamis/tree/master/app/Modules/TabelDinamis/Models"
click node_import_admin "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/ImportController.php"
click node_import_service "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/ImportExcelService.php"
click node_import_history "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Models/RiwayatImpor.php"
click node_indicator_admin "https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Admin/IndikatorCrudController.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_dashboard,node_table_ui,node_admin_user toneBlue
class node_routes,node_filter_api,node_table_api,node_table_request,node_export_api toneAmber
class node_table_service,node_export_service,node_domain_models,node_import_service toneMint
class node_import_admin,node_import_history,node_indicator_admin toneRose
class node_visitor toneIndigo
```

## Components

### Public presentation

- [Landing dashboard](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/BerandaController.php): `app/Modules/TabelDinamis/Http/Controllers/BerandaController.php`
- [Table and charts](https://github.com/regal18/tabel-dinamis/blob/master/resources/views/tabel-dinamis/index.blade.php): `resources/views/tabel-dinamis/index.blade.php`

### Query and export API

- [Module routes](https://github.com/regal18/tabel-dinamis/blob/master/routes/tabel_dinamis.php): `routes/tabel_dinamis.php`
- [Filter API](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/FilterController.php): `app/Modules/TabelDinamis/Http/Controllers/Api/FilterController.php`
- [Table API](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php): `app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php`
- [Table validation](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Requests/TabelRequest.php): `app/Modules/TabelDinamis/Http/Requests/TabelRequest.php`
- [Export API](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php): `app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php`

### Indicator domain

- [Table builder](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/TabelService.php): `app/Modules/TabelDinamis/Services/TabelService.php`
- [Export formatter](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/ExportService.php): `app/Modules/TabelDinamis/Services/ExportService.php`
- [Indicator data models](https://github.com/regal18/tabel-dinamis/tree/master/app/Modules/TabelDinamis/Models): `app/Modules/TabelDinamis/Models`
- [Excel importer](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Services/ImportExcelService.php): `app/Modules/TabelDinamis/Services/ImportExcelService.php`

### Admin operations

- [Excel import admin](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/ImportController.php): `app/Modules/TabelDinamis/Http/Controllers/ImportController.php`
- [Import audit history](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Models/RiwayatImpor.php): `app/Modules/TabelDinamis/Models/RiwayatImpor.php`
- [Indicator CRUD](https://github.com/regal18/tabel-dinamis/blob/master/app/Modules/TabelDinamis/Http/Controllers/Admin/IndikatorCrudController.php): `app/Modules/TabelDinamis/Http/Controllers/Admin/IndikatorCrudController.php`

### Other components

- **Web visitor**
- **Admin user**

## Connections

- Web visitor → Module routes: opens module
- Module routes → Landing dashboard: routes to (evidence: `routes/tabel_dinamis.php`)
- Module routes → Filter API: routes to (evidence: `routes/tabel_dinamis.php`)
- Module routes → Table API: routes to (evidence: `routes/tabel_dinamis.php`)
- Module routes → Export API: routes to (evidence: `routes/tabel_dinamis.php`)
- Module routes → Excel import admin: routes to (evidence: `routes/tabel_dinamis.php`)
- Module routes → Indicator CRUD: routes to (evidence: `routes/tabel_dinamis.php`)
- Landing dashboard → Indicator data models: queries counts (evidence: `app/Modules/TabelDinamis/Http/Controllers/BerandaController.php`)
- Table and charts → Filter API: requests filters
- Table and charts → Table API: requests table data
- Table and charts → Export API: requests export
- Filter API → Indicator data models: queries references (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/FilterController.php`)
- Table API → Table validation: validates input (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php`)
- Table API → Table builder: builds table (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/TabelController.php`)
- Table builder → Indicator data models: queries indicator data (evidence: `app/Modules/TabelDinamis/Services/TabelService.php`)
- Export API → Table validation: validates input (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php`)
- Export API → Table builder: builds table (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php`)
- Export API → Export formatter: formats export (evidence: `app/Modules/TabelDinamis/Http/Controllers/Api/ExportController.php`)
- Excel import admin → Excel importer: imports workbook (evidence: `app/Modules/TabelDinamis/Http/Controllers/ImportController.php`)
- Excel import admin → Import audit history: records outcomes (evidence: `app/Modules/TabelDinamis/Http/Controllers/ImportController.php`)
- Excel importer → Indicator data models: upserts indicator data (evidence: `app/Modules/TabelDinamis/Services/ImportExcelService.php`)
- Admin user → Module routes: uses admin pages
- Indicator CRUD → Indicator data models: manages indicators (evidence: `app/Modules/TabelDinamis/Http/Controllers/Admin/IndikatorCrudController.php`)
