# angelperezcastro/angel-os architecture

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

- Interactive diagram: https://gitdiagram.com/angelperezcastro/angel-os
- Repository: https://github.com/angelperezcastro/angel-os

## Overview

Angel OS is a private personal application, with the web app as its implemented product surface; the mobile app is currently a placeholder. The principal documented workflow is a signed-in user managing Tasks and Notes, with additional life-management areas for goals, habits, career, finance and study, plus dashboard and global search. Sampled code confirms Google/Supabase authentication, task persistence and search grouping. Other feature paths are represented from the tree, but their internal call wiring was not sampled.

Main entry points: [`apps/web/app/app/layout.tsx`](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/app/layout.tsx) (Web app), [`apps/web/app/auth/google/route.ts`](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/auth/google/route.ts) (Auth routes), [`packages/data/src/tasks.ts`](https://github.com/angelperezcastro/angel-os/blob/main/packages/data/src/tasks.ts) (Task persistence), [`apps/web/lib/supabase/server.ts`](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/supabase/server.ts) (Supabase clients)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_webapp["Web app<br/>[layout.tsx]"]
  node_auth["Auth routes<br/>[route.ts]"]
end

subgraph group_features["Personal workflows"]
  node_task["Tasks"]
  node_notes["Notes"]
  node_goals["Goals and habits"]
  node_career["Career"]
  node_finance["Finance"]
  node_study["Study areas"]
  node_dashboard["Dashboard<br/>[load-dashboard.ts]"]
  node_search["Global search<br/>[global-search.ts]"]
end

subgraph group_core["Domain and data"]
  node_tasklogic["Task actions<br/>[task-actions.ts]"]
  node_taskdata["Task persistence<br/>[tasks.ts]"]
  node_taskdomain["Task rules<br/>[task.ts]"]
  node_searchlogic["Search grouping<br/>[global-search.ts]"]
end

subgraph group_platform["Identity and storage"]
  node_authorization["Access policy<br/>[authorization.ts]"]
  node_supabaseclient["Supabase clients<br/>[server.ts]"]
  node_database[("Supabase")]
end

node_user(("Person"))
node_google(("Google identity"))

node_user -->|"uses"| node_webapp
node_user -->|"signs in"| node_auth
node_auth -->|"starts OAuth"| node_google
node_auth -->|"exchanges session"| node_supabaseclient
node_auth -->|"checks access"| node_authorization
node_webapp -->|"opens"| node_task
node_webapp -->|"opens"| node_notes
node_webapp -->|"opens"| node_goals
node_webapp -->|"opens"| node_career
node_webapp -->|"opens"| node_finance
node_webapp -->|"opens"| node_study
node_webapp -->|"loads"| node_dashboard
node_webapp -->|"searches"| node_search
node_tasklogic -->|"persists tasks"| node_taskdata
node_taskdata -->|"validates with"| node_taskdomain
node_taskdata -->|"reads/writes"| node_database
node_supabaseclient -->|"connects"| node_database
node_searchlogic -->|"uses task rules"| node_taskdomain

click node_webapp "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/app/layout.tsx"
click node_task "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/tasks"
click node_notes "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/notes"
click node_goals "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/goals"
click node_career "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/career"
click node_finance "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/finance"
click node_study "https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/university"
click node_dashboard "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/dashboard/load-dashboard.ts"
click node_search "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/search/global-search.ts"
click node_auth "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/auth/google/route.ts"
click node_authorization "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/auth/authorization.ts"
click node_tasklogic "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/tasks/task-actions.ts"
click node_taskdata "https://github.com/angelperezcastro/angel-os/blob/main/packages/data/src/tasks.ts"
click node_taskdomain "https://github.com/angelperezcastro/angel-os/blob/main/packages/domain/src/task.ts"
click node_searchlogic "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/search/global-search.ts"
click node_supabaseclient "https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/supabase/server.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_webapp,node_auth toneBlue
class node_task,node_notes,node_goals,node_career,node_finance,node_study,node_dashboard,node_search toneAmber
class node_tasklogic,node_taskdata,node_taskdomain,node_searchlogic toneMint
class node_authorization,node_supabaseclient,node_database toneRose
class node_user,node_google toneIndigo
```

## Components

### Web application

- [Web app](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/app/layout.tsx): `apps/web/app/app/layout.tsx`
- [Auth routes](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/app/auth/google/route.ts): `apps/web/app/auth/google/route.ts`

### Personal workflows

- [Tasks](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/tasks): `apps/web/lib/tasks`
- [Notes](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/notes): `apps/web/lib/notes`
- [Goals and habits](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/goals): `apps/web/lib/goals`
- [Career](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/career): `apps/web/lib/career`
- [Finance](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/finance): `apps/web/lib/finance`
- [Study areas](https://github.com/angelperezcastro/angel-os/tree/main/apps/web/lib/university): `apps/web/lib/university`
- [Dashboard](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/dashboard/load-dashboard.ts): `apps/web/lib/dashboard/load-dashboard.ts`
- [Global search](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/search/global-search.ts): `apps/web/lib/search/global-search.ts`

### Domain and data

- [Task actions](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/tasks/task-actions.ts): `apps/web/lib/tasks/task-actions.ts`
- [Task persistence](https://github.com/angelperezcastro/angel-os/blob/main/packages/data/src/tasks.ts): `packages/data/src/tasks.ts`
- [Task rules](https://github.com/angelperezcastro/angel-os/blob/main/packages/domain/src/task.ts): `packages/domain/src/task.ts`
- [Search grouping](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/search/global-search.ts): `apps/web/lib/search/global-search.ts`

### Identity and storage

- [Access policy](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/auth/authorization.ts): `apps/web/lib/auth/authorization.ts`
- [Supabase clients](https://github.com/angelperezcastro/angel-os/blob/main/apps/web/lib/supabase/server.ts): `apps/web/lib/supabase/server.ts`
- **Supabase**

### Other components

- **Person**
- **Google identity**

## Connections

- Person → Web app: uses
- Person → Auth routes: signs in
- Auth routes → Google identity: starts OAuth
- Auth routes → Supabase clients: exchanges session
- Auth routes → Access policy: checks access
- Web app → Tasks: opens
- Web app → Notes: opens
- Web app → Goals and habits: opens
- Web app → Career: opens
- Web app → Finance: opens
- Web app → Study areas: opens
- Web app → Dashboard: loads
- Web app → Global search: searches
- Task actions → Task persistence: persists tasks
- Task persistence → Task rules: validates with
- Task persistence → Supabase: reads/writes
- Supabase clients → Supabase: connects
- Search grouping → Task rules: uses task rules
