Skip to content

Repository files navigation

App Fair

An open, privacy-respecting app store for F-Droid–compatible catalogs, built with Day — one Rust codebase, native widgets on every platform.

App Fair syncs F-Droid Index V2 catalogs into on-device SQLite, then lets you browse, search, and switch between catalogs and install, update, and launch apps. It talks only to the catalogs you add: no accounts, no analytics, and nothing about what you browse or install leaves the device.

What's inside

root() (src/lib.rs) is a three-tab shell — Catalogs, Updates, Settings. Catalogs and Updates are each a navigation stack that pushes an app detail page; an install overlay floats above everything.

  • src/ui.rs — the Catalogs tab: catalog switcher, search, category/sort pickers, the app list.
  • src/detail.rs — an app's detail page (icon, description, permissions, signing key, Install).
  • src/install.rs / src/install_sheet.rs — download-verify-install orchestration and its sheet.
  • src/updates.rs — the Updates tab and background update checks.
  • src/settings.rs / src/catalogs_add.rs — catalogs, preferences, anti-feature filters, add-catalog.
  • src/db.rs / src/schema.rs / src/model.rs — the on-device catalog (Diesel + bundled SQLite).
  • src/fdroid.rs / src/net.rs / src/sync.rs — F-Droid Index V2 parsing, HTTP, and catalog sync.
  • src/platform.rs + android/java/.../DayInstaller.java — the Android install/query bridge.
  • resource/locales/{en,fr}/app.ftl — every user-facing string (localization).
  • mock/ — a bundled offline catalog for deterministic screenshots (--env APP_FAIR_MOCK=1).
  • Day.toml / Cargo.toml — app metadata, targets, signing, and dependencies.

Build and run

Day compiles one backend per binary, so choose a target. The Day CLI supplies the right feature:

day doctor                        # check the toolchains for your targets
day launch -p android-mdc      # build + run on a device/emulator
day launch -p android-mdc --script dayscript/ci.yaml --env APP_FAIR_MOCK=1   # scripted, offline

Release

Signing keys are referenced from Day.toml ([signing.android]) via environment variables:

export DAY_ANDROID_KEYSTORE=/path/to/keystore.jks DAY_ANDROID_KEY_ALIAS=app \
       DAY_KS_PASS=… DAY_KEY_PASS=…
day sign --check                               # confirm the config resolves
day pack -p android-mdc --profile release   # signed app-fair-<version>.apk + .aab in build/day/dist/

Play Store listing metadata and the supply dry run live in android/fastlane/. See RELEASE.md for the full release checklist and the Google Play policy review notes.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages