NovelPurity is a cross-platform Flutter app for discovering and reading web novels with a local library, offline chapters, translation, and update notifications.
Important
NovelPurity is an unofficial reader and is not affiliated with, endorsed by, or sponsored by NovGo or any content publisher. Novel text and artwork belong to their respective owners. Use the app in accordance with the content source's terms and applicable law.
- Browse hot, most-viewed, newly added, completed, and genre-based novels
- Search by title and explore authors and tags
- Keep favorites and reading history in a local Hive library
- Download chapters for offline reading
- Save chapter bookmarks and reading progress
- Customize the reading experience
- Translate chapter text through the hosted translation service
- Receive local notifications for new chapters
- Run scheduled update checks on Android
| Platform | Support |
|---|---|
| Android | Primary platform; includes background update checks |
| iOS | App scaffold available; background checks are not enabled |
| Web, Windows, macOS, Linux | App scaffolds available; feature parity is not guaranteed |
Install a Flutter SDK compatible with Dart ^3.7.2, then run:
git clone https://github.com/ous-sama22/novelpurity.git
cd novelpurity
flutter pub get
flutter runWhen changing Hive models, regenerate their adapters:
flutter pub run build_runner build --delete-conflicting-outputsThe app fetches and parses publicly accessible novel pages from novgo.net. Library entries, settings, bookmarks, reading progress, and downloaded chapters are stored locally with Hive.
Translation requests use the project author's server at novelpurity-translation-api.onrender.com, hosted on a hobby Render account. The service may take time to wake after being idle or may be temporarily unavailable due to hobby-plan limits.
To use a different translation server, change the _baseUrl value in lib/services/google_translation_service.dart to the URL of your deployment.
- Reading and library data is stored on the device.
- Text selected for translation is sent to the configured translation server.
- Novel pages and images are requested from the content source when browsing or reading.
- Do not put secrets in Flutter assets or client-side environment files; bundled app data can be extracted.
- Scraping can stop working when the source website changes its markup or access rules.
- Scheduled background chapter checks are Android-only.
- Content availability, accuracy, and uptime depend on third-party services.
Issues and pull requests are welcome. Please run flutter analyze before submitting code changes and keep generated Hive adapters synchronized with model changes.
MIT