>_ DevTrendsen

Language

Home

Languages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Security
Kotlin

How the QuickNovel Web Novel Reader is Built in Kotlin

Fans of Asian light novels and English-language fiction from Royal Road regularly face the same problem. Reading web novels on a phone through a browser is inconvenient: pages are cluttered with banners, autoplaying videos pop up, and you can't even open a chapter in the subway without a network connection.

The QuickNovel project tries to solve this problem radically. It's a free open-source Android application that extracts clean text from dozens of sites and turns it into neat offline books.

Why a separate aggregator is needed

Unlike standard readers like Moon+ Reader, QuickNovel also handles content delivery. Authors don't store books on their own server — the app works similarly to a search engine. You enter a title, QuickNovel sends requests to supported platforms, fetches HTML pages, cleans out the junk, and assembles chapters into a unified structure.

The source list claims about forty resources. Among them are large English-language catalogs like Royal Road, Scribble Hub, and Anna's Archive, as well as specific translation aggregators.

This is what the app interface looks like during search and download:

Main screen Site search Downloads Book page Reading mode

What's interesting in the source code

The app is completely written in Kotlin under the GPL-3.0 license. If you develop for Android, you can find several practical solutions in the repository code.

Modular parser system

The most complex part of such applications is supporting many different sites. In QuickNovel, each source is described through a provider abstraction. The base class defines rules for searching, fetching metadata, and parsing chapter text. Adding a new site comes down to creating a single file with the correct CSS selectors or JSON endpoints.

Building and packaging to EPUB

QuickNovel can not only render text in the built-in reader but also package downloaded chapters into the standard EPUB format. This is convenient if you prefer reading through third-party readers or on an e-reader.

The main problem with this approach

Web scraping has an inevitable downside. As soon as site owners change the layout, move to a new domain, or enable aggressive Cloudflare protection, the parser breaks.

The project repository currently has about 250 open issues. Most of them concern broken providers. Development here relies on community activity: someone notices a breakage, fixes the CSS selector in the code, and submits a pull request.

Who will find this project useful

QuickNovel is worth installing if you actively read web fiction and want to get rid of ads and dependencies on internet connectivity.

And for Kotlin developers, it's a good example of how to organize asynchronous loading of hundreds of pages, file system operations, and HTML parsing in a real mobile application. The source code is available on GitHub.

Related projects