Skip to main content
luke@terminal:/$ ls
luke@terminal:/projects/projex$ cat projex.md

Projex

[active](hybrid)

Project showcase framework for personal sites - Show Everything You Ship.

Pre-built project cards with automatic data fetching from GitHub, npm, and Product Hunt

stats:

stack:
TypeScript
React
Vitest
ESLint

background:

It started with a simple question: how do I showcase my projects on my personal site in a structured way? I asked AI, did some research, and kept getting the same answer - Most developers just build a custom solution. That struck me as strange. If everyone building a personal site needs a project showcase, why is everyone building the same thing from scratch? That gap felt like an opportunity.

why:

Projex is my attempt to solve that problem once and for all. A shadcn-style component library that gives developers pre-built project cards with automatic data fetching from GitHub, npm, and Product Hunt. But it was also about more than the problem I was solving. I wanted to build something that other people could actually use. My first real OSS project. One small step toward building something with my name on it.

struggles:

[challenge]OIDC trusted publishing took several failed attempts before working it out
[challenge]VitePress on Vercel silently 404s if your output directory or routing config is even slightly wrong
[challenge]Started with a split CLI/core architecture, merged it back — premature separation added complexity
[challenge]Once I started using this library on my own site I started discovering a lot of UX problems that I was overlooking as the author.
[learning]OIDC trusted publishing is worth the setup pain — no secrets to rotate, no tokens to leak
[learning]Architecture decisions made on day one are expensive to undo. Bias toward simplicity when possible
[learning]AST manipulation treats code as structured data. ts-morph handles TypeScript AST manipulation cleanly.

timeline:

2026-02-21Monorepo scaffolded with pnpm workspaces, GitHub API integration wired up
2026-02-22Added NPM registry and Product Hunt as data sources alongside GitHub
2026-02-23VitePress docs site live with interactive examples
2026-03-08Rebranded to Projex — 1.0.0 shipped with OIDC publishing, no more NPM_TOKEN
2026-03-08GitHub Releases now created automatically as part of the publish pipeline
2026-03-26Officially made Projex public on Github 🎉
2026-04-16Shipped v1.3.0 with new CLI functionality. No more editing projex config file.
2026-04-18Shipped v1.4.0 — turnkey SmartProjectGrid component, tagged-union stats typing, structured fetch errors, and split the CLI into its own export.
2026-08-08Shipped v1.5.0 — code-review follow-ups: hardened stats type safety across every consumer, showSort now actually sorts, and moved CLI deps out of the main bundle.
luke@terminal:/projects/projex$ git log --oneline -5
aa51643chore: Update release-manager agent definition and adding CONTEXT.md2026-08-08T22:08:09Z
1d36484feat: #19 add data-driven ProjectTypeFilterBar and ProjectStatusFilterBar2026-08-08T22:02:10Z
3855da4feat: #18 add getUniqueTypes/getUniqueStatuses helpers with canonical-order constants2026-08-08T21:32:59Z
5639749chore(release): bump version to 1.5.02026-08-08T20:45:05Z
8141c17fix: #8 narrow ProjectStats union in all consumers via getStatEntries2026-08-08T20:33:40Z