LNReaderOpen source light novel reader for Android

Contributing to LNReader

LNReader thrives on community contributions. Whether you are fixing a typo, adding a plugin feature, or polishing the reader experience, this guide outlines the same workflow our core maintainers follow.

Before You Start

Make sure your workstation can build and run the Android app:

  • Node.js 18+ (use nvm if you juggle versions)
  • Java 15+ (optionally managed with jenv)
  • Android SDK & platform tools from Android Studio

Set Up Your Fork

  1. Fork the repository to your GitHub account.

  2. Clone your fork and install dependencies:

    git clone https://github.com/<your-username>/lnreader.git
    cd lnreader
    npm install
    
  3. Verify you can produce a release build (this also validates your toolchain):

    npm run buildRelease
    

If the Gradle build fails, confirm the Android SDK path and Java version are set correctly.

Run LNReader Locally

  1. Connect an Android device (with USB debugging) or start an emulator.

  2. Confirm the device is visible to ADB:

    adb devices
    
  3. Start the Metro bundler:

    npm start
    
  4. In another terminal, install and launch the app:

    npm run android
    

Metro supports fast refresh—save a file, then press r in the Metro window if you need a manual reload.

Coding Workflow

  • Create feature branches off the latest main.
  • Keep pull requests focused and include screenshots or recordings for UI changes.
  • Reference related GitHub issues in commit messages and PR descriptions.

Checks and Standards

  • Linting: Run ESLint locally before opening a PR.

    npm run lint
    
  • Formatting: Follow the existing TypeScript and React Native conventions. Configure your editor with Prettier/ESLint integration for consistent formatting.

  • CI expectations: Ensure your branch builds and lint checks pass; CI must be green before merge.

Where to Help

  • Bug fixes: Look for issues labelled bug or help wanted in GitHub.
  • Plugins & sources: Improve existing plugins or propose new ones in the lnreader-sources repository.
  • Documentation: Refine guides like this one to make onboarding easier for the next contributor.

Localization

We translate LNReader via Crowdin. Create a free account, choose your language, and contribute strings directly in the browser—no development setup required. The project dashboard shows live translation coverage for every locale.