Skip to content

goosewin/blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

219 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goose.dev

TanStack Start blog for goose.dev.

Commands

bun install
bun dev
bun run build
bun run lint
bun run typecheck
bun run format

Send a newsletter for a post:

bun run newsletter -- <post-slug>

Requires jq, curl, SITE_URL, and NEWSLETTER_SECRET.

Stack

  • TanStack Start and TanStack Router
  • React 19
  • Bun
  • Tailwind CSS v4
  • MDX posts from posts/*.mdx
  • Resend newsletter endpoints
  • Vercel Analytics
  • Dynamic Open Graph images with @vercel/og

Environment

Create .env.local from .env.example.

VITE_PUBLIC_BASE_URL=https://goose.dev
RESEND_AUDIENCE_ID=
RESEND_API_KEY=
NEWSLETTER_SECRET=
SITE_URL=https://goose.dev

VITE_ values are public. Keep secrets server-only.

Deployment

Deploy on Vercel from main. The app uses TanStack Start with Nitro's Vercel preset on Vercel and Bun preset for local Bun builds. vercel.json sets Vercel's TanStack Start framework preset plus Bun runtime selection. Enable Web Analytics in the Vercel dashboard.

Manual deploy:

bun run deploy

CI

Self-hosted Woodpecker is the CI path for lint, tests, build, and automatic newsletter dispatch. See docs/ops/self-hosted-ci.md.

The pre-commit hook runs lint, format check, typecheck, tests, and build through Bun before allowing a commit.