Skip to main content

Contributing to the Yundera App Store

The Yundera App Store is an open-source, curated collection of Docker-based applications. Anyone can contribute a new app or improve an existing one.

Source of truth

The CONTRIBUTING.md in the AppStore repository is the authoritative reference. This developer guide provides an orientation and quick reference; when in doubt, the CONTRIBUTING.md wins.

Repositories

RepositoryPurpose
Yundera/AppStoreOfficial curated app store shipped to every PCS
Yundera/AppStoreLabStaging store for testing before promoting to production

Contribution workflow

  1. Build your app under Apps/{AppName}/ following the file structure and conventions.
  2. Test locally on your own PCS: fresh install, uninstall/reinstall (data preserved), and upgrade.
  3. Fork the repo, test by pointing the App Store source at your fork (and/or stage in AppStoreLab).
  4. Open a PR with all required files and every checklist item passing.
  5. Update asset URLs to point at the main branch before merge (Yundera/AppStore@main, not your fork).

App folder structure

Apps/{AppName}/
├── docker-compose.yml # Required — the app definition
├── icon.png # Required — 192×192 px, transparent background
├── thumbnail.png # Required — 784×442 px
├── screenshot-1.png # Required — 1280×720 px (at least one)
└── rationale.md # Required only when deviating from conventions

Essential conventions (cheat sheet)

AreaRule
Image tagsPinned version (e.g., :0.1.2). Never :latest.
cpu_sharesRequired on every service. Scale: 10–100.
Useruser: $PUID:$PGID when touching user dirs. Root only for /DATA/AppData/{AppName}/.
DataPersist under /DATA/AppData/$AppID/. Must survive uninstall/reinstall.
NetworkingJoin the external pcs network. Use expose: (not ports:).
AuthMandatory, enabled by default. Use AppShield sidecar or the app's built-in auth.
AssetsURLs via jsDelivr: https://cdn.jsdelivr.net/gh/Yundera/AppStore@main/Apps/{AppName}/{file}

For the full specification, see Adding an App.