# 007jedgar/ciciro architecture

> Architecture diagram of the GitHub repository 007jedgar/ciciro, 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/007jedgar/ciciro
- Repository: https://github.com/007jedgar/ciciro

## Overview

Ciciro is a cross-platform AI manuscript editor. Authors create or import a book, organize chapters, write in the editor, and consult Ciciro; the assistant uses story-bible and manuscript context, can delegate prose drafting, and returns suggestions for author review. The product also supports search and replacement, manuscript import/export, reader sharing, and mobile offline synchronization. The graph emphasizes the documented web workspace and sampled API flows; several capabilities are represented by their exact route or component paths without asserting unsampled internal call chains.

Main entry points: [`src/lib/db.ts`](https://github.com/007jedgar/ciciro/blob/main/src/lib/db.ts) (Application database), [`src/components/Workspace.tsx`](https://github.com/007jedgar/ciciro/blob/main/src/components/Workspace.tsx) (Workspace), [`src/app/api/export/[id]/route.ts`](https://github.com/007jedgar/ciciro/blob/main/src/app/api/export/%5Bid%5D/route.ts) (Export endpoint), [`src/app/api/bible/route.ts`](https://github.com/007jedgar/ciciro/blob/main/src/app/api/bible/route.ts) (Bible API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Author experience"]
  node_workspace["Workspace<br/>[Workspace.tsx]"]
  node_editor["Manuscript editor<br/>[Editor.tsx]"]
  node_chat["Ciciro chat<br/>[ChatPanel.tsx]"]
  node_storybibleui["Story bible<br/>[StoryBible.tsx]"]
end

subgraph group_manuscript["Manuscript tools"]
  node_chapterapi["Chapter management<br/>[route.ts]"]
  node_searchui["Search and replace<br/>[SearchPanel.tsx]"]
  node_searchclient["Search client<br/>[search-client.ts]"]
  node_searchapi["Search and replace API<br/>[route.ts]"]
  node_bibleapi["Bible API<br/>[route.ts]"]
  node_biblestore["Bible files<br/>[bible.ts]"]
end

subgraph group_assistant["AI editor"]
  node_chatapi["Chat endpoint<br/>[route.ts]"]
  node_editorun["Editor run engine<br/>[editor-run.ts]"]
  node_toolrunner["Assistant tools<br/>[tools.ts]"]
  node_autowriteapi["Auto-draft endpoint<br/>[route.ts]"]
  node_autowrite["Auto-draft loop<br/>[autowrite.ts]"]
end

subgraph group_platform["Persistence and sync"]
  node_syncapi["Sync API<br/>[route.ts]"]
  node_mobile["Mobile client<br/>[sync-engine.ts]"]
  node_database[("Application database<br/>[db.ts]")]
end

subgraph group_exchange["Document exchange"]
  node_importapi["Import endpoint<br/>[route.ts]"]
  node_importer["Manuscript import"]
  node_exportapi["Export endpoint<br/>[route.ts]"]
  node_exportformats["Export formats<br/>[epub.ts]"]
end

node_author(("Author"))
node_anthropic["Anthropic models"]

node_author -->|"uses"| node_workspace
node_workspace -->|"presents"| node_editor
node_workspace -->|"presents"| node_chat
node_workspace -->|"presents"| node_storybibleui
node_editor -->|"manages chapters"| node_chapterapi
node_chat -->|"sends turns"| node_chatapi
node_storybibleui -->|"reads and writes"| node_bibleapi
node_searchui -->|"requests search"| node_searchclient
node_searchclient -->|"fetches results"| node_searchapi
node_chatapi -->|"prepares and executes"| node_editorun
node_editorun -->|"runs tools"| node_toolrunner
node_toolrunner -->|"calls models"| node_anthropic
node_autowriteapi -->|"runs loop"| node_autowrite
node_autowrite -->|"requests drafting"| node_anthropic
node_chatapi -->|"persists run state"| node_database
node_bibleapi -->|"reads and writes"| node_biblestore
node_bibleapi -->|"accesses project data"| node_database
node_importapi -->|"imports file"| node_importer
node_importer -->|"creates manuscript"| node_database
node_exportapi -->|"loads manuscript"| node_database
node_exportapi -->|"renders EPUB"| node_exportformats
node_exportapi -->|"returns download"| node_author
node_mobile -->|"pushes and pulls"| node_syncapi
node_syncapi -->|"reads and writes sync data"| node_database

click node_workspace "https://github.com/007jedgar/ciciro/blob/main/src/components/Workspace.tsx"
click node_editor "https://github.com/007jedgar/ciciro/blob/main/src/components/Editor.tsx"
click node_chat "https://github.com/007jedgar/ciciro/blob/main/src/components/ChatPanel.tsx"
click node_storybibleui "https://github.com/007jedgar/ciciro/blob/main/src/components/StoryBible.tsx"
click node_chapterapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/chapters/route.ts"
click node_searchui "https://github.com/007jedgar/ciciro/blob/main/src/components/SearchPanel.tsx"
click node_searchclient "https://github.com/007jedgar/ciciro/blob/main/src/lib/search-client.ts"
click node_searchapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/projects/%5Bid%5D/search/route.ts"
click node_bibleapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/bible/route.ts"
click node_biblestore "https://github.com/007jedgar/ciciro/blob/main/src/lib/bible.ts"
click node_chatapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/chat/route.ts"
click node_editorun "https://github.com/007jedgar/ciciro/blob/main/src/lib/editor-run.ts"
click node_toolrunner "https://github.com/007jedgar/ciciro/blob/main/src/lib/tools.ts"
click node_autowriteapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/autowrite/route.ts"
click node_autowrite "https://github.com/007jedgar/ciciro/blob/main/src/lib/autowrite.ts"
click node_importapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/import/route.ts"
click node_importer "https://github.com/007jedgar/ciciro/blob/main/src/lib/import-manuscript.ts"
click node_exportapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/export/%5Bid%5D/route.ts"
click node_exportformats "https://github.com/007jedgar/ciciro/blob/main/src/lib/export/epub.ts"
click node_syncapi "https://github.com/007jedgar/ciciro/blob/main/src/app/api/sync/route.ts"
click node_mobile "https://github.com/007jedgar/ciciro/blob/main/apps/mobile/lib/sync-engine.ts"
click node_database "https://github.com/007jedgar/ciciro/blob/main/src/lib/db.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_workspace,node_editor,node_chat,node_storybibleui toneBlue
class node_chapterapi,node_searchui,node_searchclient,node_searchapi,node_bibleapi,node_biblestore toneAmber
class node_chatapi,node_editorun,node_toolrunner,node_autowriteapi,node_autowrite toneMint
class node_syncapi,node_mobile,node_database toneRose
class node_importapi,node_importer,node_exportapi,node_exportformats,node_author,node_anthropic toneIndigo
```

## Components

### Author experience

- [Workspace](https://github.com/007jedgar/ciciro/blob/main/src/components/Workspace.tsx): `src/components/Workspace.tsx`
- [Manuscript editor](https://github.com/007jedgar/ciciro/blob/main/src/components/Editor.tsx): `src/components/Editor.tsx`
- [Ciciro chat](https://github.com/007jedgar/ciciro/blob/main/src/components/ChatPanel.tsx): `src/components/ChatPanel.tsx`
- [Story bible](https://github.com/007jedgar/ciciro/blob/main/src/components/StoryBible.tsx): `src/components/StoryBible.tsx`

### Manuscript tools

- [Chapter management](https://github.com/007jedgar/ciciro/blob/main/src/app/api/chapters/route.ts): `src/app/api/chapters/route.ts`
- [Search and replace](https://github.com/007jedgar/ciciro/blob/main/src/components/SearchPanel.tsx): `src/components/SearchPanel.tsx`
- [Search client](https://github.com/007jedgar/ciciro/blob/main/src/lib/search-client.ts): `src/lib/search-client.ts`
- [Search and replace API](https://github.com/007jedgar/ciciro/blob/main/src/app/api/projects/%5Bid%5D/search/route.ts): `src/app/api/projects/[id]/search/route.ts`
- [Bible API](https://github.com/007jedgar/ciciro/blob/main/src/app/api/bible/route.ts): `src/app/api/bible/route.ts`
- [Bible files](https://github.com/007jedgar/ciciro/blob/main/src/lib/bible.ts): `src/lib/bible.ts`

### AI editor

- [Chat endpoint](https://github.com/007jedgar/ciciro/blob/main/src/app/api/chat/route.ts): `src/app/api/chat/route.ts`
- [Editor run engine](https://github.com/007jedgar/ciciro/blob/main/src/lib/editor-run.ts): `src/lib/editor-run.ts`
- [Assistant tools](https://github.com/007jedgar/ciciro/blob/main/src/lib/tools.ts): `src/lib/tools.ts`
- [Auto-draft endpoint](https://github.com/007jedgar/ciciro/blob/main/src/app/api/autowrite/route.ts): `src/app/api/autowrite/route.ts`
- [Auto-draft loop](https://github.com/007jedgar/ciciro/blob/main/src/lib/autowrite.ts): `src/lib/autowrite.ts`

### Persistence and sync

- [Sync API](https://github.com/007jedgar/ciciro/blob/main/src/app/api/sync/route.ts): `src/app/api/sync/route.ts`
- [Mobile client](https://github.com/007jedgar/ciciro/blob/main/apps/mobile/lib/sync-engine.ts): `apps/mobile/lib/sync-engine.ts`
- [Application database](https://github.com/007jedgar/ciciro/blob/main/src/lib/db.ts): `src/lib/db.ts`

### Document exchange

- [Import endpoint](https://github.com/007jedgar/ciciro/blob/main/src/app/api/import/route.ts): `src/app/api/import/route.ts`
- [Manuscript import](https://github.com/007jedgar/ciciro/blob/main/src/lib/import-manuscript.ts): `src/lib/import-manuscript.ts`
- [Export endpoint](https://github.com/007jedgar/ciciro/blob/main/src/app/api/export/%5Bid%5D/route.ts): `src/app/api/export/[id]/route.ts`
- [Export formats](https://github.com/007jedgar/ciciro/blob/main/src/lib/export/epub.ts): `src/lib/export/epub.ts`

### Other components

- **Author**
- **Anthropic models**

## Connections

- Author → Workspace: uses
- Workspace → Manuscript editor: presents
- Workspace → Ciciro chat: presents
- Workspace → Story bible: presents
- Manuscript editor → Chapter management: manages chapters
- Ciciro chat → Chat endpoint: sends turns
- Story bible → Bible API: reads and writes
- Search and replace → Search client: requests search
- Search client → Search and replace API: fetches results
- Chat endpoint → Editor run engine: prepares and executes
- Editor run engine → Assistant tools: runs tools
- Assistant tools → Anthropic models: calls models
- Auto-draft endpoint → Auto-draft loop: runs loop
- Auto-draft loop → Anthropic models: requests drafting
- Chat endpoint → Application database: persists run state
- Bible API → Bible files: reads and writes
- Bible API → Application database: accesses project data
- Import endpoint → Manuscript import: imports file
- Manuscript import → Application database: creates manuscript
- Export endpoint → Application database: loads manuscript
- Export endpoint → Export formats: renders EPUB
- Export endpoint → Author: returns download
- Mobile client → Sync API: pushes and pulls
- Sync API → Application database: reads and writes sync data
