Norea is a local-first reader for light novels, webtoons, and manga on Windows and Android. It keeps your reading sources, library, downloads, and progress in one app.
Norea is inspired by lnreader/lnreader, but it is a separate app with its own data, backup, and source system.
Norea supports image-based chapters as well as text. Scroll through long-strip webtoons or read manga and comics page by page.
- Browse and search installed reading sources.
- Add novels to your library and organize them with categories. Add or remove category assignments for selected works, or edit them from the work home.
- Choose the category shown when entering the library, with All as the default.
- Filter by unread, downloaded, local, and fully read tags. Tablet and desktop layouts expose these filters directly; narrow layouts include them in the category drawer. Select all filtered works beside Download, including works beyond the currently loaded page.
- Sort your library by undownloaded chapter count, from fewest or most first.
- Import local plain text, HTML, Markdown, EPUB, and PDF files.
- Open TXT, Markdown, EPUB, and PDF files with installed Windows or Android builds,
add them as chapters of the shared
localwork, and open the selected file in the reader. - Cache rendered chapter media for offline reading.
- Route source-plugin requests through an app-local OpenVPN tunnel on Windows
and Android, using an imported
.ovpnprofile or the built-in VPN Gate server finder. Connecting another profile disconnects the current tunnel first. The finder hides servers you marked X by default, with an option to show them. Reopening the finder reuses the fetched list; Refresh fetches it again. - Keep local files in one work on Windows and Android, reorder its chapters, and manage local metadata with locally uploaded cover images.
- Read text, webtoon, and manga chapters in paged or scrolling mode.
- Change themes, font size, text color, tap zones, and keyboard navigation.
- Track reading progress, history, unread chapters, and downloaded chapters.
- Download chapters for later reading. Library batch downloads remain available whenever selected works have undownloaded chapters outside the current download queue. Select one or more chapters to download missing chapters before the lowest selected chapter position, regardless of the displayed sort order.
- Share complete chapters through an optional content server. Browse its works under Browse -> Content server, add them to your library, and download chapters without waiting for a full sync. Devices register automatically. Search and source filters remain when returning from a work.
- Save a complete device database and settings snapshot to the content server under your device name. Select any saved device backup to replace this app's local database, installed plugins, and settings after confirmation.
- Export and import local backups for your library, progress, categories, source settings, and chapter download status.
Norea is usable for testing, but it is not a polished app-store release yet.
Current limits:
- macOS and iOS are not planned right now.
- Linux builds are no longer produced or supported.
- Some protected sources may ask you to open the in-app site browser once before search or downloads work.
- Android background downloads still need more device testing.
- There is no automatic updater yet. Use Settings -> About to check and download newer builds manually.
Norea currently publishes tester builds from the 0.2 branch. Download them from
the dev-0.2 GitHub prerelease.
There is no stable release yet.
Successful platform workflows refresh its installers, packages, APKs, update
metadata, and checksums.
Workflow artifacts remain available as a fallback while the prerelease is being refreshed:
- Open the latest successful workflow run for your platform: Windows or Android.
- Open the run and scroll to Artifacts.
- Download the matching artifact:
| Platform | What to download |
|---|---|
| Windows x64 | norea-windows-x64-nsis or norea-windows-x64-msi |
| Windows ARM64 | norea-windows-arm64-nsis or norea-windows-arm64-msi |
| Android phone or tablet | norea-arm64.apk |
| Android emulator or WSA | norea-x86_64.apk |
Workflow artifacts are kept for 30 days. If an artifact is expired, use a newer successful run or the dev-0.2 prerelease.
- Install and open Norea.
- Add a reading source list from Browse -> Sources.
- Install one or more sources.
- Search a source, open a novel, and add it to your library.
- Open a chapter to read. Download chapters you want available later.
Reading sources are installed separately from the app. The sample source list is maintained at tinywind/norea-plugins and focuses on public-domain, open-license, official-API, and user-owned self-hosted examples.
To add the sample source list:
-
Open Browse -> Sources.
-
Choose Set repository.
-
Paste this URL:
https://raw.githubusercontent.com/tinywind/norea-plugins/dist/0.2/.dist/plugins.json -
Save it.
-
Install sources from Available source plugins.
Only install and use sources you are allowed to access in your country and under the source site's terms.
Norea Content Server stores complete chapter files so you can upload content from one device and download it on another. An archived copy remains available when the original source site is offline or removes a work.
The server is an optional shadow backup. Library navigation, saved work details, and locally downloaded reading must remain usable immediately, even while the server is slow or unavailable. Automatic server lookups, transfers, and refreshes run in the background and must never add blocking loaders, error banners, or other interruptions to normal use. Actions you explicitly request, such as a server download or manual sync, still report failures that prevent completion.
The public Docker image
for the 0.2 app series targets linux/amd64, including Linux containers on
Docker Desktop. To start a compatible server with persistent storage:
docker volume create norea-content-data
docker run -d --name norea-content-server --restart unless-stopped -p 0.0.0.0:8080:8787 -v norea-content-data:/data tinywind0/norea-content-server:0.2Open http://localhost:8080/admin/ on the host. The administration console and
content API share port 8080; there is no separate console port. First startup
creates the console password in the data volume. Read it privately with:
docker exec norea-content-server cat /data/admin-password.hashKeep the data volume across container replacements: it contains the catalog,
chapter files, and console password. The command publishes port 8080 on all
host interfaces. Devices on your network can use http://<server-LAN-IP>:8080
when the host firewall permits access. New devices register automatically and
downloads are anonymous by default, so anyone who can reach the server can
register a device. Use a trusted network or configure restricted remote access
as described in the server documentation.
- Open Settings -> Data -> Content server.
- Save the server URL and a device name. On a phone or tablet, use the server's
LAN address;
localhostrefers to that phone or tablet. - Choose Sync now to register the device and upload complete local chapters.
- Choose Download to this device for content in the server catalog.
No account or password is needed in the app. Each device uses its own registration key. Ordinary content sync shares work metadata and chapter files while keeping library membership and reading state local. The separate Settings -> Data -> Device backup section saves the complete app database and settings under your device name. It lists the server's saved device backups; selecting one and confirming Restore replaces the local database and settings, then reloads the app. This includes library membership and reading state, with no separate reading sync key or history merge. See Backup for its scope.
Choose Manual only, Periodically, or When changes occur for content sync. Automatic sync runs while the app is visible, and later syncs use recorded content changes.
Complete chapters upload as multipart requests containing the original
content.html or content.pdf, plus manifest.json and media.zip when present.
The app sends these files byte for byte, without creating an extra ZIP, rewriting
HTML or media references, or recompressing media. The server publishes a revision
only after every listed file arrives with its declared size. Transfers check
file names, sizes, and completion without computing or comparing chapter-file
SHA-256 hashes. Downloads support only the current original-file format.
Deleting a local download leaves the server copy intact unless its confirmation
also selects server deletion. The server keeps one copy per chapter and records
whether its ZIP contains every asset declared in the media manifest.
Under Settings > Data > Content server > Upload conflicts, choose whether to
prefer complete chapters, keep server data, or replace it with app data.
Then use Sync now to apply the selected policy. Deletion confirmations let you
also remove matching data from the other side; additional options start unchecked.
Removing library membership can also delete device downloads or the whole server
work. Delete work from server in Browse -> Content server or Manage server
data removes server metadata, the cover, and all chapters, with an option to
remove the whole device work and its reading state. Chapter download deletion
keeps work information and reading progress. Explicit server deletions made in
the app stay excluded from uploads after restart and local rescans.
Work metadata and covers sync independently of chapter downloads. Each work's
novel.json stores its details and a chapters map of source chapter numbers to
titles beside its cover. Source metadata fetches update the catalog; downloading
or deleting chapter files does not change it. No source cover URL is stored.
The plugin ID, source path, and work name are the only required fields. A local
rescan restores the catalog and marks chapters downloaded only when their completed
files are found. The same catalog is backed up to the content server.
Downloaded chapters are discovered from their existing folders and files.
These files are authoritative; the app keeps metadata in SQLite for browsing and
search, including works with no downloaded chapters. Opening saved works does not
require fetching their metadata from the source site again.
After app data is cleared, selecting an existing content folder restores its works to the library in the background. The library and storage settings show the current work, inspected folders, recovered works and chapters, and skipped folders. Each recovered work becomes available immediately; library and plugin repository queries do not wait for the scan. Recovery reads local files without rewriting them or contacting the content server or source sites.
The web console manages devices, server copies, scan jobs, and multiple
plugin repository indexes. The server uses its configured data directory for
content storage and scanning; the console does not select additional folders.
Scanning requires valid novel.json work metadata and discovers chapters from
their folders and files without contacting source sites or requiring installed
plugins. Incomplete chapters are recorded but excluded from downloads;
unsupported files are skipped. Original files are
preserved. Works and their covers remain
available even when none of their chapters can be imported. The console offers
cover grids, a list view, and full metadata inspection.
See content-server integration for sync behavior and current limits, and the server's administration guide for folder import and server configuration.
Open Settings -> Data -> Device backup after configuring a content server. Your device name is the default backup name. Save the current snapshot to that name, or select a name from the server's list and restore its saved snapshot after confirming the overwrite. Every registered, unblocked device can list and restore the server's device backups; these are not separated by private reading sync keys.
The snapshot includes the complete SQLite database, repository URLs, installed plugin JavaScript, categories, library membership, reading progress, bookmarks, history, and all work and chapter metadata. It also includes all saved app settings, including server connection and device credentials, VPN settings and the imported OpenVPN profile, interface preferences, and the storage folder setting. Restoring replaces these values with the selected device's snapshot and reloads the app. It does not merge two devices' history.
Downloaded chapter bodies, cover files, and image or media files stay in their existing storage folders and are not included or overwritten. Operating-system folder permissions, WebView cookies, and VPN username/password values held only in memory are not included. A different device may need to grant access to the restored storage folder or select an available folder again.
Only a backup with the same database schema and migration history can be restored. The app verifies the archive checksum and database integrity before replacement. Pending download and metadata publication jobs from the snapshot are cancelled or removed so they cannot modify original content files after restore. The older portable file backup remains available separately.
Physical download cache flags and byte counts are reset during a full device restore because original chapter files are not included. Existing local files remain untouched and are checked again when their chapters are opened or downloaded; reading progress and metadata stay restored.
If a preserved work is absent from the restored database, opening it from the server catalog rebuilds its local index from the existing files without replacing those files with the server response.
Use Settings -> Backup to export or import your local library data. Backups include your library, reading progress, categories, source settings, installed sources, and chapter download status. Downloaded chapter bodies and cached chapter media are not packed into the backup; they stay in the chapter storage folder, and Norea re-checks that folder after a restore so download flags match the files that are actually present. This portable format excludes device authentication keys and preserves existing content files during restore. Only the current manifest format 2 is supported. It is a different format from the complete device snapshot stored on the content server.
Database schema changes increment the version and migrate existing app data, including development builds. Registered migration SQL remains immutable. Unknown versions, changed checksums, and failed migrations stop database opening without deleting existing data.
Settings, metadata, backups, and the content-server API currently support only their current formats. Use current app and server builds together.
Maintainer details live in docs/release-compatibility.md.
Developer setup, local plugin testing, release artifact details, and contribution rules live in docs/development.md.
Optional content-server setup and current integration limits are documented in docs/content-sync.md.
MIT. Upstream assets and translation seeds remain MIT-compatible and are credited in the app where relevant.





