feat(cairn): add cairn, a guest-first directory page - #995
Open
MorganKryze wants to merge 1 commit into
Open
Conversation
cairn is the directory page you hand to the people you host services for: one YAML file in, a static multilingual page out, with no account to create, no database and no outbound requests. Each service can show a live status pill pulled from Gatus or Uptime Kuma. Adds Apps/cairn with the compose, icon.svg, a thumbnail and three screenshots. Store metadata is localized into the eight languages cairn's own interface already ships.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



What this is: a new app.
What changed: adds
Apps/cairn/, onedocker-compose.ymlplusicon.svg,thumbnail.pngand three screenshots. It touches nothing else in the tree.What cairn is: the directory page for the people you host services for. You
hand it to your family, your club or your members. One YAML file in, a static
multilingual page out, with no account to create, no database and no outbound
requests. Each service can show a live status pill pulled from Gatus or Uptime
Kuma, and cairn serves its own legal and privacy pages, which associations and
small hosts need.
I'm its author. Tell me if anything below is in the wrong shape and I'll fix it.
Why it fits here: I read the 166 app folders under
Apps/and found no startpage or service directory, so cairn overlaps with nothing you already carry.
How I validated it, on a fresh clone with the app in place:
validate_compose.py --app-path cairn: 0 errors, 0 warningsdocker compose config -q: passes./scripts/build_dist.sh: completes, 167 apps,dist/apps/org.icewhale.cairn/generated with
meta.json, the sevenmeta.{locale}.jsonfiles and all assetsdist/apps/org.icewhale.cairn/docker-compose.yml: still carriesread_only,cap_drop: ALL,no-new-privilegesand the read-only/configbindNotes for review:
FROM scratch, two files and 4.4 MB to pull on amd64, 4.0 onarm64. It writes nothing at runtime, hence
read_onlywith every capabilitydropped. The image has no shell, so the healthcheck is the binary probing
itself:
/cairn -healthcheck.no secret to run. The one credential it can want is optional, for status pills
against an authenticated monitoring API, and cairn reads it from a file path
set in the YAML.
/config: cairn serves a getting-startedpage explaining what to do. Drop a
services.yamlin and it reloads withinseconds, no restart. That is what
tips.before_installsays.org.icewhale.cairnfor the id to match the convention I saw on theother apps. Happy to change it if you'd rather namespace third-party
submissions differently.
en_US,fr_FR,de_DE,es_ES,it_IT,nl_NL,pt_PTandsv_SE. Those are the eight languages cairn's owninterface ships, so the store card speaks what the product speaks. Each
translation follows the register of cairn's string table: formal in German,
Spanish, Dutch and Portuguese, informal in Italian, European rather than
Brazilian Portuguese.
Links:
Thanks for keeping the store open to outside submissions.