Source for the organization landing portal at https://pydevices.github.io/.
This repository holds no content of its own. Everything on the page is
generated from the .github repository, and the ecosystem pitch lives in the
org profile and
pydevices/docs/ecosystem.md.
What follows is the mechanics.
| Path | Role |
|---|---|
index.html |
The portal page. The regions between <!-- PYDEVICES-…: START/END --> markers are generated — edit the database, not the markup. |
img/logo.svg |
Brand mark, synced from dotgithub/assets/img/. |
vendor/pydevices-chrome/ |
Shared chrome, synced from dotgithub/assets/: site.css, site-chrome.js, theme-toggle.js, tree-nav.js. |
.nojekyll |
Bypasses Jekyll on GitHub Pages. |
Every landing page in the organization — this portal and the 15 per-repo
.site/index.html files — is rendered from
data/repos_db.json
by
scripts/generate_sites.py.
That database is the single source of truth for tiers, headlines, descriptions,
and CTA buttons.
The generator resolves sibling repositories relative to its own location, so run it from a workspace where the repos are checked out side by side:
python3 dotgithub/scripts/generate_sites.pyIt rewrites only the marked regions, syncs the chrome assets, and is idempotent —
running it twice produces no second diff. Repos it cannot find are skipped with a
[SKIP] line. It also writes the markdown ecosystem map into
dotgithub/profile/README.md and pydevices/docs/ecosystem.md.
Regeneration is deliberately manual — the database changes rarely, and running the generator is a one-line step when it does. It validates the database on every run and exits non-zero on a malformed entry, so the check happens at the moment you would notice it.
Pushes to main publish the repository root to GitHub Pages at
https://pydevices.github.io/. There is no build step.