A local-first AI-powered book creation and reading app. Create, manage, and read LLM-generated books with full data ownership and privacy.
- π AI-Powered Content: Generate book outlines, titles, and chapters using your favorite LLM (ChatGPT, Claude, etc.)
- π¨ Customizable Writing: Set your preferred writing style, tone, vocabulary level, and favorite author for AI-generated content
- π Multi-Language Support: Full internationalization with 12 languages (English, Spanish, Chinese, French, German, Portuguese, Japanese, Korean, Arabic, Hindi, Russian)
- π± Local-First: All data stored locally on your device - complete privacy and ownership
- π― Material Design 3: Beautiful, accessible UI with light, dark, and sepia reading themes
- π Library Management: Organize your AI-generated books in a clean, intuitive library
- π Rich Reader: Adjustable font sizes, multiple themes, and comfortable reading experience
- π Export/Import: Export books as JSON for backup or sharing
- π Production Ready: Optimized build system with Java 17, parallel builds, and CI/CD
- Flutter SDK 3.10.1+
- Dart 3.10.1+
- Java 17+ (for Android)
- Android device or emulator
Verify: flutter doctor -v && java -version
# Clone the repository
git clone https://github.com/cmwen/read-forge-app.git
cd read-forge-app
# Get dependencies
flutter pub get
# Run the app
flutter run- Tap the + button in your library
- Fill in at least one field:
- Book Title (Optional): Enter a title or leave empty for AI generation
- Description (Optional): Describe what the book is about
- Purpose/Learning Goal (Optional): What you want to learn from this book
- If you don't provide a title, the app can generate one using AI based on your description or purpose
- Your new book is created!
- Open your book
- Tap Generate TOC
- Copy the prompt or share it with your AI assistant (ChatGPT, Claude, etc.)
- Paste the AI's response back into ReadForge
- Supports both JSON and plain text formats
- Tap any chapter in your book
- Tap Generate Content
- Share the prompt with your AI assistant
- Paste the generated content back
- Start reading!
- Go to Settings from the library
- Set your preferred:
- Writing Style (Creative, Balanced, Precise)
- Language
- Tone (Casual, Neutral, Formal)
- Vocabulary Level (Simple, Moderate, Advanced)
- Favorite Author (for style inspiration)
- These preferences are automatically included in all AI prompts!
- While reading, tap the text settings icon
- Adjust font size, theme (Light/Dark/Sepia), and font family
- Your preferences are saved automatically
- Be specific about the genre and style you want
- Provide context in your book description
- Use the writing preferences to guide the AI's output
- Include character descriptions or plot outlines in the book description
ReadForge accepts responses in multiple formats:
JSON Format (Recommended):
{
"type": "toc",
"bookTitle": "Your Book Title",
"chapters": [
{"number": 1, "title": "Chapter One", "summary": "Brief summary"},
{"number": 2, "title": "Chapter Two", "summary": "Brief summary"}
]
}Plain Text Format (Also Supported):
1. Chapter Title - Brief summary
2. Another Chapter - Its summary
3. Third Chapter - Summary here
For chapter content, any plain text response will work!
- The app is designed to be forgiving with response formats
- If parsing fails, you'll see a clear error message with details
- Plain text content is always accepted for chapters
- You can always try again if something goes wrong
# Debug APK
flutter build apk --debug
# Release APK
flutter build apk --release
# App Bundle (for Play Store)
flutter build appbundle --release- State Management: Riverpod for reactive state management
- Database: Drift (SQLite) for local-first data storage
- UI: Material Design 3 with custom theming
- Structure: Feature-based architecture with clean separation of concerns
lib/
βββ core/ # Core services and domain models
β βββ services/ # LLM integration, storage
β βββ domain/ # Data models
β βββ data/ # Database definitions
βββ features/ # Feature modules
β βββ library/ # Book library
β βββ book/ # Book details and TOC
β βββ reader/ # Reading experience
β βββ settings/ # App settings
βββ main.dart # App entry point
- 100% Local: All data stored locally on your device using SQLite
- No Cloud: No data sent to external servers
- No Tracking: No analytics or tracking
- Full Control: Export your books anytime as JSON
- Offline First: Works completely offline after initial AI content generation
- "Empty input": Make sure you've copied the AI's response
- "Clipboard placeholder": You've pasted the placeholder text, not the actual response
- "Unable to parse": For TOC, use the numbered list format. For chapters, any plain text works!
- Run
flutter clean && flutter pub getto reset dependencies - Make sure you have Java 17+ installed
- Check
flutter doctor -vfor any issues
- β¨ Enhanced Book Creation: Optional fields for title, description, and learning purpose
- π€ AI Title Generation: Let AI generate book titles based on your description or purpose
- π Full Internationalization: Support for 12 languages including English, Spanish, Chinese (Simplified & Traditional), French, German, Portuguese, Japanese, Korean, Arabic, Hindi, and Russian
- π Purpose Tracking: Track learning goals for each book
- π§ Improved Database: Added purpose field and AI-generated title tracking
- β¨ User preferences now included in all AI prompts
- π§ Fixed error detail dialog display issues
- π Dynamic version display from build configuration
- π‘οΈ More fault-tolerant LLM response import
- π Improved error messages and user guidance
- π Updated README with comprehensive usage guide
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE
Coming soon - screenshots of the library, reader, and settings screens
If you find ReadForge useful, please give it a star! It helps others discover the project.
MIT License - see LICENSE