# viralwechaar-creator/manifest-app architecture

> Architecture diagram of the GitHub repository viralwechaar-creator/manifest-app, 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/viralwechaar-creator/manifest-app
- Repository: https://github.com/viralwechaar-creator/manifest-app

## Overview

Manifest is a goal-setting and personal-coaching app. Users sign in, describe a goal or check-in, and receive coaching that can update their plan; they then track steps, gratitude, beliefs, and progress. The browser data hook supplies those views and supports offline reads and queued writes. The sampled coach route shows how user context, book guidance, safety checks, and Gemini responses feed stored coaching outcomes. Export is present as an API route, but its UI connection was not shown in the excerpts.

Main entry points: [`app/api/coach/route.ts`](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/coach/route.ts) (Coach request handler), [`lib/useManifestData.ts`](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/useManifestData.ts) (Manifest data hook), [`app/page.tsx`](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/page.tsx) (App shell), [`components/Pages.tsx`](https://github.com/viralwechaar-creator/manifest-app/blob/master/components/Pages.tsx) (Coaching and life pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_home["App shell<br/>[page.tsx]"]
  node_pages["Coaching and life pages<br/>[Pages.tsx]"]
  node_login["Sign-in<br/>[page.tsx]"]
end

subgraph group_data["User data"]
  node_datahook["Manifest data hook<br/>[useManifestData.ts]"]
  node_offline["Offline cache<br/>[offlineCache.ts]"]
  node_types["Domain types<br/>[types.ts]"]
  node_importroute["Data import<br/>[route.ts]"]
  node_exportroute["Data export<br/>[route.ts]"]
end

subgraph group_coaching["Coaching engine"]
  node_coachroute["Coach request handler<br/>[route.ts]"]
  node_context["Context builder<br/>[contextBundle.ts]"]
  node_lifearea["Life-area classifier<br/>[lifeArea.ts]"]
  node_book["Book knowledge<br/>[bookKnowledge.ts]"]
  node_prompt["Coach instructions<br/>[coachPrompt.ts]"]
  node_safety["Safety checks<br/>[safety.ts]"]
  node_gemini["Gemini adapter<br/>[gemini.ts]"]
end

subgraph group_services["Platform services"]
  node_database[("Supabase data store")]
  node_browserclient["Browser client<br/>[supabaseClient.ts]"]
  node_serverclient["Server client<br/>[supabaseServer.ts]"]
  node_geminiservice{{"Gemini API"}}
end

node_user(("User"))

node_user -->|"uses"| node_home
node_home -->|"renders"| node_pages
node_home -->|"loads"| node_datahook
node_user -->|"signs in"| node_login
node_home -->|"checks session"| node_browserclient
node_pages -->|"invokes data actions"| node_datahook
node_pages -->|"posts backup"| node_importroute
node_datahook -->|"queries and writes"| node_browserclient
node_datahook -->|"caches and queues"| node_offline
node_datahook -->|"reads and writes"| node_database
node_datahook -->|"posts messages"| node_coachroute
node_coachroute -->|"authenticates user"| node_serverclient
node_coachroute -->|"reads and writes coaching data"| node_database
node_coachroute -->|"builds context"| node_context
node_context -->|"classifies goal"| node_lifearea
node_coachroute -->|"renders playbook"| node_book
node_coachroute -->|"builds instructions"| node_prompt
node_coachroute -->|"checks message"| node_safety
node_coachroute -->|"requests response"| node_gemini
node_gemini -->|"calls"| node_geminiservice
node_login -->|"uses"| node_browserclient
node_importroute -->|"authenticates user"| node_serverclient
node_importroute -->|"upserts records"| node_database
node_exportroute -->|"authenticates user"| node_serverclient
node_exportroute -->|"reads records"| node_database

click node_home "https://github.com/viralwechaar-creator/manifest-app/blob/master/app/page.tsx"
click node_pages "https://github.com/viralwechaar-creator/manifest-app/blob/master/components/Pages.tsx"
click node_login "https://github.com/viralwechaar-creator/manifest-app/blob/master/app/login/page.tsx"
click node_datahook "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/useManifestData.ts"
click node_offline "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/offlineCache.ts"
click node_types "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/types.ts"
click node_browserclient "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/supabaseClient.ts"
click node_serverclient "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/supabaseServer.ts"
click node_coachroute "https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/coach/route.ts"
click node_context "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/contextBundle.ts"
click node_lifearea "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/lifeArea.ts"
click node_book "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/bookKnowledge.ts"
click node_prompt "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/coachPrompt.ts"
click node_safety "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/safety.ts"
click node_gemini "https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/gemini.ts"
click node_importroute "https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/import/route.ts"
click node_exportroute "https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/export/route.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_home,node_pages,node_login,node_user toneBlue
class node_datahook,node_offline,node_types,node_importroute,node_exportroute toneAmber
class node_coachroute,node_context,node_lifearea,node_book,node_prompt,node_safety,node_gemini toneMint
class node_database,node_browserclient,node_serverclient,node_geminiservice toneRose
```

## Components

### User experience

- [App shell](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/page.tsx): `app/page.tsx`
- [Coaching and life pages](https://github.com/viralwechaar-creator/manifest-app/blob/master/components/Pages.tsx): `components/Pages.tsx`
- [Sign-in](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/login/page.tsx): `app/login/page.tsx`

### User data

- [Manifest data hook](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/useManifestData.ts): `lib/useManifestData.ts`
- [Offline cache](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/offlineCache.ts): `lib/offlineCache.ts`
- [Domain types](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/types.ts): `lib/types.ts`
- [Data import](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/import/route.ts): `app/api/import/route.ts`
- [Data export](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/export/route.ts): `app/api/export/route.ts`

### Coaching engine

- [Coach request handler](https://github.com/viralwechaar-creator/manifest-app/blob/master/app/api/coach/route.ts): `app/api/coach/route.ts`
- [Context builder](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/contextBundle.ts): `lib/contextBundle.ts`
- [Life-area classifier](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/lifeArea.ts): `lib/lifeArea.ts`
- [Book knowledge](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/bookKnowledge.ts): `lib/bookKnowledge.ts`
- [Coach instructions](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/coachPrompt.ts): `lib/coachPrompt.ts`
- [Safety checks](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/safety.ts): `lib/safety.ts`
- [Gemini adapter](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/gemini.ts): `lib/gemini.ts`

### Platform services

- **Supabase data store**
- [Browser client](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/supabaseClient.ts): `lib/supabaseClient.ts`
- [Server client](https://github.com/viralwechaar-creator/manifest-app/blob/master/lib/supabaseServer.ts): `lib/supabaseServer.ts`
- **Gemini API**

### Other components

- **User**

## Connections

- User → App shell: uses (evidence: `app/page.tsx`)
- App shell → Coaching and life pages: renders (evidence: `app/page.tsx`)
- App shell → Manifest data hook: loads (evidence: `app/page.tsx`)
- User → Sign-in: signs in (evidence: `app/login/page.tsx`)
- App shell → Browser client: checks session (evidence: `app/page.tsx`)
- Coaching and life pages → Manifest data hook: invokes data actions (evidence: `components/Pages.tsx`)
- Coaching and life pages → Data import: posts backup (evidence: `components/Pages.tsx`)
- Manifest data hook → Browser client: queries and writes (evidence: `lib/useManifestData.ts`)
- Manifest data hook → Offline cache: caches and queues (evidence: `lib/useManifestData.ts`)
- Manifest data hook → Supabase data store: reads and writes (evidence: `lib/useManifestData.ts`)
- Manifest data hook → Coach request handler: posts messages (evidence: `lib/useManifestData.ts`)
- Coach request handler → Server client: authenticates user (evidence: `app/api/coach/route.ts`)
- Coach request handler → Supabase data store: reads and writes coaching data (evidence: `app/api/coach/route.ts`)
- Coach request handler → Context builder: builds context (evidence: `app/api/coach/route.ts`)
- Context builder → Life-area classifier: classifies goal (evidence: `lib/contextBundle.ts`)
- Coach request handler → Book knowledge: renders playbook (evidence: `app/api/coach/route.ts`)
- Coach request handler → Coach instructions: builds instructions (evidence: `app/api/coach/route.ts`)
- Coach request handler → Safety checks: checks message (evidence: `app/api/coach/route.ts`)
- Coach request handler → Gemini adapter: requests response (evidence: `app/api/coach/route.ts`)
- Gemini adapter → Gemini API: calls (evidence: `lib/gemini.ts`)
- Sign-in → Browser client: uses (evidence: `app/login/page.tsx`)
- Data import → Server client: authenticates user (evidence: `app/api/import/route.ts`)
- Data import → Supabase data store: upserts records (evidence: `app/api/import/route.ts`)
- Data export → Server client: authenticates user (evidence: `app/api/export/route.ts`)
- Data export → Supabase data store: reads records (evidence: `app/api/export/route.ts`)
