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
-
Fork the repository to your GitHub account.
-
Clone your fork and install dependencies:
git clone https://github.com/<your-username>/lnreader.git cd lnreader npm install
-
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
-
Connect an Android device (with USB debugging) or start an emulator.
-
Confirm the device is visible to ADB:
adb devices
-
Start the Metro bundler:
npm start
-
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
orhelp 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.