# trminh-developer/chuachinhphuoc architecture

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

- Interactive diagram: https://gitdiagram.com/trminh-developer/chuachinhphuoc
- Repository: https://github.com/trminh-developer/chuachinhphuoc

## Overview

Chùa Diên Phước is a temple website and iOS companion app with public content, admin management, and notifications. Visitors browse events, galleries, audio/video, and temple history; administrators manage content and accounts through the dashboard, with API requests backed by PostgreSQL. The web app also supports PWA caching and push, while Capacitor provides the iOS wrapper and documented OTA/local-notification capabilities. Edges reflect sampled source and README statements; unsampled route wiring and OTA internals are represented only where documented.

Main entry points: [`src/routes/api.ts`](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/routes/api.ts) (HTTP API), [`public/js/main.js`](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/main.js) (Public Features), [`public/js/admin.js`](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/admin.js) (Admin Dashboard), [`src/database.ts`](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/database.ts) (Data Access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Public Web"]
  node_site["Temple Pages<br/>[index.html]"]
  node_webclient["Public Features<br/>[main.js]"]
  node_history["Temple History<br/>[historical.js]"]
  node_pwa["PWA Service Worker<br/>[sw.js]"]
end

subgraph group_admin["Admin Operations"]
  node_dashboard["Admin Dashboard<br/>[admin.js]"]
  node_adminpage["Admin Page<br/>[admin.html]"]
  node_storage[("Supabase Storage")]
end

subgraph group_backend["API and Data"]
  node_api["HTTP API<br/>[api.ts]"]
  node_server["Express Server<br/>[server.ts]"]
  node_auth["Admin Authentication<br/>[auth.ts]"]
  node_dbaccess["Data Access<br/>[database.ts]"]
  node_postgres[("PostgreSQL")]
end

subgraph group_mobile["Mobile and Notifications"]
  node_ios["iOS Wrapper<br/>[AppDelegate.swift]"]
  node_nativepush["Native Push Client<br/>[push-native.js]"]
  node_webpush["Web Push Client"]
  node_fcm["Push Dispatch<br/>[fcm.ts]"]
  node_firebase["Firebase Messaging"]
  node_capgo["Capacitor Updater"]
end

node_visitor(("Visitor"))
node_adminuser(("Administrator"))

node_visitor -->|"opens"| node_site
node_site -->|"loads scripts"| node_webclient
node_webclient -->|"fetches content"| node_api
node_site -->|"opens history"| node_history
node_webclient -->|"registers worker"| node_pwa
node_adminuser -->|"opens dashboard"| node_adminpage
node_adminpage -->|"loads scripts"| node_dashboard
node_dashboard -->|"manages content"| node_api
node_dashboard -.->|"uploads media"| node_storage
node_server -->|"mounts routes"| node_api
node_server -->|"initializes database"| node_dbaccess
node_api -->|"reads and writes"| node_dbaccess
node_auth -->|"checks admin"| node_dbaccess
node_dbaccess -->|"queries"| node_postgres
node_api -->|"dispatches alerts"| node_fcm
node_fcm -->|"sends notifications"| node_firebase
node_webpush -->|"registers token"| node_api
node_pwa -->|"handles push"| node_firebase
node_ios -->|"hosts client"| node_nativepush
node_webclient -.->|"downloads OTA"| node_capgo
node_dashboard -.->|"manages OTA"| node_capgo

click node_site "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/index.html"
click node_webclient "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/main.js"
click node_history "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/historical.js"
click node_pwa "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/sw.js"
click node_dashboard "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/admin.js"
click node_adminpage "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/admin/admin.html"
click node_api "https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/routes/api.ts"
click node_server "https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/server.ts"
click node_auth "https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/middleware/auth.ts"
click node_dbaccess "https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/database.ts"
click node_ios "https://github.com/trminh-developer/chuachinhphuoc/blob/main/ios/App/App/AppDelegate.swift"
click node_nativepush "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/push-native.js"
click node_webpush "https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/firebase-messaging.js"
click node_fcm "https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/fcm.ts"

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_site,node_webclient,node_history,node_pwa toneBlue
class node_dashboard,node_adminpage,node_storage toneAmber
class node_api,node_server,node_auth,node_dbaccess,node_postgres toneMint
class node_ios,node_nativepush,node_webpush,node_fcm,node_firebase,node_capgo toneRose
class node_visitor,node_adminuser toneIndigo
```

## Components

### Public Web

- [Temple Pages](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/index.html): `public/index.html`
- [Public Features](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/main.js): `public/js/main.js`
- [Temple History](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/historical.js): `public/js/historical.js`
- [PWA Service Worker](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/sw.js): `public/sw.js`

### Admin Operations

- [Admin Dashboard](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/admin.js): `public/js/admin.js`
- [Admin Page](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/admin/admin.html): `public/admin/admin.html`
- **Supabase Storage**

### API and Data

- [HTTP API](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/routes/api.ts): `src/routes/api.ts`
- [Express Server](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/server.ts): `src/server.ts`
- [Admin Authentication](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/middleware/auth.ts): `src/middleware/auth.ts`
- [Data Access](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/database.ts): `src/database.ts`
- **PostgreSQL**

### Mobile and Notifications

- [iOS Wrapper](https://github.com/trminh-developer/chuachinhphuoc/blob/main/ios/App/App/AppDelegate.swift): `ios/App/App/AppDelegate.swift`
- [Native Push Client](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/push-native.js): `public/js/push-native.js`
- [Web Push Client](https://github.com/trminh-developer/chuachinhphuoc/blob/main/public/js/firebase-messaging.js): `public/js/firebase-messaging.js`
- [Push Dispatch](https://github.com/trminh-developer/chuachinhphuoc/blob/main/src/fcm.ts): `src/fcm.ts`
- **Firebase Messaging**
- **Capacitor Updater**

### Other components

- **Visitor**
- **Administrator**

## Connections

- Visitor → Temple Pages: opens
- Temple Pages → Public Features: loads scripts
- Public Features → HTTP API: fetches content
- Temple Pages → Temple History: opens history
- Public Features → PWA Service Worker: registers worker
- Administrator → Admin Page: opens dashboard
- Admin Page → Admin Dashboard: loads scripts
- Admin Dashboard → HTTP API: manages content
- Admin Dashboard → Supabase Storage: uploads media
- Express Server → HTTP API: mounts routes
- Express Server → Data Access: initializes database
- HTTP API → Data Access: reads and writes
- Admin Authentication → Data Access: checks admin
- Data Access → PostgreSQL: queries
- HTTP API → Push Dispatch: dispatches alerts
- Push Dispatch → Firebase Messaging: sends notifications
- Web Push Client → HTTP API: registers token
- PWA Service Worker → Firebase Messaging: handles push
- iOS Wrapper → Native Push Client: hosts client
- Public Features → Capacitor Updater: downloads OTA
- Admin Dashboard → Capacitor Updater: manages OTA
