type: architecture
status: active
timestamp: 2026-06-24
tags: [javascript, typescript, stack, frameworks, libraries, tooling]
status: active
timestamp: 2026-06-24
tags: [javascript, typescript, stack, frameworks, libraries, tooling]
JavaScript/TypeScript Minimalist & Modern Stack
Minimalist stack for JavaScript/TypeScript and dev tools for JS/TS.
JavaScript/TypeScript Modern Stack
- Runtime Environment: Node.js (v20+ LTS) for general production runtimes, and Bun for local scripts and ultra-fast command execution.
- Chosen over Deno for production stability, mature npm package ecosystem, and universal support across hosting providers.
- Package Manager: pnpm
- Chosen over npm/yarn due to strict non-flat node_modules structure (avoiding phantom dependencies), content-addressable storage (saving disk space), and superior monorepo workspace support.
- Frontend Framework / SPA: React with Vite
- Chosen over Next.js/Remix for browser-rendered SPAs because it compiles to pure static HTML/JS/CSS, requires no server runtime, has zero hosting cost on CDNs, and offers unmatched dev server speed.
- Content-Driven / Static Sites: Astro
- Chosen over Next.js/Gatsby for websites and blogs because it compiles to zero client-side JavaScript by default (island architecture), loads instantly, is serverless/static-first, and integrates seamlessly with any UI framework.
- Full-Stack / Hybrid Framework: Next.js (App Router)
- Chosen only when dynamic server-side rendering (SSR), middleware, or React Server Components are strictly needed. It is configured with static HTML export (
output: 'export') where possible to run serverless on Cloudflare Pages, avoiding dedicated Node.js server instances.
- Chosen only when dynamic server-side rendering (SSR), middleware, or React Server Components are strictly needed. It is configured with static HTML export (
- API/Microservices Framework: Hono
- Chosen over Express/Fastify because of its zero-dependency, ultra-light footprint, native TypeScript type-safety, and out-of-the-box compatibility with Edge/Serverless runtimes (Cloudflare Workers/Pages).
- Styling Solution: Tailwind CSS
- Chosen over Vanilla CSS or CSS-in-JS because of its utility-first class model which scales CSS size logarithmically, rapid styling capabilities, and zero runtime CSS-in-JS performance penalty.
- Database Client/ORM: Drizzle ORM
- Chosen over Prisma/TypeORM because it operates as a lightweight, SQL-like query builder, avoiding heavy code-generation schemas, providing native TypeScript type-safety, and running smoothly on Edge/Workers.
- Linter & Formatter: Biome
- Chosen over ESLint/Prettier because it combines linting, formatting, and import sorting into a single binary written in Rust that is 100x faster, requiring zero multi-tool configuration.
- Bundler & Dev Server: Vite
- Chosen over Webpack due to its extremely fast dev server boot times leveraging native browser ES Modules and fast production bundling via Rollup.
- Test Runner: Vitest
- Chosen over Jest because of its drop-in compatibility with Jest APIs, faster execution times, out-of-the-box ESM/TypeScript support, and shared configuration with Vite.