A minimal libadwaita app that shows the whole FrogPak path: the FrogPak releaser builds and releases it, and a Pond publishes it as a signed Flatpak remote.
Copy it as a starting point; it is 0BSD-licensed.
build-aux/io.github.FrogPak.Example.json: the Flatpak manifest.data/io.github.FrogPak.Example.metainfo.xml: name, summary, license, links and the release history. A new<release>at the top of<releases>, pushed tomain, produces a release.
A Pond's card for the app comes from its bundle's metainfo and its repository:
| On the card | From |
|---|---|
| Name, summary, version | <name>, <summary>, the newest <release> |
| Release date | the GitHub release, or the newest <release>'s date |
| License | the license GitHub detects in LICENSE, or <project_license> |
| Website, Issue tracker, Donate | <url type="homepage">, bugtracker and donation; https: only, and a homepage that is the repository is left out |
Links change on the card only after a new release, since the Pond reads the metainfo inside the published bundle.
data/io.github.FrogPak.Example.svg: the icon the Pond shows..github/workflows/release.yml: calls the releaser..forgejo/workflows/tag.yml: only for an app developed on Forgejo and mirrored to GitHub; see below. GitHub ignores it.
Add a release to the metainfo and push:
<release version="0.2.0" date="2026-12-01">
<description>
<p>What changed.</p>
</description>
</release>The releaser builds io.github.FrogPak.Example-x86_64.flatpak and io.github.FrogPak.Example-aarch64.flatpak and attaches them to a v0.2.0 release. A Pond lists the app with:
apps:
io.github.FrogPak.Example:
repo: FrogPak/example-appIf the app lives on a Forgejo server that push-mirrors it to GitHub, tags must be created on Forgejo; a tag the releaser creates on GitHub is deleted by the mirror's next sync, and its release goes back to being a draft. This repository is ready for that:
- In
.github/workflows/release.yml, uncommentcreate-tags: false. - In
.forgejo/workflows/tag.yml, setruns-onto a label of one of your Forgejo runners.
Releasing stays the same: add a release to the metainfo and push to Forgejo. Forgejo tags it, the mirror carries the tag to GitHub, and the releaser builds and releases it. The releaser's README has the details.