r-portas/app-template

An opinionated app template built using TanStack Start, Bun, TailwindCSS and shadcn/ui

★ 0Forks 0TypeScriptGitHub ↗Compare
template

README

app-template

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.md along with this note:

  • With Claude Code — run /new-app from 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.

Prerequisites

  • 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

Documentation

  • 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:

Getting Started

# 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 update

Environment variables

Environment variables can be configured in one of two files:

  • .env for non-secret configuration, this is committed in git
  • .env.local for secret configuration, this is gitignored. Copy .env.local.example to get started.

Common Tasks

Pull changes from the template

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/main

Working with AI agents

Only 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 --global

Agent conventions live in CLAUDE.md, which points at docs/conventions.md for the rules that apply to everyone.

Contributors

r-portas

Issues