Skip to content

oxroot-crypto/QuillForge

Repository files navigation

QuillForge

QuillForge

AI-Powered Novel Writing Assistant

English | 简体中文

License Vue 3 Tauri 2 Rust TypeScript


QuillForge is a desktop application for web novel authors, combining a rich text editor with AI-assisted writing capabilities. It supports multiple LLM providers (OpenAI, Anthropic, Ollama, and OpenAI-compatible APIs), stores all data locally with encrypted credentials, and features an inline ghost-text completion system inspired by modern code editors.

✨ Features

📚 Book & Chapter Management

Hierarchical organization: books → chapters, with per-book world settings, story outlines, and character profiles that serve as AI context.

🔍 AI Review & Consistency Check

Select text and receive grammar, pacing, character consistency, and plot logic feedback with one click.

💡 Idea Generation

Describe your current plot point and get 3–5 creative directions, informed by your book's established world and characters.

✍️ Inline Ghost-Text Continuation

AI-generated prose appears as ghost text directly in the editor. Tab to accept, Esc to dismiss — just like IDE code completion.

⚡ AI Chapter Generation

Generate full chapters from scratch with length control. Supports regeneration and re-apply without creating duplicate chapters.

🔌 Multi-Provider Support

OpenAI · Anthropic · Ollama · OpenAI-compatible (DeepSeek, Qwen, Doubao, etc.). Save as named presets and switch from the toolbar.

🌐 Internationalization

Chinese (简体中文) and English. Switch on the fly from the toolbar.

🎨 Dark & Light Themes

One-click toggle. Follows system preference by default.

📊 Writing Analytics

Sentence length distribution, dialogue ratio, readability score, word frequency, and per-book statistics.

📝 Modern Editor

TipTap with bubble menu formatting, focus mode, reading time estimate, spell check, and version snapshots.

🛡️ Security

  • API keys are encrypted with AES-256-GCM and stored in the Tauri secure store
  • Keys never leave the Rust backend — the frontend only knows whether a key is configured
  • All LLM HTTP requests are proxied through the Rust layer

🏗️ Tech Stack

Layer Stack
Desktop Shell Tauri 2.x
Frontend Vue 3 + TypeScript + Vite
State Pinia
Editor TipTap (ProseMirror)
i18n vue-i18n
Backend Rust — reqwest, tokio, aes-gcm

🚀 Quick Start

Prerequisites

# Install dependencies
npm install

# Start development
npm run tauri dev

# Production build
npm run tauri build

📁 Project Structure

├── src/                          # Vue 3 frontend
│   ├── components/
│   │   ├── ai/                   # AiPanel, ReviewResult, IdeaResult, ContinueResult, ConsistencyResult, GenChapterResult, TemplateSelector
│   │   ├── analytics/            # AnalyticsPanel (writing statistics dashboard)
│   │   ├── common/               # AppLayout, TitleBar, LoadingDots, ModalDialog, SearchDialog
│   │   ├── editor/               # NovelEditor, BubbleMenu, BookSidebar, ChapterHistory, EditorToolbar, BookSettingsPanel, CharacterPanel
│   │   └── settings/             # SettingsDialog, ProviderCard, ApiKeyInput
│   ├── stores/                   # Pinia (book, editor, settings, template, theme, i18n)
│   ├── commands/                 # Tauri invoke wrappers (by domain)
│   │   ├── ai.ts                 # AI messages & connection check
│   │   ├── history.ts            # Version snapshots (in-memory, persisted with book data)
│   │   ├── keys.ts               # API key management
│   │   ├── search.ts             # Full-text search index & query
│   │   ├── storage.ts            # Persistence, providers, export
│   │   └── index.ts              # Re-exports all commands
│   ├── extensions/               # TipTap extensions (GhostText, SpellCheck)
│   ├── i18n/locales/             # zh-CN, en-US
│   └── types/                    # TypeScript definitions
│
├── src-tauri/                    # Rust backend
│   └── src/
│       ├── commands/             # Tauri commands (by domain)
│       │   ├── mod.rs            # Module declarations & re-exports
│       │   ├── ai.rs             # AI message & connection check
│       │   ├── keys.rs           # API key CRUD
│       │   ├── books.rs          # Book persistence & export
│       │   ├── history.rs        # Version snapshots (filesystem, fallback)
│       │   ├── search.rs         # Full-text search (Tantivy)
│       │   ├── spell.rs          # Spell check (Hunspell)
│       │   └── helpers.rs        # Internal helpers
│       ├── crypto.rs             # AES-256-GCM encrypt/decrypt
│       └── llm/                  # Provider implementations (OpenAI, Anthropic, Ollama, compat)
│
├── index.html
├── vite.config.ts
├── tsconfig.json
└── package.json

📄 License

MIT © 2026 oxroot & Claude


Built with ❤️ by oxroot & Claude

About

AI powered novel write assistant/AI网文写作助手

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors