The index site for libreble — served at https://libreble.github.io/. It states the mission and links every liberated device.
Each device app is its own repo and deploys to its own GitHub Pages folder
(https://libreble.github.io/<repo>/), so they naturally hang under this page.
| app | device | repo |
|---|---|---|
| Bikefit | ICG IC-6 indoor bike | libreble/bikefit |
| Brushlog | Oral-B toothbrush | libreble/brushlog |
| COLLET | Dremel 8260 rotary tool | libreble/collet |
| Multimeter | Bluetooth multimeters (UNI-T, OWON, Aneng, BSIDE/ZOYI, Voltcraft, AICARE) | libreble/multimeter |
Plain static HTML, no build step. GitHub Pages serves main from the repo root.
index.html— the whole site. Inline CSS, theme-aware: followsprefers-color-scheme, and<html data-theme="dark|light">overrides it (?theme=dark/?theme=lightin the URL sets that attribute, for testing).favicon.svg,apple-touch-icon.png— the mark: an LED inside two rings that open toward the top right (the "open beacon"). Source for the touch icon isog/icon.html.og/card.html+og/render.sh— the 1200×630 social-card template and the script that rendersog/*.pngwith headless Chrome. Re-runog/render.shafter adding a device..nojekyll— tells Pages not to run Jekyll..github/ISSUE_TEMPLATE/— the Request a device and I liberated a device forms.
Type: Archivo (variable width/weight) for everything, IBM Plex Mono for the on-air layer (device lines, badges, identifiers, code). One accent, the LED orange.
fonts/— both faces self-hosted (latin subset, woff2, SIL OFL; licenses alongside), so the page makes no third-party requests at all.index.htmlandog/card.htmldeclare them with@font-face; nothing should ever link to a font CDN.
Copy one <article class="card"> block in the Liberated devices section (there is a comment
above the first one). Set the device line, the app name, one or two sentences on what it does,
and the three links (app page as the primary button, PROTOCOL.md, repo); a status badge only
while it isn't live yet. Then add a render line to og/render.sh, run it, add the ItemList
entry in the JSON-LD block in <head>, and the URL to sitemap.xml.
Devices built outside the org arrive through the I liberated a device issue form; wishes
through Request a device (.github/ISSUE_TEMPLATE/). The page links both under
Liberate a device.
Badges (only shown on cards that aren't live yet):
| class | meaning |
|---|---|
live |
deployed and usable — the default, no badge rendered |
soon |
works on hardware, publishing in progress |
wip |
in development |
plan |
planned |
python3 -m http.server 8000 # http://localhost:8000