# Harmonic for Hacker News: a polished Android client, not a code showcase

> Harmonic is a Kotlin Android client for Hacker News with full account support, Material 3 Expressive design, theming and a set of reading conveniences, published under Apache-2.0 and driven as one maintainer's side project. The author is explicit that the code is not the point, the interface is, and that shapes what the project is good for.

**SimonHalvdansson/Harmonic-HN** — Modern Android client for Hacker News

- Repository: https://github.com/SimonHalvdansson/Harmonic-HN
- Website: https://play.google.com/store/apps/details?id=com.simon.harmonichackernews
- Stars: 1,011 · Forks: 90
- Language: Kotlin
- License: Apache-2.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/simonhalvdansson-harmonic-hn

## Six years of iteration on one reader

Harmonic is a Hacker News client for Android, written in Kotlin, and its history explains its shape. The project documentation describes nearly six years of development in which the app accumulated features and improved the hundreds of small interactions that make it up. It is described as the author's main personal side project, used daily, with over 100 000 downloads on Google Play. That framing matters for an evaluation, because the stated goal is a personal product refined over years rather than a library or a component another team would build on. The author also says plainly that the project is not meant as a display of the best code quality, but as the product of continuous iteration and pixel pushing. It is a candid statement, and it tells you what to expect when you open the repository: an application shaped by use, with the usual unevenness of code that has been adjusted many times.

## Full account support, not a read-only feed

The feature list starts with the part that separates a serious client from a link viewer: full account functionality, covering log in, vote, comment, submit, favorites and see upvoted. In other words, the app can do everything the site can do for a signed in user, which means it is a complete client rather than a front end for reading. The rest of the list is about the reading experience. The design is Material 3 Expressive with animations, theming is supported with extensive customization options, and there is a collection of quality of life features that the documentation highlights as reader mode, preview images and link previews. Strong performance is claimed as a feature of its own, with no numbers attached. For a user, that combination means the app covers the full loop from reading a thread to acting on it, and for a reviewer the interesting question is not what it does but how well the interactions are tuned, which is the axis the author says the project optimises for.

## The repository carries more than the Android app

The top-level layout shows a project that is wider than a single Android application. Besides the app/ directory and the Gradle files, the repository contains core/, ui/, resources/ and a desktop_app/ directory, and also an ios_app/ directory, so the codebase carries targets beyond Android. There is a benchmark/ directory, which fits a project that treats performance as a feature, and a local_ai_runtime/ directory, whose name suggests an on-device component that is not explained anywhere in the README. Release and distribution tooling is present as well, with fastlane/ for the store workflow, fdroiddata/ for F-Droid packaging and scripts/ for project tasks. The presence of .agents/ and AGENTS.md at the top level is also notable, since those are instructions for coding agents working in the repository, and the contribution notes explicitly discuss pull requests written with an LLM. The README does not describe any of this in prose, so the directory names are the only signal about how the project is organised.

## A contribution policy that optimises for the interface

The contribution section is unusually explicit about what the maintainer wants, and it is worth reading before you open a pull request. Issues and pull requests are both welcome, and historically most have been merged, though the maintainer may make design changes to keep the app visually consistent. The instruction to stay within the general code style of the codebase comes with an explicit release from any obligation, since the current state is not claimed to be holy. The two statements that define the priorities are that the app is meant to be beautiful from the front more than the back, that user experience is king, and that pull requests which clean up the code or improve structure are equally welcome. So the project accepts both kinds of work, but the reason to contribute is the interface. New user-facing features get a changelog entry after merging, and contributors can ask not to be named in it.

## AI-written pull requests are allowed, with one condition

There is a short section on AI-aided pull requests, and the position is permissive with a caveat. Using your favourite LLM workflow to create a pull request is described as completely fine, anything that gets the job done, and the condition attached to it is procedural rather than philosophical: build the app, which should be hassle free, and try out your changes to make sure they work before submitting. The distinction the section draws is between the origin of the code and the responsibility for it. The author is not asking for authorship disclosure, only for a working build, which in practice means the CI path and the local Gradle build have to pass. For a contributor this lowers the barrier considerably, and for a reviewer it means the merge decision is still based on whether the change works and whether it fits the design.

## Apache-2.0, a recent push, and a slower release rhythm

The licence is Apache-2.0, with the LICENSE file at the top level of the repository, which means the code can be reused and modified under that licence without copyleft obligations on a distributed derivative. The maintenance picture has two parts. The last push to the repository was on 2026-10-19, so the branch is moving, while the published versions are further back, with Version 3.1.2 from 2026-07-30, Version 3.1.1 from 2026-07-28 and Version 3.1 from 2026-07-22. That gap between the head of the branch and the store listing is a normal pattern for a mobile app where releases are cut on a schedule and reviewed before they go out, and the fastlane/ directory points at that release process. It does mean that if you are evaluating the source, you are looking at code that is ahead of what users on Google Play have, and the desktop_app/ and ios_app/ directories are the clearest sign that the source tree covers more than the shipped Android application.

## Conclusion

Harmonic fits an individual Android user who wants a full account client for Hacker News with reading conveniences and theming, and it fits a contributor who wants to work on a real application with a fast review loop. It does not fit a company that needs a maintained internal component, since the project is explicitly one person's side project and not presented as a model of code quality, and it does not fit someone who wants an iOS or desktop client from this repository without doing the porting work. Before adopting or contributing, read the contribution notes and build the app yourself, since a pull request is expected to come with a working build. The last push to the repository was on 2026-10-19, and the most recent release is Version 3.1.2 from 2026-07-30.

## FAQ

### Is Harmonic for Hacker News open source?

Yes. The project is licensed under Apache-2.0 and the LICENSE file sits at the top level of the repository, which means the code can be reused and modified under those terms.

### How do I get Harmonic, and can I install it without Google Play?

The app is distributed through its Google Play listing, and the repository also contains an fdroiddata/ directory, which holds data for F-Droid packaging. The README does not give a build from source walkthrough, though the project ships Gradle wrapper files and an app/ directory.

### Can I log in and vote and comment from Harmonic?

Yes. The feature list describes full account functionality, covering log in, vote, comment, submit, favorites and see upvoted, alongside a Material 3 Expressive design, theming and reading features such as reader mode and link previews.

### Are pull requests written with an AI assistant accepted?

The contribution notes say using an LLM workflow to create a pull request is completely fine, with one condition: build the app and try the changes before submitting. The maintainer also notes that pull requests which clean up code or improve structure are welcome, and that user-facing features are added to the changelog after merging unless the contributor asks not to be named.

## Sources

- [License: Apache-2.0](https://github.com/SimonHalvdansson/Harmonic-HN/blob/main/LICENSE)
- [Project website](https://play.google.com/store/apps/details?id=com.simon.harmonichackernews)
- [README](https://github.com/SimonHalvdansson/Harmonic-HN/blob/main/README.md)
- [Releases](https://github.com/SimonHalvdansson/Harmonic-HN/releases)
- [SimonHalvdansson/Harmonic-HN on GitHub](https://github.com/SimonHalvdansson/Harmonic-HN)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/simonhalvdansson-harmonic-hn
