Weekly Architecture

docs(architecture): sync almanac/weekly/gopher/drawmaticai diagrams to current code

d7f01dde · 2026-08-05 22:14:18 -0700

← Architecture History
graph TD
    subgraph User["User Layer"]
        Browser["Browser"]
    end

    subgraph WeeklyApp["Weekly App"]
        FastAPI["FastAPI Server
auth / synthesis / intentions / meeting-prep / models / admin / health"] Auth["Google OAuth + Session
opaque token, DB-backed"] Invite["Invite Gate
JWT invite tokens (passed via URL, not persisted)"] Gopher["Gopher Client
signed S2S JWT, 5 endpoints: context,
outstanding, meeting-prep, meeting-notes, identity"] Synthesis["Synthesis Engine
tense-aware prompt builder + StreamingResponse
grounds in Google Doc meeting notes + auto-generates intentions
persists summaries to SQLite"] Intent["Intentions Store
centralized HTTP + atomic upsert (race-safe)
one row per user per Mon-Fri week"] MeetingPrep["Meeting Prep
AI-drafted, user-editable notes
generate / list / search / update"] PrepStore["Prep Notes Store
Fernet-encrypted content + keyword shadow
keyed on attendee fingerprint (durable across re-syncs)"] Models["Model Selector
/api/models list available Ollama models
/api/models/select user's chosen model"] AdminUsers["Admin Users
/admin page, /api/admin/* invites + CRUD
invite tokens passed via URL (not persisted)"] Health["Health Check
/health returns ok
startup: creates tables, checks Ollama model"] Logout["Logout
/auth/logout deletes session DB row + clears cookie"] end subgraph Intelligence["Local Intelligence"] Ollama["Ollama (ollama AsyncClient)
localhost:11434 by default
granite4.1:30b in prod; user-selectable per
user via /api/models + /api/models/select"] end subgraph Data["Data Layer"] SQLite[("SQLite default; PostgreSQL via DATABASE_URL override
5 tables: users, sessions, intentions,
meeting_prep_notes, weekly_summaries
Fernet-encrypted content + keyword shadow
per-thread sessions + WAL mode

weekly_summaries table stores generation history
with auto-save, pagination, and user-facing
keyword-shadow LIKE search via /api/synthesis/history/search")] end subgraph CrossApp["Cross-App Data (fanned out by Gopher, not Weekly)"] Inbox0["inbox0
email threads, sweep summaries"] Summarizer["Summarizer
meeting notes, action items"] Focus["Focus
completed sessions, tasks"] CodeReviewer["Code Reviewer
recent review activity"] Almanac["Almanac
weekly insights
calendar events (type=calendar)"] Scribe["Scribe
transcription summaries and action items"] end subgraph Infra["Infrastructure"] CF["Cloudflare Tunnel"] Docker["Docker Compose"] OwnOS["MyOwnLifeOS JWT
suite-shared signing key"] SW["Service Worker
same-origin only, bypasses CDN/cross-origin"] end Browser -->|HTTPS| CF CF -->|HTTP| Docker Docker --> FastAPI FastAPI --> Auth Auth --> Invite Auth --> SQLite Browser -.->|installs, caches HTML shell| SW Browser -->|trigger generate| FastAPI FastAPI -->|context / outstanding / meeting-notes / identity| Gopher Gopher -->|email context| Inbox0 Gopher -->|meeting context| Summarizer Gopher -->|task context| Focus Gopher -->|review context| CodeReviewer Gopher -->|calendar context| Almanac Gopher -->|meeting-notes context| Almanac Gopher -->|transcription context| Scribe Gopher -->|resolved bundle| Synthesis Synthesis -->|past/today/upcoming buckets + meeting-notes grounding
+ non-dated action items| Ollama Ollama -->|streamed prose| Browser Browser -->|three intentions| Intent Synthesis -->|auto-generated intentions| Intent Intent --> SQLite Browser -->|generate / edit prep note| MeetingPrep MeetingPrep -->|7-day meeting window + attendee history| Gopher MeetingPrep -->|draft note| Synthesis MeetingPrep --> PrepStore PrepStore --> SQLite FastAPI --> Models FastAPI --> AdminUsers FastAPI --> Health FastAPI --> Logout Auth -->|server-to-server| OwnOS classDef user fill:#1a1a2e,stroke:#e85555,stroke-width:2px,color:#fff classDef app fill:#16213e,stroke:#ff9f1c,stroke-width:2px,color:#e0e0e0 classDef data fill:#16213e,stroke:#64b5f6,stroke-width:2px,color:#e0e0e0 classDef llm fill:#16213e,stroke:#3ecf6e,stroke-width:2px,color:#e0e0e0 classDef infra fill:#0f0f0f,stroke:#8888a8,stroke-width:1px,color:#8888a8 classDef integration fill:#1a1a2e,stroke:#c880ff,stroke-width:2px,color:#e0e0e0 class Browser user class FastAPI,Auth,Invite,Gopher,Synthesis,Intent,MeetingPrep,PrepStore,Models,AdminUsers,Health,Logout app class SQLite data class Ollama llm class CF,Docker,OwnOS,SW infra class Inbox0,Summarizer,Focus,CodeReviewer,Almanac,Scribe integration

Scroll to zoom · drag to pan · double-click to fit