A simple local RSS reader with optional sync. The web app at reader.hafa.cc reads
feeds that its Chrome extension fetches and schedules; the Android app works on
its own. The design is in PLAN.md.
| Directory | What | Open with |
|---|---|---|
web/ |
the web app (Svelte) | cd web && bun install && bun dev |
extension/ |
the Chrome extension the web app needs | cd extension && bun install && bun export |
android/ |
Android app (Compose) | android/ in Android Studio; see android/README.md |
shared/ |
feed parser, filters and schedule the web app and extension use, and test fixtures every client passes | cd shared && bun install && bun test |
firebase/ |
Firestore rules and setup for optional sync | see firebase/README.md |
design/ |
the logo the web app's and extension's icons are made from |
Install shared/ first: the web app and extension import its code, and its
dependencies resolve from shared/node_modules.
cd shared && bun installcd extension && bun install && bun export- In Chrome open
chrome://extensions, turn on Developer mode, choose "Load unpacked" and pickextension/dist. The manifest carries the Web Store listing's public key, so the extension gets the id the web app expects. cd web && bun install && bun dev, then open http://localhost:5173.
bun pack in extension/ builds reader-extension.zip for the Web Store: no
key (the store sets it) and no localhost.
Run by hand from the Actions tab:
ext-cutbumpsextension/manifest.json, tagsextension-v*and attaches the store zip to a GitHub release.android-cutbumpsversionNameandversionCodeinandroid/app/build.gradle.kts, tagsandroid-v*, thenandroid-publishbuilds the signed bundle and APK, attaches the APK to a GitHub release and rolls the bundle out on Play's internal track, or uploads it as a draft with a warning when Play refuses (an app that has not passed review yet). It needs the secretsANDROID_KEYSTORE(the upload keystore, base64),ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_ALIAS,ANDROID_KEY_PASSWORDandPLAY_SERVICE_ACCOUNT_JSON.web-deploypublishesmainto GitHub Pages (Settings, Pages: source GitHub Actions, custom domainreader.hafa.cc).