Personal infrastructure for TypeScript projects: shared lint/format/TS presets (published to npm under @infra-x/*) and project starters.
Published to npm.
| Package | Purpose |
|---|---|
@infra-x/code-quality |
Composable oxlint + oxfmt presets |
@infra-x/tsconfig |
DSL-based tsconfig.json generator (replaces typescript-config) |
@infra-x/typescript-config |
Legacy recipes — superseded by @infra-x/tsconfig, kept for existing consumers |
npm install -D @infra-x/code-quality @infra-x/tsconfigAll packages run on Node 20+ and Bun.
Fetched via giget. Each starter is self-contained with its own lockfile and toolchain.
| Starter | For | Stack |
|---|---|---|
cli |
Publishable CLI tools | Bun dev · Node publish · citty · tsdown |
server |
HTTP services | Bun · Hono · zod · Drizzle · bun:sqlite |
web |
Quick prototype UIs | Bun full-stack · React 19 · Tailwind v4 |
fullstack |
Production-grade monorepo | pnpm · Turborepo · Next.js 16 · Drizzle · Better Auth · shadcn/ui |
bunx giget@latest gh:oNo500/infra-code/starters/cli my-cli
bunx giget@latest gh:oNo500/infra-code/starters/server my-api
bunx giget@latest gh:oNo500/infra-code/starters/web my-ui
bunx giget@latest gh:oNo500/infra-code/starters/fullstack my-appSee each starter's own README for specific scripts and constraints.
This repository is Bun-driven end to end.
bun install # install packages/* deps at the root
bun run build # bun --filter='*' run build
bun run typecheck
bun run lint
bun run format- Packages live under
packages/*and are part of the root Bun workspace. They must stay Node-compatible — source code importsnode:*only;tsconfig.jsonuses"types": ["node"]to blockBun.*usage at compile time. - Starters live under
starters/*and are not part of the workspace. Each carries its own lockfile and toolchain —bun installfor bun-based starters (cli/server/web),pnpm installforfullstack. See each starter's README. - Releases use changesets. Run
bunx changesetto record a bump, commit the file, and push tomaster. CI opens a "Version Packages" PR; merging it publishes to npm. Don't runbunx changeset versionlocally — see CONTRIBUTING.md.
- The
@infra-x/eslint-config,@infra-x/eslint-config-test, and@infra-x/create-eslint-configpackages were retired in favour of@infra-x/code-quality. Their last working source is archived at git tagarchive/eslint-config-v0.1.13; published versions remain available on npm.
MIT — see LICENSE.