# reonesec/mmr-burwan architecture

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

- Interactive diagram: https://gitdiagram.com/reonesec/mmr-burwan
- Repository: https://github.com/reonesec/mmr-burwan

## Overview

MMR Burwan is a marriage-registration portal for applicants, agents, officials, and public certificate verifiers. Its main workflow runs from account access and application submission, through document handling, appointment and official review, to certificate issuance and public verification; messaging and agent/admin operations support that flow. The README documents the major capabilities and backend integrations. Source excerpts confirm selected application, authentication, storage, and certificate-generation calls; other links shown here are based on README descriptions, not inspection of unsampled implementations.

Main entry points: [`utils/certificateGenerator.ts`](https://github.com/reonesec/mmr-burwan/blob/main/utils/certificateGenerator.ts) (Certificate issuance), [`pages/admin/AdminDashboardPage.tsx`](https://github.com/reonesec/mmr-burwan/blob/main/pages/admin/AdminDashboardPage.tsx) (Admin command center), [`router.tsx`](https://github.com/reonesec/mmr-burwan/blob/main/router.tsx) (Portal routing), [`components/application/ApplicationFormContent.tsx`](https://github.com/reonesec/mmr-burwan/blob/main/components/application/ApplicationFormContent.tsx) (Application wizard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and portal"]
  node_routing["Portal routing<br/>[router.tsx]"]
  node_auth["Authentication<br/>[AuthContext.tsx]"]
end

subgraph group_applications["Applications and records"]
  node_appform["Application wizard"]
  node_applicationdata[("Application records<br/>[application.ts]")]
  node_docs["Document vault<br/>[documents.ts]"]
  node_appointments["Appointment booking"]
end

subgraph group_operations["Registrar operations"]
  node_agent["Agent workspace"]
  node_admin["Admin command center"]
  node_review["Application review"]
  node_audit[("Audit records<br/>[audit.ts]")]
  node_chat["Realtime messaging<br/>[ChatPage.tsx]"]
end

subgraph group_delivery["Certificates and verification"]
  node_certificates["Certificate issuance"]
  node_certpdf["Certificate PDF<br/>[CertificatePDF.tsx]"]
  node_publicverify["Public verification<br/>[VerifyPage.tsx]"]
end

subgraph group_platform["Shared platform"]
  node_storage[("Hybrid file storage<br/>[storage.ts]")]
  node_notifications["Notifications"]
  node_supabase[("Supabase services<br/>[supabase.ts]")]
  node_email["Email functions<br/>[index.ts]"]
end

node_applicant(("Applicant"))
node_official(("Registrar / admin"))
node_verifier(("Public verifier"))

node_applicant -->|"opens portal"| node_routing
node_official -->|"opens portal"| node_routing
node_verifier -->|"checks certificate"| node_publicverify
node_routing -->|"routes access"| node_auth
node_routing -->|"routes application"| node_appform
node_applicant -->|"submits details"| node_appform
node_appform -->|"saves draft"| node_applicationdata
node_appform -->|"uploads proofs"| node_docs
node_docs -->|"stores files"| node_storage
node_storage -.->|"falls back"| node_supabase
node_applicant -->|"books slot"| node_appointments
node_official -->|"manages cases"| node_admin
node_agent -.->|"creates applications"| node_applicationdata
node_admin -->|"reviews cases"| node_review
node_review -.->|"updates status"| node_applicationdata
node_review -->|"triggers notices"| node_email
node_admin -.->|"records actions"| node_audit
node_applicant -->|"messages office"| node_chat
node_official -->|"replies to applicants"| node_chat
node_chat -.->|"signals updates"| node_notifications
node_admin -->|"issues certificate"| node_certificates
node_certificates -->|"renders PDF"| node_certpdf
node_certificates -->|"uploads certificate"| node_docs
node_applicant -->|"downloads certificate"| node_certificates
node_publicverify -->|"checks records"| node_supabase
node_certificates -->|"enables verification"| node_publicverify

click node_routing "https://github.com/reonesec/mmr-burwan/blob/main/router.tsx"
click node_auth "https://github.com/reonesec/mmr-burwan/blob/main/contexts/AuthContext.tsx"
click node_appform "https://github.com/reonesec/mmr-burwan/blob/main/components/application/ApplicationFormContent.tsx"
click node_applicationdata "https://github.com/reonesec/mmr-burwan/blob/main/services/application.ts"
click node_docs "https://github.com/reonesec/mmr-burwan/blob/main/services/documents.ts"
click node_storage "https://github.com/reonesec/mmr-burwan/blob/main/lib/storage.ts"
click node_appointments "https://github.com/reonesec/mmr-burwan/blob/main/pages/appointments/BookAppointmentPage.tsx"
click node_agent "https://github.com/reonesec/mmr-burwan/blob/main/pages/agent/AgentDashboardPage.tsx"
click node_admin "https://github.com/reonesec/mmr-burwan/blob/main/pages/admin/AdminDashboardPage.tsx"
click node_review "https://github.com/reonesec/mmr-burwan/blob/main/pages/admin/ApplicationDetailsPage.tsx"
click node_audit "https://github.com/reonesec/mmr-burwan/blob/main/services/audit.ts"
click node_chat "https://github.com/reonesec/mmr-burwan/blob/main/pages/chat/ChatPage.tsx"
click node_notifications "https://github.com/reonesec/mmr-burwan/blob/main/contexts/NotificationContext.tsx"
click node_certificates "https://github.com/reonesec/mmr-burwan/blob/main/utils/certificateGenerator.ts"
click node_certpdf "https://github.com/reonesec/mmr-burwan/blob/main/components/certificate/CertificatePDF.tsx"
click node_publicverify "https://github.com/reonesec/mmr-burwan/blob/main/pages/verify/VerifyPage.tsx"
click node_supabase "https://github.com/reonesec/mmr-burwan/blob/main/lib/supabase.ts"
click node_email "https://github.com/reonesec/mmr-burwan/blob/main/supabase/functions/send-verification-email/index.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_routing,node_auth toneBlue
class node_appform,node_applicationdata,node_docs,node_appointments toneAmber
class node_agent,node_admin,node_review,node_audit,node_chat toneMint
class node_certificates,node_certpdf,node_publicverify toneRose
class node_storage,node_notifications,node_supabase,node_email,node_applicant,node_official,node_verifier toneIndigo
```

## Components

### Access and portal

- [Portal routing](https://github.com/reonesec/mmr-burwan/blob/main/router.tsx): `router.tsx`
- [Authentication](https://github.com/reonesec/mmr-burwan/blob/main/contexts/AuthContext.tsx): `contexts/AuthContext.tsx`

### Applications and records

- [Application wizard](https://github.com/reonesec/mmr-burwan/blob/main/components/application/ApplicationFormContent.tsx): `components/application/ApplicationFormContent.tsx`
- [Application records](https://github.com/reonesec/mmr-burwan/blob/main/services/application.ts): `services/application.ts`
- [Document vault](https://github.com/reonesec/mmr-burwan/blob/main/services/documents.ts): `services/documents.ts`
- [Appointment booking](https://github.com/reonesec/mmr-burwan/blob/main/pages/appointments/BookAppointmentPage.tsx): `pages/appointments/BookAppointmentPage.tsx`

### Registrar operations

- [Agent workspace](https://github.com/reonesec/mmr-burwan/blob/main/pages/agent/AgentDashboardPage.tsx): `pages/agent/AgentDashboardPage.tsx`
- [Admin command center](https://github.com/reonesec/mmr-burwan/blob/main/pages/admin/AdminDashboardPage.tsx): `pages/admin/AdminDashboardPage.tsx`
- [Application review](https://github.com/reonesec/mmr-burwan/blob/main/pages/admin/ApplicationDetailsPage.tsx): `pages/admin/ApplicationDetailsPage.tsx`
- [Audit records](https://github.com/reonesec/mmr-burwan/blob/main/services/audit.ts): `services/audit.ts`
- [Realtime messaging](https://github.com/reonesec/mmr-burwan/blob/main/pages/chat/ChatPage.tsx): `pages/chat/ChatPage.tsx`

### Certificates and verification

- [Certificate issuance](https://github.com/reonesec/mmr-burwan/blob/main/utils/certificateGenerator.ts): `utils/certificateGenerator.ts`
- [Certificate PDF](https://github.com/reonesec/mmr-burwan/blob/main/components/certificate/CertificatePDF.tsx): `components/certificate/CertificatePDF.tsx`
- [Public verification](https://github.com/reonesec/mmr-burwan/blob/main/pages/verify/VerifyPage.tsx): `pages/verify/VerifyPage.tsx`

### Shared platform

- [Hybrid file storage](https://github.com/reonesec/mmr-burwan/blob/main/lib/storage.ts): `lib/storage.ts`
- [Notifications](https://github.com/reonesec/mmr-burwan/blob/main/contexts/NotificationContext.tsx): `contexts/NotificationContext.tsx`
- [Supabase services](https://github.com/reonesec/mmr-burwan/blob/main/lib/supabase.ts): `lib/supabase.ts`
- [Email functions](https://github.com/reonesec/mmr-burwan/blob/main/supabase/functions/send-verification-email/index.ts): `supabase/functions/send-verification-email/index.ts`

### Other components

- **Applicant**
- **Registrar / admin**
- **Public verifier**

## Connections

- Applicant → Portal routing: opens portal
- Registrar / admin → Portal routing: opens portal
- Public verifier → Public verification: checks certificate
- Portal routing → Authentication: routes access (evidence: `router.tsx`)
- Portal routing → Application wizard: routes application (evidence: `router.tsx`)
- Applicant → Application wizard: submits details
- Application wizard → Application records: saves draft (evidence: `components/application/ApplicationFormContent.tsx`)
- Application wizard → Document vault: uploads proofs (evidence: `components/application/ApplicationFormContent.tsx`)
- Document vault → Hybrid file storage: stores files (evidence: `services/documents.ts`)
- Hybrid file storage → Supabase services: falls back (evidence: `lib/storage.ts`)
- Applicant → Appointment booking: books slot
- Registrar / admin → Admin command center: manages cases
- Agent workspace → Application records: creates applications
- Admin command center → Application review: reviews cases
- Application review → Application records: updates status
- Application review → Email functions: triggers notices
- Admin command center → Audit records: records actions
- Applicant → Realtime messaging: messages office
- Registrar / admin → Realtime messaging: replies to applicants
- Realtime messaging → Notifications: signals updates
- Admin command center → Certificate issuance: issues certificate
- Certificate issuance → Certificate PDF: renders PDF (evidence: `utils/certificateGenerator.ts`)
- Certificate issuance → Document vault: uploads certificate (evidence: `utils/certificateGenerator.ts`)
- Applicant → Certificate issuance: downloads certificate
- Public verification → Supabase services: checks records
- Certificate issuance → Public verification: enables verification
