type: decision
status: active
timestamp: 2026-06-22
tags: [decision, family-data, registry, dynamic, auto-discovery, single-source]

Dynamic family-data registry: @chirag127/astro-shell/family-data + auto-discovery cron

Dynamic registry for constantly changing family inventory every app must read from a SINGLE dynamic registry instead of hardcoding the list. Registry lives in `@chirag127/astro-shell/family-data.ts` (TS module). A daily GH Action scans `chirag127/*` repos via the GH API, classifies each by slug suffix (-app / -npm-pkg / -api / -book / -ext / etc.), regenerates family-data.ts, commits + bumps astro-shell version, triggers Renovate auto-PR across all consuming apps. Zero manual edit. Surfaces consuming this registry: footer Family column / sidebar ''other apps'' / home-app index pages / packages-catalog auto-discovery / API hub aggregator at data.oriz.in.

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:

Auto-discovery cron

scripts/discover-family.mjs (in astro-shell-npm-pkg repo OR master repo) runs on schedule:

  1. GH Action workflow daily at 06:00 IST OR on repository_dispatch from any chirag127/* repo’s create-trigger
  2. Calls gh api 'users/chirag127/repos?per_page=100' --paginate to enumerate all chirag127 repos
  3. 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
  4. Extracts metadata from each repo’s package.json (or README frontmatter): name, tagline, version, last-publish
  5. Regenerates family-data.ts if diff vs current
  6. If changed: bumps astro-shell minor version + commits + publishes to npm
  7. Renovate Bot then opens a PR in every consuming app to bump astro-shell dep

Surfaces consuming the registry

Future-proofing

When you create a new repo:

  1. gh repo create chirag127/<slug>-<suffix> (already in the scaffolding scripts)
  2. Discovery cron picks it up within 24h
  3. astro-shell bumps + Renovate cascades dep updates
  4. 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:

If a value changes frequently AND lives in multiple apps ? it goes in family-data.ts (or its respective shared package).

Cross-refs


Edit on GitHub · Back to index