# azimshurzo/memoflownub architecture

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

- Interactive diagram: https://gitdiagram.com/azimshurzo/memoflownub
- Repository: https://github.com/azimshurzo/memoflownub

## Overview

MemoFlow is an organizational memo drafting, routing, and approval application. Users create or edit memos, submit them into configurable review and approval workflows, and track progress; administrators manage the organization and inspect reports. The tree also shows search, delegation, notifications, attachments, comments, versioning, and PDF capabilities. Sampled API handlers confirm memo creation, workflow submission, administration, search, and Supabase access. Other route families are represented from their paths; their internal wiring was not sampled.

Main entry points: [`src/app/api/memos`](https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/memos) (Memo endpoints), [`src/app/api/admin`](https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/admin) (Admin endpoints), [`src/lib/workflow`](https://github.com/azimshurzo/memoflownub/tree/main/src/lib/workflow) (Workflow engine), [`src/lib/audit/index.ts`](https://github.com/azimshurzo/memoflownub/blob/main/src/lib/audit/index.ts) (Audit recording)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_surfaces["User surfaces"]
  node_app["Memo workspace"]
  node_admin_ui["Admin console"]
  node_auth_ui["Sign-in and setup"]
end

subgraph group_routes["Application API"]
  node_memo_api["Memo endpoints"]
  node_admin_api["Admin endpoints"]
  node_org_api["Organization setup<br/>[route.ts]"]
  node_search_api["Memo search<br/>[route.ts]"]
  node_delegation_api["Delegations<br/>[route.ts]"]
  node_notifications_api["Notifications"]
  node_profile_api["User profile<br/>[route.ts]"]
end

subgraph group_domain["Workflow services"]
  node_workflow_submit["Submit memo<br/>[submit.ts]"]
  node_workflow_engine["Workflow engine"]
  node_audit["Audit recording<br/>[index.ts]"]
  node_notifications_service["Notification service<br/>[index.ts]"]
  node_pdf["PDF generation"]
  node_auth["Session authorization<br/>[authorize.ts]"]
end

subgraph group_data["Data and integrations"]
  node_supabase[("Supabase platform")]
end

node_user(("Organization user"))
node_admin(("Organization admin"))

node_user -->|"uses"| node_app
node_admin -->|"manages"| node_admin_ui
node_user -->|"signs in"| node_auth_ui
node_memo_api -->|"checks session"| node_auth
node_admin_api -->|"checks admin"| node_auth
node_memo_api -->|"submits memo"| node_workflow_submit
node_workflow_submit -->|"advances workflow"| node_workflow_engine
node_memo_api -->|"reads and writes"| node_supabase
node_admin_api -->|"reads and writes"| node_supabase
node_org_api -->|"creates organization"| node_supabase
node_org_api -->|"creates admin account"| node_supabase
node_search_api -->|"queries memos"| node_supabase
node_delegation_api -->|"manages delegations"| node_supabase
node_notifications_api -->|"reads notifications"| node_supabase
node_profile_api -->|"reads and updates"| node_supabase
node_memo_api -->|"records changes"| node_audit
node_admin_api -->|"records changes"| node_audit
node_delegation_api -->|"records delegation"| node_audit
node_workflow_engine -->|"persists workflow"| node_supabase
node_workflow_engine -.->|"notifies participants"| node_notifications_service
node_memo_api -.->|"exports memo"| node_pdf

click node_app "https://github.com/azimshurzo/memoflownub/tree/main/src/app/(app)"
click node_admin_ui "https://github.com/azimshurzo/memoflownub/tree/main/src/app/(app)/admin"
click node_auth_ui "https://github.com/azimshurzo/memoflownub/tree/main/src/app/(auth)"
click node_memo_api "https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/memos"
click node_admin_api "https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/admin"
click node_org_api "https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/auth/register-organization/route.ts"
click node_search_api "https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/search/route.ts"
click node_delegation_api "https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/delegations/route.ts"
click node_notifications_api "https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/notifications"
click node_profile_api "https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/profile/route.ts"
click node_workflow_submit "https://github.com/azimshurzo/memoflownub/blob/main/src/lib/workflow/actions/submit.ts"
click node_workflow_engine "https://github.com/azimshurzo/memoflownub/tree/main/src/lib/workflow"
click node_audit "https://github.com/azimshurzo/memoflownub/blob/main/src/lib/audit/index.ts"
click node_notifications_service "https://github.com/azimshurzo/memoflownub/blob/main/src/lib/notifications/index.ts"
click node_pdf "https://github.com/azimshurzo/memoflownub/tree/main/src/lib/pdf"
click node_auth "https://github.com/azimshurzo/memoflownub/blob/main/src/lib/auth/authorize.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_app,node_admin_ui,node_auth_ui,node_user toneBlue
class node_memo_api,node_admin_api,node_org_api,node_search_api,node_delegation_api,node_notifications_api,node_profile_api toneAmber
class node_workflow_submit,node_workflow_engine,node_audit,node_notifications_service,node_pdf,node_auth toneMint
class node_supabase toneRose
class node_admin toneIndigo
```

## Components

### User surfaces

- [Memo workspace](https://github.com/azimshurzo/memoflownub/tree/main/src/app/(app)): `src/app/(app)`
- [Admin console](https://github.com/azimshurzo/memoflownub/tree/main/src/app/(app)/admin): `src/app/(app)/admin`
- [Sign-in and setup](https://github.com/azimshurzo/memoflownub/tree/main/src/app/(auth)): `src/app/(auth)`

### Application API

- [Memo endpoints](https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/memos): `src/app/api/memos`
- [Admin endpoints](https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/admin): `src/app/api/admin`
- [Organization setup](https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/auth/register-organization/route.ts): `src/app/api/auth/register-organization/route.ts`
- [Memo search](https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/search/route.ts): `src/app/api/search/route.ts`
- [Delegations](https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/delegations/route.ts): `src/app/api/delegations/route.ts`
- [Notifications](https://github.com/azimshurzo/memoflownub/tree/main/src/app/api/notifications): `src/app/api/notifications`
- [User profile](https://github.com/azimshurzo/memoflownub/blob/main/src/app/api/profile/route.ts): `src/app/api/profile/route.ts`

### Workflow services

- [Submit memo](https://github.com/azimshurzo/memoflownub/blob/main/src/lib/workflow/actions/submit.ts): `src/lib/workflow/actions/submit.ts`
- [Workflow engine](https://github.com/azimshurzo/memoflownub/tree/main/src/lib/workflow): `src/lib/workflow`
- [Audit recording](https://github.com/azimshurzo/memoflownub/blob/main/src/lib/audit/index.ts): `src/lib/audit/index.ts`
- [Notification service](https://github.com/azimshurzo/memoflownub/blob/main/src/lib/notifications/index.ts): `src/lib/notifications/index.ts`
- [PDF generation](https://github.com/azimshurzo/memoflownub/tree/main/src/lib/pdf): `src/lib/pdf`
- [Session authorization](https://github.com/azimshurzo/memoflownub/blob/main/src/lib/auth/authorize.ts): `src/lib/auth/authorize.ts`

### Data and integrations

- **Supabase platform**

### Other components

- **Organization user**
- **Organization admin**

## Connections

- Organization user → Memo workspace: uses
- Organization admin → Admin console: manages
- Organization user → Sign-in and setup: signs in
- Memo endpoints → Session authorization: checks session
- Admin endpoints → Session authorization: checks admin
- Memo endpoints → Submit memo: submits memo
- Submit memo → Workflow engine: advances workflow
- Memo endpoints → Supabase platform: reads and writes
- Admin endpoints → Supabase platform: reads and writes
- Organization setup → Supabase platform: creates organization
- Organization setup → Supabase platform: creates admin account
- Memo search → Supabase platform: queries memos
- Delegations → Supabase platform: manages delegations
- Notifications → Supabase platform: reads notifications
- User profile → Supabase platform: reads and updates
- Memo endpoints → Audit recording: records changes
- Admin endpoints → Audit recording: records changes
- Delegations → Audit recording: records delegation
- Workflow engine → Supabase platform: persists workflow
- Workflow engine → Notification service: notifies participants
- Memo endpoints → PDF generation: exports memo
