An opinionated app template built using TanStack Start, Bun, Tailwind CSS, and shadcn/ui
New app? Set it up either way, then delete
docs/template-setup.mdalong with this note:
- With Claude Code — run
/new-appfrom a checkout of this repo. It creates the app in a new directory, so run it from the template, not from the clone you want to become your app.- By hand — work through docs/template-setup.md.
- Bun — the runtime, package manager and test runner. Install the latest version
- Git
- GitHub CLI — only to create the repo during setup, skip it for a local-only prototype
- Claude Code — optional, for the bundled agent skills
- Conventions — project structure, coding style, testing, UI, and pull request conventions
- Template updates — merging improvements from the template, and resolving the conflicts you'll hit
- Setup guides:
- Vercel static hosting — configure Vercel for static hosting of the app
- Cloudflare hosting — configure Cloudflare for hosting the app
- Drizzle SQLite — set up Drizzle with Bun's SQLite driver
# Install dependencies
bun install
# Copy the example env file and fill in any secrets
cp .env.local.example .env.local
# Start the development server
bun dev
# Build, typecheck and lint
bun run build
# Update dependencies to the latest versions
bun run updateEnvironment variables can be configured in one of two files:
.envfor non-secret configuration, this is committed in git.env.localfor secret configuration, this is gitignored. Copy.env.local.exampleto get started.
Sync improvements made to the template repository into your app after the initial clone. See docs/template-updates.md for the full flow, including how to resolve the conflicts you'll hit.
git fetch template
git log --oneline HEAD..template/main # check what will be merged
git merge template/mainOnly needed if you use Claude Code or a similar agent — the app itself doesn't depend on any of it.
# Install the shadcn/ui agent skill
bunx --bun skills add shadcn/ui --global
# Update installed skills
bunx --bun skills update --globalAgent conventions live in CLAUDE.md, which points at docs/conventions.md for the rules that apply to everyone.