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
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:
Implementation requirement
This ticket must be developed TDD-first.
Scope
app.json/opt/potato/apps/<id>/Acceptance criteria
discover_apps()/ manifest-driven app lifecycle model.Test expectations (required)
Non-goals
Related
#121/#217apps/