Dynamic family-data registry: @chirag127/astro-shell/family-data + auto-discovery cron
Dynamic family-data registry
Decision
@chirag127/astro-shell/family-data.ts is the single dynamic registry for every entity in the chirag127/oriz family. Apps import + render from this module; never hardcode the list.
Entity types tracked:
FAMILY_APPS— every*-app(with category: hub / personal / content / tools)FAMILY_PACKAGES— every*-npm-pkg(with category: astro-* / auth-* / oriz-*)FAMILY_APIS— every*-api(with subdomain + RapidAPI link + GH Pages URL)FAMILY_BOOKS— every*-book(with channels + prices)FAMILY_EXTENSIONS— every*-ext/*-vsc-ext/*-mcp/*-cliFAMILY_SKILLS— every*-skill
Auto-discovery cron
scripts/discover-family.mjs (in astro-shell-npm-pkg repo OR master repo) runs on schedule:
- GH Action workflow daily at 06:00 IST OR on
repository_dispatchfrom anychirag127/*repo's create-trigger - Calls
gh api 'users/chirag127/repos?per_page=100' --paginateto enumerate all chirag127 repos - Classifies each repo by slug suffix:
-app?FAMILY_APPS-npm-pkg?FAMILY_PACKAGES-api?FAMILY_APIS-book?FAMILY_BOOKS-ext/-vsc-ext/-mcp?FAMILY_EXTENSIONS-skill?FAMILY_SKILLS-cli?FAMILY_CLIS
- Extracts metadata from each repo's
package.json(or README frontmatter): name, tagline, version, last-publish - Regenerates
family-data.tsif diff vs current - If changed: bumps astro-shell minor version + commits + publishes to npm
- Renovate Bot then opens a PR in every consuming app to bump astro-shell dep
Surfaces consuming the registry
- Every app's footer: Family column links to other oriz apps (mini sitemap)
- Every app's sidebar: "Browse other oriz apps" link block (where sidebar applies)
- home-app:
/apps,/tools,/books,/packages,/extensions,/apisindex pages - packages-catalog-app: auto-discovery (already wired; switches to read from this registry)
- data.oriz.in aggregator: lists all APIs (NEW app per
apis-hosting-triple-rail.md) - stats.oriz.in (planned): counts entities from this registry
Future-proofing
When you create a new repo:
gh repo create chirag127/<slug>-<suffix>(already in the scaffolding scripts)- Discovery cron picks it up within 24h
- astro-shell bumps + Renovate cascades dep updates
- Every app's footer/sidebar/index pages show the new entity
ZERO manual edits to update the family list anywhere.
Apply-everywhere principle
User mandate: "Apply this concept everywhere wherever many things are same across many apps and keep on changing."
Other dynamic registries that follow this same pattern:
- Pricing tiers ? already shared via
@chirag127/astro-billing - Auth providers ? shared via
@chirag127/auth-coreconfig - AI provider chain ? shared via
@chirag127/oriz-ai-providers(with data-repo split) - Legal page content variables ? per-app props passed to per-app legal pages
- AdSense client ID ? from env (PUBLIC_ADSENSE_CLIENT) — single env var
- Substack newsletter URL ? from FAMILY_DATA newsletter field
- GitHub Sponsors / Ko-fi URLs ? from FAMILY_DATA sponsor field
If a value changes frequently AND lives in multiple apps ? it goes in family-data.ts (or its respective shared package).
Cross-refs
- FINAL per-app visual policy ? [[decisions/frontend/final-per-app-visual-shared-behavior]]
- Footer 5-column structure ? [[decisions/frontend/footer-5-columns-responsive]]
- Stats + feeds + versioning + template ? [[decisions/content/stats-feeds-versioning-template]]
- Never hit quotas ? [[rules/never-hit-quotas]]