Skip to content

feat(platform): add Potato App Store v1 with official catalog and GitHub sideloading #244

Description

@slomin

Summary

Add a first Potato App Store flow so users can install optional Potato apps without copying directories manually.

For v1, keep the source model simple:

  • one official GitHub app-store repo
  • optional sideload by GitHub repo URL
  • no third-party store ecosystem yet

Implementation requirement

This ticket must be developed TDD-first.

Scope

  • Add a platform-level app store UI for browsing installable Potato apps.
  • Back the official catalog with a separate GitHub repository containing one directory per app.
  • Reuse the existing Potato app structure:
    • app.json
    • app directory contents
  • Install flow:
    • fetch app payload from the store source
    • copy it into /opt/potato/apps/<id>/
    • make it discoverable by the existing app framework
  • Uninstall flow:
    • remove the installed app directory
    • keep platform behavior clean after removal
  • Add sideload support by GitHub repo URL for repos that contain a valid Potato app.
  • Show enough app metadata to browse confidently:
    • name
    • description
    • icon
    • version
    • source
  • Keep the platform shell responsible for install/uninstall state, not the individual apps.

Acceptance criteria

  • A user can browse apps from the official Potato app catalog in the UI.
  • A user can install an app from the official catalog without manual file copying.
  • An installed app appears in the platform app switcher after install/reload as expected.
  • A user can uninstall an installed app cleanly.
  • A user can sideload an app by GitHub repo URL if that repo contains a valid Potato app.
  • Invalid or unsupported repos fail with a clear error message.
  • The implementation works with the existing discover_apps() / manifest-driven app lifecycle model.

Test expectations (required)

  • Unit:
    • catalog parsing
    • manifest validation
    • install/uninstall path handling
    • sideload URL validation
  • API:
    • list available apps
    • install app
    • uninstall app
    • sideload app
  • UI/e2e:
    • browse catalog
    • install app
    • uninstall app
    • sideload valid/invalid repo
  • Manual:
    • verify on a real Pi that install/uninstall/sideload work end to end

Non-goals

  • Third-party store registration / multiple store sources
  • Ratings, reviews, or app search beyond a basic list
  • App auto-update system
  • Permissions / sandboxing model
  • Full marketplace moderation workflow

Related

  • Builds on the existing app framework from #121 / #217
  • Follows the current manifest-based app architecture already used in apps/
  • Future follow-up can add third-party stores once the official-store + sideload flow is proven

Activity

  1. added this to the App Distribution milestone on Mar 31, 2026
  2. self-assigned this
    on Mar 31, 2026
  3. moved this to Inbox in Potato OSon Mar 31, 2026
  4. moved this to Inbox in Potato OSon Apr 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions