# esguerrajustin/marikina-econcern architecture

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

- Interactive diagram: https://gitdiagram.com/esguerrajustin/marikina-econcern
- Repository: https://github.com/esguerrajustin/marikina-econcern

## Overview

Marikina E-Concern is a PHP/MySQL citizen-reporting portal with department-scoped administration and a substantial BasuraAlert waste-services module. The main citizen journey is account registration and verification, concern submission with photo evidence, then status tracking; administrators triage and assign concerns. BasuraAlert separately supports schedules, drop-offs, waste guidance, announcements, reports and reminders/notifications. The README documents the PWA and Android TWA delivery. Source excerpts show shared authentication, database and BasuraAlert wiring; several UI and API relationships are documented only at the product level.

Main entry points: [`public/ba_dashboard.php`](https://github.com/esguerrajustin/marikina-econcern/blob/main/public/ba_dashboard.php) (Resident waste services), [`includes/BasuraAlert/Notifications.php`](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Notifications.php) (Notifications and reminders), [`includes/auth.php`](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/auth.php) (Authentication), [`includes/basuraalert.php`](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/basuraalert.php) (BasuraAlert service facade)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_citizen["Citizen portal"]
  node_registration["Registration and verification<br/>[register.php]"]
  node_citizen_concerns["Concern submission and tracking<br/>[submit_concern.php]"]
  node_concern_api["Concern endpoints<br/>[submit_concern.php]"]
  node_citizen_pages["Citizen portal pages"]
end

subgraph group_admin["Administration"]
  node_admin_login["Admin login<br/>[login.php]"]
  node_admin_triage["Concern triage<br/>[concerns.php]"]
  node_admin_api["Admin JSON API"]
  node_admin_reports["Admin reports and exports<br/>[reports.php]"]
end

subgraph group_ba["BasuraAlert"]
  node_ba_citizen["Resident waste services<br/>[ba_dashboard.php]"]
  node_ba_schedule["Collection schedules<br/>[Schedule.php]"]
  node_ba_dropoffs["Drop-off locations<br/>[Dropoffs.php]"]
  node_ba_waste["Waste guidance<br/>[Schedule.php]"]
  node_ba_admin["Waste administration<br/>[ba_schedules.php]"]
  node_ba_reports["Waste reports and feedback<br/>[Reports.php]"]
  node_ba_announcements["Announcements"]
  node_ba_notifications["Notifications and reminders<br/>[Notifications.php]"]
  node_notification_worker["Queued delivery worker"]
end

subgraph group_core["Shared runtime"]
  node_auth["Authentication<br/>[auth.php]"]
  node_admin_auth["Admin authorization<br/>[admin_auth.php]"]
  node_db[("MySQL access<br/>[db.php]")]
  node_ba_facade["BasuraAlert service facade<br/>[basuraalert.php]"]
  node_pwa["Installable PWA<br/>[sw.js]"]
  node_twa["Android TWA clients"]
end

node_resident(("Resident"))
node_admin_user(("Administrator"))
node_external_messaging["SMS and email providers"]

node_resident -->|"creates account"| node_registration
node_resident -->|"submits and tracks"| node_citizen_concerns
node_registration -.->|"authenticates"| node_auth
node_citizen_concerns -.->|"submits concern"| node_concern_api
node_concern_api -->|"checks identity"| node_auth
node_concern_api -->|"persists data"| node_db
node_resident -->|"uses portal"| node_citizen_pages
node_admin_user -->|"signs in"| node_admin_login
node_admin_login -->|"checks access"| node_admin_auth
node_admin_user -->|"triages concerns"| node_admin_triage
node_admin_triage -.->|"uses endpoints"| node_admin_api
node_admin_user -->|"exports reports"| node_admin_reports
node_resident -->|"uses waste services"| node_ba_citizen
node_ba_citizen -->|"reads schedules"| node_ba_schedule
node_ba_citizen -.->|"views locations"| node_ba_dropoffs
node_ba_citizen -->|"reads guidance"| node_ba_waste
node_admin_user -->|"manages services"| node_ba_admin
node_ba_admin -.->|"reviews feedback"| node_ba_reports
node_ba_citizen -.->|"reads announcements"| node_ba_announcements
node_ba_citizen -.->|"receives notices"| node_ba_notifications
node_notification_worker -->|"processes queue"| node_ba_notifications
node_ba_notifications -->|"sends messages"| node_external_messaging
node_auth -->|"queries users"| node_db
node_admin_auth -->|"reuses sessions"| node_auth
node_ba_facade -->|"loads service"| node_ba_schedule
node_ba_facade -->|"loads service"| node_ba_notifications
node_ba_facade -->|"loads service"| node_ba_reports
node_pwa -->|"packaged as"| node_twa

click node_registration "https://github.com/esguerrajustin/marikina-econcern/blob/main/public/register.php"
click node_citizen_concerns "https://github.com/esguerrajustin/marikina-econcern/blob/main/public/submit_concern.php"
click node_concern_api "https://github.com/esguerrajustin/marikina-econcern/blob/main/api/submit_concern.php"
click node_citizen_pages "https://github.com/esguerrajustin/marikina-econcern/tree/main/public"
click node_admin_login "https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/login.php"
click node_admin_triage "https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/concerns.php"
click node_admin_api "https://github.com/esguerrajustin/marikina-econcern/tree/main/admin/api"
click node_admin_reports "https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/reports.php"
click node_ba_citizen "https://github.com/esguerrajustin/marikina-econcern/blob/main/public/ba_dashboard.php"
click node_ba_schedule "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Schedule.php"
click node_ba_dropoffs "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Dropoffs.php"
click node_ba_waste "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Schedule.php"
click node_ba_admin "https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/ba_schedules.php"
click node_ba_reports "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Reports.php"
click node_ba_announcements "https://github.com/esguerrajustin/marikina-econcern/blob/main/public/ba_announcements.php"
click node_ba_notifications "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Notifications.php"
click node_notification_worker "https://github.com/esguerrajustin/marikina-econcern/blob/main/ba_dispatch_queued_notifications.php"
click node_auth "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/auth.php"
click node_admin_auth "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/admin_auth.php"
click node_db "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/db.php"
click node_ba_facade "https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/basuraalert.php"
click node_pwa "https://github.com/esguerrajustin/marikina-econcern/blob/main/sw.js"

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_registration,node_citizen_concerns,node_concern_api,node_citizen_pages toneBlue
class node_admin_login,node_admin_triage,node_admin_api,node_admin_reports toneAmber
class node_ba_citizen,node_ba_schedule,node_ba_dropoffs,node_ba_waste,node_ba_admin,node_ba_reports,node_ba_announcements,node_ba_notifications,node_notification_worker toneMint
class node_auth,node_admin_auth,node_db,node_ba_facade,node_pwa,node_twa toneRose
class node_resident,node_admin_user,node_external_messaging toneIndigo
```

## Components

### Citizen portal

- [Registration and verification](https://github.com/esguerrajustin/marikina-econcern/blob/main/public/register.php): `public/register.php`
- [Concern submission and tracking](https://github.com/esguerrajustin/marikina-econcern/blob/main/public/submit_concern.php): `public/submit_concern.php`
- [Concern endpoints](https://github.com/esguerrajustin/marikina-econcern/blob/main/api/submit_concern.php): `api/submit_concern.php`
- [Citizen portal pages](https://github.com/esguerrajustin/marikina-econcern/tree/main/public): `public`

### Administration

- [Admin login](https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/login.php): `admin/login.php`
- [Concern triage](https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/concerns.php): `admin/concerns.php`
- [Admin JSON API](https://github.com/esguerrajustin/marikina-econcern/tree/main/admin/api): `admin/api`
- [Admin reports and exports](https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/reports.php): `admin/reports.php`

### BasuraAlert

- [Resident waste services](https://github.com/esguerrajustin/marikina-econcern/blob/main/public/ba_dashboard.php): `public/ba_dashboard.php`
- [Collection schedules](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Schedule.php): `includes/BasuraAlert/Schedule.php`
- [Drop-off locations](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Dropoffs.php): `includes/BasuraAlert/Dropoffs.php`
- [Waste guidance](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Schedule.php): `includes/BasuraAlert/Schedule.php`
- [Waste administration](https://github.com/esguerrajustin/marikina-econcern/blob/main/admin/ba_schedules.php): `admin/ba_schedules.php`
- [Waste reports and feedback](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Reports.php): `includes/BasuraAlert/Reports.php`
- [Announcements](https://github.com/esguerrajustin/marikina-econcern/blob/main/public/ba_announcements.php): `public/ba_announcements.php`
- [Notifications and reminders](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/BasuraAlert/Notifications.php): `includes/BasuraAlert/Notifications.php`
- [Queued delivery worker](https://github.com/esguerrajustin/marikina-econcern/blob/main/ba_dispatch_queued_notifications.php): `ba_dispatch_queued_notifications.php`

### Shared runtime

- [Authentication](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/auth.php): `includes/auth.php`
- [Admin authorization](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/admin_auth.php): `includes/admin_auth.php`
- [MySQL access](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/db.php): `includes/db.php`
- [BasuraAlert service facade](https://github.com/esguerrajustin/marikina-econcern/blob/main/includes/basuraalert.php): `includes/basuraalert.php`
- [Installable PWA](https://github.com/esguerrajustin/marikina-econcern/blob/main/sw.js): `sw.js`
- **Android TWA clients**

### Other components

- **Resident**
- **Administrator**
- **SMS and email providers**

## Connections

- Resident → Registration and verification: creates account
- Resident → Concern submission and tracking: submits and tracks
- Registration and verification → Authentication: authenticates
- Concern submission and tracking → Concern endpoints: submits concern
- Concern endpoints → Authentication: checks identity (evidence: `api/submit_concern.php`)
- Concern endpoints → MySQL access: persists data (evidence: `api/submit_concern.php`)
- Resident → Citizen portal pages: uses portal
- Administrator → Admin login: signs in
- Admin login → Admin authorization: checks access (evidence: `includes/admin_auth.php`)
- Administrator → Concern triage: triages concerns
- Concern triage → Admin JSON API: uses endpoints
- Administrator → Admin reports and exports: exports reports
- Resident → Resident waste services: uses waste services
- Resident waste services → Collection schedules: reads schedules
- Resident waste services → Drop-off locations: views locations
- Resident waste services → Waste guidance: reads guidance (evidence: `includes/BasuraAlert/Schedule.php`)
- Administrator → Waste administration: manages services
- Waste administration → Waste reports and feedback: reviews feedback
- Resident waste services → Announcements: reads announcements
- Resident waste services → Notifications and reminders: receives notices (evidence: `public/ba_dashboard.php`)
- Queued delivery worker → Notifications and reminders: processes queue (evidence: `ba_dispatch_queued_notifications.php`)
- Notifications and reminders → SMS and email providers: sends messages (evidence: `includes/BasuraAlert/Notifications.php`)
- Authentication → MySQL access: queries users (evidence: `includes/auth.php`)
- Admin authorization → Authentication: reuses sessions (evidence: `includes/admin_auth.php`)
- BasuraAlert service facade → Collection schedules: loads service (evidence: `includes/basuraalert.php`)
- BasuraAlert service facade → Notifications and reminders: loads service (evidence: `includes/basuraalert.php`)
- BasuraAlert service facade → Waste reports and feedback: loads service (evidence: `includes/basuraalert.php`)
- Installable PWA → Android TWA clients: packaged as
