Skip to content
Create
D9 App
pages

Getting started

Scaffold a Turborepo monorepo with TanStack Start, React, TypeScript, Biome, Tailwind, shadcn and pnpm, set up for AI coding agents from the first commit.

Scaffolds a Turborepo monorepo with TanStack Start, React, TypeScript, Biome, Tailwind, shadcn and pnpm, set up for AI coding agents from the first commit.

pnpm create @draekien/d9-app my-app
cd my-app
pnpm dev

What you get

my-app/
├── apps/
│   └── web/                    TanStack Start app on Vite; `/` is a minimal page, `/examples` holds the examples
├── packages/
│   └── ui/                     shadcn components, exported as @workspace/ui
├── .agents/skills/             upgrade-dependencies skill (Codex, Cursor, Agent Skills)
├── .claude/                    rules, skills and hooks for Claude Code
├── .codex/hooks.json           hooks for Codex
├── .intent/                    TanStack Intent gate that loads skills before edits
├── AGENTS.md                   project rules for coding agents (CLAUDE.md includes it)
├── biome.json                  lint and format, plus GritQL plugins for React and TanStack rules
├── lefthook.yml                pre-commit: comment check and biome --write on staged files
├── pnpm-workspace.yaml         saveExact: true
├── turbo.json
└── package.json                packageManager: pnpm@12.11.0, engines.node >=22.18.0
ConcernTool
App frameworkTanStack Start (Router, Query, Form, Table, Hotkeys)
UIReact 19 with React Compiler
LanguageTypeScript 7
Build and testVite, Vitest
MonorepoTurborepo, pnpm workspaces
Lint and formatBiome
Git hooksLefthook
Componentsshadcn on Base UI, Hugeicons
StylingTailwind 4, Motion

Every dependency is pinned to an exact version. The project never receives an upstream release until you run the bundled upgrade-dependencies skill or change a pin yourself.