# aboloftzeke/gabaldon-municipality-project-tracker architecture

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

- Interactive diagram: https://gitdiagram.com/aboloftzeke/gabaldon-municipality-project-tracker
- Repository: https://github.com/aboloftzeke/gabaldon-municipality-project-tracker

## Overview

The Municipality Project Tracker supports role-based access, infrastructure and non-infrastructure project operations, review and publication, public project discovery, GIS, and reporting. The principal workflow runs from staff project updates through office-head review and publication to public discovery and reports. The graph uses README-described capabilities and sampled source; some subsystem connections are documented or inferred from named modules and should be verified against unsampled views and URL wiring.

Main entry points: [`apps/system/views.py`](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/views.py) (Account Access), [`apps/infrastructure/views.py`](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/views.py) (Infrastructure Workflow), [`apps/non_infrastructure/views.py`](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/views.py) (Non-infrastructure Workflow), [`apps/system/publication_service.py`](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_service.py) (Publication Services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Accounts"]
  node_account_views["Account Access<br/>[views.py]"]
  node_otp["Login Verification<br/>[login_otp.py]"]
  node_account_setup["Account Setup<br/>[account_setup.py]"]
  node_permissions["Role Permissions<br/>[permissions.py]"]
  node_dashboard["Role Dashboards<br/>[dashboard_views.py]"]
end

subgraph group_operations["Project Operations"]
  node_system_models[("System Records<br/>[models.py]")]
  node_infra_views["Infrastructure Workflow<br/>[views.py]"]
  node_infra_records[("Infrastructure Records<br/>[models.py]")]
  node_infra_evidence["Inspection Evidence"]
  node_noninfra_views["Non-infrastructure Workflow<br/>[views.py]"]
  node_noninfra_records[("Non-infrastructure Records<br/>[models.py]")]
  node_noninfra_progress["Progress Applications"]
end

subgraph group_publication["Review and Publication"]
  node_publication_views["Publication Review"]
  node_publication_service["Publication Services"]
  node_publication_records[("Revision Records<br/>[models.py]")]
end

subgraph group_discovery["Discovery and GIS"]
  node_public_data["Public Project Data"]
  node_gis_views["GIS Endpoints<br/>[gis_views.py]"]
  node_gis_map["Interactive GIS Map<br/>[gabaldon_gis.js]"]
end

subgraph group_reporting["Reports"]
  node_report_views["Report Interface<br/>[views.py]"]
  node_report_service["Report Data<br/>[services.py]"]
  node_report_generation["Report Generation<br/>[generation.py]"]
  node_report_pdf["PDF Output<br/>[pdf.py]"]
end

node_staff(("Municipal Staff"))
node_public(("Public Visitor"))
node_email(("Email Service"))
node_tiles(("OSM Tiles"))

node_staff -->|"signs in"| node_account_views
node_account_views -->|"verifies staff"| node_otp
node_otp -.->|"sends code"| node_email
node_account_views -->|"supports setup"| node_account_setup
node_staff -->|"opens dashboard"| node_dashboard
node_dashboard -->|"checks roles"| node_permissions
node_staff -->|"updates projects"| node_infra_views
node_staff -->|"updates projects"| node_noninfra_views
node_infra_views -->|"reads and writes"| node_infra_records
node_infra_views -->|"manages evidence"| node_infra_evidence
node_noninfra_views -->|"reads and writes"| node_noninfra_records
node_noninfra_views -->|"applies progress"| node_noninfra_progress
node_staff -->|"reviews submissions"| node_publication_views
node_publication_views -->|"runs workflow"| node_publication_service
node_publication_service -->|"stores revisions"| node_publication_records
node_publication_service -->|"snapshots project data"| node_system_models
node_public -->|"views published projects"| node_public_data
node_public_data -->|"reads current revisions"| node_publication_records
node_public -->|"explores map"| node_gis_map
node_gis_map -->|"fetches GIS data"| node_gis_views
node_gis_map -.->|"loads basemap"| node_tiles
node_staff -->|"requests reports"| node_report_views
node_report_views -->|"requests report data"| node_report_service
node_report_service -->|"reads public data"| node_public_data
node_report_views -->|"generates output"| node_report_generation
node_report_generation -->|"creates PDF"| node_report_pdf

click node_account_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/views.py"
click node_otp "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/login_otp.py"
click node_account_setup "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/account_setup.py"
click node_permissions "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/permissions.py"
click node_dashboard "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/dashboard_views.py"
click node_system_models "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/models.py"
click node_infra_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/views.py"
click node_infra_records "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/models.py"
click node_infra_evidence "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/inspection_evidence.py"
click node_noninfra_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/views.py"
click node_noninfra_records "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/models.py"
click node_noninfra_progress "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/progress_application.py"
click node_publication_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_views.py"
click node_publication_service "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_service.py"
click node_publication_records "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/models.py"
click node_public_data "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_public.py"
click node_gis_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/gis_views.py"
click node_gis_map "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/static/js/gis/gabaldon_gis.js"
click node_report_views "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/views.py"
click node_report_service "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/services.py"
click node_report_generation "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/generation.py"
click node_report_pdf "https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/pdf.py"

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_account_views,node_otp,node_account_setup,node_permissions,node_dashboard toneBlue
class node_system_models,node_infra_views,node_infra_records,node_infra_evidence,node_noninfra_views,node_noninfra_records,node_noninfra_progress toneAmber
class node_publication_views,node_publication_service,node_publication_records toneMint
class node_public_data,node_gis_views,node_gis_map toneRose
class node_report_views,node_report_service,node_report_generation,node_report_pdf,node_staff,node_public,node_email,node_tiles toneIndigo
```

## Components

### Access and Accounts

- [Account Access](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/views.py): `apps/system/views.py`
- [Login Verification](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/login_otp.py): `apps/system/login_otp.py`
- [Account Setup](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/account_setup.py): `apps/system/account_setup.py`
- [Role Permissions](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/permissions.py): `apps/system/permissions.py`
- [Role Dashboards](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/dashboard_views.py): `apps/system/dashboard_views.py`

### Project Operations

- [System Records](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/models.py): `apps/system/models.py`
- [Infrastructure Workflow](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/views.py): `apps/infrastructure/views.py`
- [Infrastructure Records](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/models.py): `apps/infrastructure/models.py`
- [Inspection Evidence](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/infrastructure/inspection_evidence.py): `apps/infrastructure/inspection_evidence.py`
- [Non-infrastructure Workflow](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/views.py): `apps/non_infrastructure/views.py`
- [Non-infrastructure Records](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/models.py): `apps/non_infrastructure/models.py`
- [Progress Applications](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/non_infrastructure/progress_application.py): `apps/non_infrastructure/progress_application.py`

### Review and Publication

- [Publication Review](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_views.py): `apps/system/publication_views.py`
- [Publication Services](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_service.py): `apps/system/publication_service.py`
- [Revision Records](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/models.py): `apps/system/models.py`

### Discovery and GIS

- [Public Project Data](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/publication_public.py): `apps/system/publication_public.py`
- [GIS Endpoints](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/system/gis_views.py): `apps/system/gis_views.py`
- [Interactive GIS Map](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/static/js/gis/gabaldon_gis.js): `static/js/gis/gabaldon_gis.js`

### Reports

- [Report Interface](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/views.py): `apps/reports/views.py`
- [Report Data](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/services.py): `apps/reports/services.py`
- [Report Generation](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/generation.py): `apps/reports/generation.py`
- [PDF Output](https://github.com/aboloftzeke/gabaldon-municipality-project-tracker/blob/main/apps/reports/pdf.py): `apps/reports/pdf.py`

### Other components

- **Municipal Staff**
- **Public Visitor**
- **Email Service**
- **OSM Tiles**

## Connections

- Municipal Staff → Account Access: signs in
- Account Access → Login Verification: verifies staff
- Login Verification → Email Service: sends code
- Account Access → Account Setup: supports setup
- Municipal Staff → Role Dashboards: opens dashboard
- Role Dashboards → Role Permissions: checks roles
- Municipal Staff → Infrastructure Workflow: updates projects
- Municipal Staff → Non-infrastructure Workflow: updates projects
- Infrastructure Workflow → Infrastructure Records: reads and writes
- Infrastructure Workflow → Inspection Evidence: manages evidence
- Non-infrastructure Workflow → Non-infrastructure Records: reads and writes
- Non-infrastructure Workflow → Progress Applications: applies progress
- Municipal Staff → Publication Review: reviews submissions
- Publication Review → Publication Services: runs workflow
- Publication Services → Revision Records: stores revisions
- Publication Services → System Records: snapshots project data
- Public Visitor → Public Project Data: views published projects
- Public Project Data → Revision Records: reads current revisions
- Public Visitor → Interactive GIS Map: explores map
- Interactive GIS Map → GIS Endpoints: fetches GIS data
- Interactive GIS Map → OSM Tiles: loads basemap
- Municipal Staff → Report Interface: requests reports
- Report Interface → Report Data: requests report data
- Report Data → Public Project Data: reads public data
- Report Interface → Report Generation: generates output
- Report Generation → PDF Output: creates PDF
