AI-powered story development and audiobook creation platform with 5-agent CrewAI orchestration. A guided 6-step wizard walks authors through concept to final export (ePub and MP3 audiobooks).
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart TB
subgraph Input["📥 USER INPUT"]
IDEA["💭 Initial Story Idea"]
GENRE["🎭 Genre & Themes"]
AUDIENCE["👥 Target Audience"]
end
subgraph Frontend["🖥️ VUE 3 FRONTEND"]
FORM["📋 StepConcept Form"]
BTN["🤖 Get AI Help"]
end
subgraph API["⚡ FASTAPI"]
POST["POST /api/ai/brainstorm"]
INIT["🔧 Init WriteWiseAgents"]
end
subgraph Agent["🤖 CREWAI"]
CONSULT["💡 Story Consultant Agent"]
TASK["📋 Brainstorming Task"]
end
subgraph Output["📤 RESULTS"]
PREMISE["📝 Refined Premise"]
HOOK["🎣 Story Hook"]
CONFLICT["⚔️ Core Conflict"]
SUGGEST["💡 AI Suggestions"]
end
subgraph DB["💾 DATABASE"]
SAVE[("📄 StoryConcept")]
end
IDEA --> FORM
GENRE --> FORM
AUDIENCE --> FORM
FORM --> BTN
BTN --> POST
POST --> INIT
INIT --> TASK
TASK --> CONSULT
CONSULT --> PREMISE
CONSULT --> HOOK
CONSULT --> CONFLICT
CONSULT --> SUGGEST
SUGGEST --> SAVE
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart LR
subgraph Input["📥 CHARACTER INPUT"]
NAME["👤 Name & Role"]
ATTRS["📋 Basic Attributes"]
end
subgraph Context["📚 STORY CONTEXT"]
CONCEPT["💡 Story Concept"]
GENRE["🎭 Genre/Themes"]
end
subgraph API["⚡ FASTAPI"]
POST["POST /ai/develop-character"]
end
subgraph Agent["🤖 CHARACTER DEVELOPER"]
DEV["👤 Character Developer Agent"]
end
subgraph Output["📤 CHARACTER PROFILE"]
TRAITS["🎭 Personality Traits"]
BACK["📜 Background Story"]
ARC["📈 Character Arc"]
REL["🔗 Relationships"]
MOTIV["💪 Motivations"]
end
subgraph DB["💾 DATABASE"]
SAVE[("👤 Character Model")]
end
NAME --> POST
ATTRS --> POST
CONCEPT --> POST
GENRE --> POST
POST --> DEV
DEV --> TRAITS
DEV --> BACK
DEV --> ARC
DEV --> REL
DEV --> MOTIV
MOTIV --> SAVE
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart TB
subgraph Context["📚 FULL STORY CONTEXT"]
CONCEPT["💡 Story Concept"]
CHARS["👥 All Characters"]
end
subgraph Agent["🤖 PLOT ARCHITECT"]
ARCH["📐 Plot Architect Agent"]
PREMIUM["⭐ GPT-4o Premium"]
end
subgraph ThreeAct["📖 THREE-ACT STRUCTURE"]
ACT1["🎬 Act One (25%)
Inciting Incident"]
ACT2["⚔️ Act Two (50%)
Midpoint & Challenges"]
ACT3["🏆 Act Three (25%)
Climax & Resolution"]
end
subgraph Output["📤 PLOT DETAILS"]
EVENTS["📋 Key Events"]
SUBPLOTS["🔀 Subplots"]
PACING["⏱️ Pacing Notes"]
end
subgraph DB["💾 DATABASE"]
SAVE[("📐 PlotStructure")]
end
CONCEPT --> ARCH
CHARS --> ARCH
ARCH --> PREMIUM
PREMIUM --> ACT1
PREMIUM --> ACT2
PREMIUM --> ACT3
ACT1 --> EVENTS
ACT2 --> EVENTS
ACT3 --> EVENTS
EVENTS --> SUBPLOTS
SUBPLOTS --> PACING
PACING --> SAVE
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart LR
subgraph Input["📥 PLOT STRUCTURE"]
PLOT["📐 Three-Act Plot"]
TARGET["🎯 Target: 45min
6,750 words"]
end
subgraph Agent["🤖 PLOT ARCHITECT"]
ARCH["📐 Plot Architect"]
CALC["🧮 Word Distribution
150 words/min"]
end
subgraph Chapters["📚 CHAPTER BREAKDOWN"]
CH1["📖 Chapter 1"]
CH2["📖 Chapter 2"]
CH3["📖 Chapter 3"]
CHN["📖 Chapter N..."]
end
subgraph Details["📋 PER CHAPTER"]
SUM["📝 Summary"]
SCENES["🎬 Scene List"]
POV["👁️ POV Character"]
end
subgraph DB["💾 DATABASE"]
SAVE[("📚 Chapter Records")]
end
PLOT --> ARCH
TARGET --> CALC
ARCH --> CALC
CALC --> CH1
CALC --> CH2
CALC --> CH3
CALC --> CHN
CH1 --> SUM
SUM --> SCENES
SCENES --> POV
POV --> SAVE
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart TB
subgraph PathA["🤖 AI GENERATION"]
OUTLINE_A["📋 Chapter Outline"]
GEN["POST /ai/generate-chapter"]
WRITE_A["✍️ Writing Assistant"]
PROSE_A["📝 Full Prose
2000+ words"]
end
subgraph PathB["✨ USER ENHANCEMENT"]
USER_TEXT["📝 User Written Text"]
SELECT["✂️ Select Text"]
TYPE["📋 Enhancement Type"]
ENHANCE["POST /ai/enhance-writing"]
WRITE_B["✍️ Writing Assistant"]
end
subgraph Types["🎨 ENHANCEMENT TYPES"]
POLISH["✨ Polish: Clarity & Flow"]
EXPAND["📈 Expand: Add Detail"]
DIALOG["💬 Dialogue: Authenticity"]
DESC["🎨 Description: Sensory"]
end
subgraph Output["📤 OUTPUT"]
EDITOR["📝 Rich Text Editor"]
SAVE[("💾 Chapter Content")]
end
OUTLINE_A --> GEN
GEN --> WRITE_A
WRITE_A --> PROSE_A
PROSE_A --> EDITOR
USER_TEXT --> SELECT
SELECT --> TYPE
TYPE --> ENHANCE
POLISH --> WRITE_B
EXPAND --> WRITE_B
DIALOG --> WRITE_B
DESC --> WRITE_B
ENHANCE --> WRITE_B
WRITE_B --> EDITOR
EDITOR --> SAVE
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117', 'background': '#0D1117', 'mainBkg': '#161B22', 'nodeBorder': '#4A5E32', 'clusterBkg': '#161B22', 'clusterBorder': '#4A5E32', 'titleColor': '#E6C98F', 'edgeLabelBackground': '#161B22'}}}%%
flowchart TB
subgraph Input["📥 EXPORT REQUEST"]
CHAPTERS["📚 All Chapters"]
FORMAT{"📦 Format?"}
end
subgraph EPub["📖 EPUB PATH"]
EPUB_TASK["🔧 generate_epub_task"]
EBOOKLIB["📚 ebooklib Service"]
EPUB_META["📋 Metadata + Chapters"]
EPUB_FILE["📖 story.epub"]
end
subgraph Audio["🎧 AUDIOBOOK PATH"]
TTS_SELECT["🎤 Select Provider"]
TTS_PROVIDERS["OpenAI | ElevenLabs
Google | AWS Polly"]
TTS_PROCESS["🔊 Per-Chapter TTS"]
MERGE["🔗 Merge Audio"]
MP3["🎧 audiobook.mp3"]
end
subgraph Status["📡 PROGRESS"]
POLL["🔄 Poll /export/status"]
PROGRESS["📊 Progress Updates"]
end
subgraph Output["📤 DOWNLOAD"]
COMPLETE["✅ Export Complete"]
DOWNLOAD["⬇️ Download File"]
end
CHAPTERS --> FORMAT
FORMAT -->|"ePub"| EPUB_TASK
EPUB_TASK --> EBOOKLIB
EBOOKLIB --> EPUB_META
EPUB_META --> EPUB_FILE
FORMAT -->|"Audio"| TTS_SELECT
TTS_SELECT --> TTS_PROVIDERS
TTS_PROVIDERS --> TTS_PROCESS
TTS_PROCESS --> MERGE
MERGE --> MP3
EPUB_FILE --> POLL
MP3 --> POLL
POLL --> PROGRESS
PROGRESS --> COMPLETE
COMPLETE --> DOWNLOAD