The App Fair Project catalog site. Aggregates every published app in the
appfair GitHub org into a single landing
page, with a per-app sub-page for each one — generated from the appindex.json
that each app's release pipeline ships.
-
scripts/aggregate.mjslists every repository in theappfairGitHub org via the API, keeps only the forks (which is how App Fair catalogues each app — e.g.appfair/Net-Skipis a fork ofNet-Skip/Net-Skip), fetcheshttps://github.com/appfair/<repo>/releases/latest/download/appindex.jsonfrom each, and merges them. The result is written to two places:site/appindex.json— build input for the appland template (multi-app mode).site/public/appindex.v1.json— copy that ships with the static site, downloadable from https://appfair.net/appindex.v1.json.
Forks whose latest release doesn't yet publish an appindex.json are silently skipped.
-
The
appfair/applandAstro template is checked out intosite/appland. -
astro buildreadssite/siteinfo.yamlandsite/appindex.jsonand emits a localized landing page at/{locale}/plus per-app pages at/{locale}/apps/{repo}/. -
.github/workflows/aggregate.ymlruns the above hourly on a cron.
appfair.net/
├── .github/workflows/aggregate.yml # hourly poll + build + deploy
├── scripts/aggregate.mjs # GH org → site/appindex.json
└── site/
├── siteinfo.yaml # template config (title, host, etc.)
├── public/ # static files copied into the build
│ └── appindex.v1.json # generated copy — served at /appindex.v1.json
├── appindex.json # generated build input; gitignored
└── appland/ # template; gitignored, fetched in CI
If you have the appland template
checked out as a sibling of this repo (i.e. ../appland/ exists), the
quickest path is:
scripts/dev.shThat script aggregates the catalog, mirrors ../appland/ into
site/appland/ (preserving node_modules between runs so subsequent
launches are fast), copies site/public/ into the template, runs
npm install the first time only, and starts astro dev at
http://localhost:4321/.
If the template isn't checked out locally, run the steps manually:
# 1. Aggregate the catalog (writes site/appindex.json)
node scripts/aggregate.mjs
# 2. Vendor the template
git clone https://github.com/appfair/appland site/appland
# 3. Run the dev server
cd site/appland
npm install
npm run devCC0 1.0 Universal — see LICENSE.