Included Tools

Overview of the tools and technologies included in every matt-init project


Core Stack (Every Project)

Next.js 15

  • What it is: React framework with App Router, Server Components, and modern features
  • Why I chose it: Production-ready, excellent DX, strong ecosystem, and I already know it
  • Version: 15.3.2 with Turbopack

TypeScript

  • What it is: Typed superset of JavaScript
  • Why I chose it: Catches errors early, improves code quality, excellent IDE support
  • Configuration: Strict mode enabled with path aliases (~/ instead of ../../../)

Tailwind CSS v4

  • What it is: Utility-first CSS framework
  • Why I chose it: Rapid styling, consistent design, excellent developer experience
  • Configuration: CSS-based configuration (no separate config file needed)

ESLint + @antfu/eslint-config

  • What it is: Comprehensive linting setup with opinionated rules
  • Why I chose it: Enforces code quality, catches common mistakes, formats code consistently
  • Includes: React rules, TypeScript rules, import sorting, filename conventions

Environment & Validation

Zod

  • What it is: TypeScript-first schema declaration and validation library
  • Why I chose it: Type-safe environment variables, runtime validation, great DX
  • Usage: Environment variable validation in src/lib/env.ts

Environment Management

  • What it is: Type-safe environment variable handling
  • Why I chose it: Fail-fast on missing config, prevents runtime errors, godsend in production
  • Files: .env, .env.example, src/lib/env.ts

Development Tools

VS Code Integration (Optional)

  • What it is: Workspace settings and recommended extensions
  • Why I chose it: Consistent team experience, auto-formatting, helpful extensions
  • Includes: ESLint, Tailwind IntelliSense, TypeScript optimizations

Nix Development Environment (Optional)

  • What it is: Reproducible development shell with all dependencies
  • Why I chose it: Consistent environment across machines, version pinning
  • Includes: Node.js, pnpm, database tools (when backend enabled)

Backend Stack (Optional)

Drizzle ORM

  • What it is: TypeScript ORM with excellent developer experience
  • Why I chose it: Type-safe database queries, excellent migrations, lightweight
  • Learn more: Drizzle documentation

Turso Database

  • What it is: Edge-compatible SQLite database
  • Why I chose it: Fast, scalable, works everywhere, great for development
  • Learn more: Database documentation

Better Auth

  • What it is: Modern authentication library for TypeScript
  • Why I chose it: Type-safe, framework agnostic, extensive provider support
  • Learn more: Better Auth documentation

Why These Tools?

There's no method to my madness, these tools were chosen truly based on my personal preferences and experience. I wanted to create a stack that I would find myself throwing together during a weekend project, or something I would use to build a side project. This probably means this isn't the most opimized or efficient stack, but it is one that I know works well together and provides a solid developer experience.

What's NOT Included

UI Component Libraries

  • No shadcn/ui, Chakra UI, or other component libraries by default
  • You can add these later based on your needs (they are also in the roadmap, eyes peeled!)

State Management

  • No Redux, Zustand, or other global state libraries
  • Start with React's built-in state, add complexity only when needed

Testing Frameworks

  • No Jest, Vitest, or testing libraries by default
  • Add testing setup based on your project requirements
  • Writing unit tests triggers a post-trauma response in me, so I don't include them here

Additional Databases

  • Only Turso (SQLite) is currently implemented
  • Neon (Postgres) and Docker Postgres are planned for future releases

Next Steps