Auto-discovery catalog of every
@chirag127/oriznpm package — one card per package, built from the live npm registry.
The oriz fleet publishes a growing set of @chirag127/oriz-* npm packages, and keeping a hand-maintained list of them in sync is a losing battle. This site makes the npm registry the single source of truth: a build-time discovery script scans npm for every matching package and writes data/packages.json, and the Astro site renders a searchable card per package with category and per-package detail pages. Publish a new package and it shows up on the next build — no manual edits.
Live site: packages.oriz.in · Repo: github.com/chirag127/packages
⭐ If this is useful, please star the repo — it helps others find it.
flowchart LR
NPM([npm registry]) -->|scan @chirag127/oriz-*| Discover["scripts/discover.mjs"]
Discover -->|write| Data["data/packages.json"]
Data --> Astro["Astro build<br/>src/pages"]
Astro --> Index["index — all packages"]
Astro --> Cat["category/[cat]"]
Astro --> Detail["p/[slug] — per-package"]
Astro -->|static output| CF["Cloudflare Pages<br/>packages.oriz.in"]
pnpm dev / pnpm build both run discover first, so the data is always refreshed before the site is generated. Output is fully static and deploys to Cloudflare Pages.
- Zero-maintenance catalog — packages are discovered from npm, not hand-listed.
- Per-package detail routes (
p/[slug]) and category pages (category/[cat]). - Search across the catalog.
- Static output — fast, cacheable, cheap to host.
- Shared oriz chrome via
@chirag127/astro-chromefor consistent header/footer/nav across the fleet.
- Astro 6 — static site generation, per-package + per-category routes.
- TypeScript — data layer (
src/lib/data.ts) and typechecking (astro check). - pnpm (v10) — package manager; Node >= 22.12.
@chirag127/astro-chrome— shared layout/nav components.- Inter / Inter Tight / JetBrains Mono (Fontsource) + sharp for images.
- Cloudflare Pages — hosting (
wrangler.toml), deployed via GitHub Actions.
src/
pages/ # routes: index, p/[slug], category/[cat], + static pages
components/ # Astro components — Header, Footer, Sidebar, PackageCard, Layout
lib/data.ts # loads + types the generated catalog
styles/global.css
scripts/discover.mjs # npm registry scanner → data/packages.json
data/packages.json # generated catalog data (source of truth = npm)
knowledge/ # app-specific docs
docs/ # CNAME for packages.oriz.in
astro.config.mjs · wrangler.toml
pnpm install
pnpm dev # runs discover, then astro dev
pnpm build # runs discover, then astro build (static output)
pnpm preview # preview the production build
pnpm typecheck # astro check
node scripts/discover.mjs # refresh data/packages.json onlyThis catalog is one of ~80 sites and tools in the oriz family, and it indexes the fleet's own npm packages. See the rest at blog.oriz.in.
$0 on the Cloudflare Pages free tier — static output, no server.
Issues and PRs welcome — see CONTRIBUTING.md. The catalog data is generated; to add a package, publish it to npm under @chirag127/oriz-* and it appears on the next build.
Stable and deployed at packages.oriz.in. Roadmap: richer per-package metadata (downloads, badges) and improved search.
MIT © 2026 Chirag Singhal · chirag@oriz.in
Conventional commits are the changelog.