# dion8185/parishserve architecture

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

- Interactive diagram: https://gitdiagram.com/dion8185/parishserve
- Repository: https://github.com/dion8185/parishserve

## Overview

ParishServe is a Flutter parish-administration platform backed by Supabase, with parishioner and staff workflows spanning sacramental records, appointments, finance, inventory, and pastoral operations. Its principal user journey is requesting a parish service or record, followed by staff review and operational handling; the README also documents certificates, readings, telemetry, and role governance. The Flutter/Dart application sources are absent from the supplied tree, so domain links are based on README statements, not inspected implementation calls.

Main entry points: [`appointments_codebase.py`](https://github.com/dion8185/parishserve/blob/main/appointments_codebase.py) (Appointments), [`appointments_calendar_codebase.py`](https://github.com/dion8185/parishserve/blob/main/appointments_calendar_codebase.py) (Liturgical Calendar), [`notifications_iot_codebase.py`](https://github.com/dion8185/parishserve/blob/main/notifications_iot_codebase.py) (Archive Telemetry), [`supabase/functions/send-booking-confirmation/index.ts`](https://github.com/dion8185/parishserve/blob/main/supabase/functions/send-booking-confirmation/index.ts) (Booking Email Function)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_service["Parish Services"]
  node_flutter["Flutter App"]
  node_appointments["Appointments"]
  node_calendar["Liturgical Calendar"]
  node_sacramental["Sacramental Records"]
  node_pabuklat["Pabuklat Requests"]
  node_certificates["Certificates &amp; QR"]
  node_readings["Daily Readings"]
end

subgraph group_operations["Parish Operations"]
  node_finance["POS &amp; Receipts"]
  node_inventory["Asset Inventory"]
  node_governance["RBAC &amp; Audit<br/>[master_codebase.py]"]
  node_iot["Archive Telemetry"]
end

subgraph group_platform["Platform Services"]
  node_supabase[("Supabase Platform")]
  node_booking_email["Booking Email Function<br/>[index.ts]"]
  node_alert_dispatch["Alert Dispatch Function<br/>[index.ts]"]
  node_litcal["LitCal API"]
  node_onesignal["OneSignal Push"]
  node_brevo["Brevo Email"]
  node_esp32["ESP32 Sensors"]
end

subgraph group_hosts["Desktop Hosts"]
  node_host_windows["Windows Flutter Host<br/>[main.cpp]"]
  node_host_linux["Linux Flutter Host<br/>[main.cc]"]
  node_host_ios["iOS Flutter Host<br/>[AppDelegate.swift]"]
  node_host_plugins["Desktop Plugin Registration"]
end

node_parishioner(("Parishioner"))
node_staff(("Parish Staff"))

node_parishioner -->|"uses"| node_flutter
node_staff -->|"uses"| node_flutter
node_flutter -->|"offers booking"| node_appointments
node_flutter -->|"manages registers"| node_sacramental
node_flutter -->|"accepts requests"| node_pabuklat
node_flutter -->|"issues &amp; verifies"| node_certificates
node_flutter -->|"supports cashiering"| node_finance
node_flutter -->|"manages assets"| node_inventory
node_flutter -->|"enforces roles"| node_governance
node_flutter -->|"shows readings"| node_readings
node_appointments -->|"checks liturgical dates"| node_calendar
node_calendar -->|"fetches calendar"| node_litcal
node_flutter -->|"uses backend"| node_supabase
node_flutter -->|"sends push"| node_onesignal
node_flutter -->|"monitors archive"| node_iot
node_iot -->|"receives telemetry"| node_esp32
node_flutter -->|"triggers confirmation"| node_booking_email
node_booking_email -->|"sends email"| node_brevo
node_flutter -.->|"dispatches alerts"| node_alert_dispatch
node_host_windows -->|"hosts app"| node_flutter
node_host_linux -->|"starts app"| node_flutter
node_host_ios -.->|"registers plugins"| node_host_plugins

click node_appointments "https://github.com/dion8185/parishserve/blob/main/appointments_codebase.py"
click node_calendar "https://github.com/dion8185/parishserve/blob/main/appointments_calendar_codebase.py"
click node_sacramental "https://github.com/dion8185/parishserve/blob/main/records_codebase.py"
click node_pabuklat "https://github.com/dion8185/parishserve/blob/main/records_codebase.py"
click node_certificates "https://github.com/dion8185/parishserve/blob/main/records_codebase.py"
click node_finance "https://github.com/dion8185/parishserve/blob/main/receipts_codebase.py"
click node_inventory "https://github.com/dion8185/parishserve/blob/main/inventory_codebase.py"
click node_governance "https://github.com/dion8185/parishserve/blob/main/master_codebase.py"
click node_iot "https://github.com/dion8185/parishserve/blob/main/notifications_iot_codebase.py"
click node_booking_email "https://github.com/dion8185/parishserve/blob/main/supabase/functions/send-booking-confirmation/index.ts"
click node_alert_dispatch "https://github.com/dion8185/parishserve/blob/main/supabase/functions/dispatch-alert/index.ts"
click node_host_windows "https://github.com/dion8185/parishserve/blob/main/windows/runner/main.cpp"
click node_host_linux "https://github.com/dion8185/parishserve/blob/main/linux/runner/main.cc"
click node_host_ios "https://github.com/dion8185/parishserve/blob/main/ios/Runner/AppDelegate.swift"
click node_host_plugins "https://github.com/dion8185/parishserve/blob/main/windows/flutter/generated_plugin_registrant.cc"

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_flutter,node_appointments,node_calendar,node_sacramental,node_pabuklat,node_certificates,node_readings toneBlue
class node_finance,node_inventory,node_governance,node_iot toneAmber
class node_supabase,node_booking_email,node_alert_dispatch,node_litcal,node_onesignal,node_brevo,node_esp32 toneMint
class node_host_windows,node_host_linux,node_host_ios,node_host_plugins toneRose
class node_parishioner,node_staff toneIndigo
```

## Components

### Parish Services

- **Flutter App**
- [Appointments](https://github.com/dion8185/parishserve/blob/main/appointments_codebase.py): `appointments_codebase.py`
- [Liturgical Calendar](https://github.com/dion8185/parishserve/blob/main/appointments_calendar_codebase.py): `appointments_calendar_codebase.py`
- [Sacramental Records](https://github.com/dion8185/parishserve/blob/main/records_codebase.py): `records_codebase.py`
- [Pabuklat Requests](https://github.com/dion8185/parishserve/blob/main/records_codebase.py): `records_codebase.py`
- [Certificates & QR](https://github.com/dion8185/parishserve/blob/main/records_codebase.py): `records_codebase.py`
- **Daily Readings**

### Parish Operations

- [POS & Receipts](https://github.com/dion8185/parishserve/blob/main/receipts_codebase.py): `receipts_codebase.py`
- [Asset Inventory](https://github.com/dion8185/parishserve/blob/main/inventory_codebase.py): `inventory_codebase.py`
- [RBAC & Audit](https://github.com/dion8185/parishserve/blob/main/master_codebase.py): `master_codebase.py`
- [Archive Telemetry](https://github.com/dion8185/parishserve/blob/main/notifications_iot_codebase.py): `notifications_iot_codebase.py`

### Platform Services

- **Supabase Platform**
- [Booking Email Function](https://github.com/dion8185/parishserve/blob/main/supabase/functions/send-booking-confirmation/index.ts): `supabase/functions/send-booking-confirmation/index.ts`
- [Alert Dispatch Function](https://github.com/dion8185/parishserve/blob/main/supabase/functions/dispatch-alert/index.ts): `supabase/functions/dispatch-alert/index.ts`
- **LitCal API**
- **OneSignal Push**
- **Brevo Email**
- **ESP32 Sensors**

### Desktop Hosts

- [Windows Flutter Host](https://github.com/dion8185/parishserve/blob/main/windows/runner/main.cpp): `windows/runner/main.cpp`
- [Linux Flutter Host](https://github.com/dion8185/parishserve/blob/main/linux/runner/main.cc): `linux/runner/main.cc`
- [iOS Flutter Host](https://github.com/dion8185/parishserve/blob/main/ios/Runner/AppDelegate.swift): `ios/Runner/AppDelegate.swift`
- [Desktop Plugin Registration](https://github.com/dion8185/parishserve/blob/main/windows/flutter/generated_plugin_registrant.cc): `windows/flutter/generated_plugin_registrant.cc`

### Other components

- **Parishioner**
- **Parish Staff**

## Connections

- Parishioner → Flutter App: uses
- Parish Staff → Flutter App: uses
- Flutter App → Appointments: offers booking
- Flutter App → Sacramental Records: manages registers
- Flutter App → Pabuklat Requests: accepts requests
- Flutter App → Certificates & QR: issues & verifies
- Flutter App → POS & Receipts: supports cashiering
- Flutter App → Asset Inventory: manages assets
- Flutter App → RBAC & Audit: enforces roles
- Flutter App → Daily Readings: shows readings
- Appointments → Liturgical Calendar: checks liturgical dates
- Liturgical Calendar → LitCal API: fetches calendar
- Flutter App → Supabase Platform: uses backend
- Flutter App → OneSignal Push: sends push
- Flutter App → Archive Telemetry: monitors archive
- Archive Telemetry → ESP32 Sensors: receives telemetry
- Flutter App → Booking Email Function: triggers confirmation
- Booking Email Function → Brevo Email: sends email
- Flutter App → Alert Dispatch Function: dispatches alerts
- Windows Flutter Host → Flutter App: hosts app (evidence: `windows/runner/main.cpp`)
- Linux Flutter Host → Flutter App: starts app (evidence: `linux/runner/main.cc`)
- iOS Flutter Host → Desktop Plugin Registration: registers plugins
