@@ -13,7 +13,7 @@ List of options:
1313
1414Web Frontend
1515
16- - TanStack Router (selected) - Modern type-safe router for React
16+ - TanStack Router - Modern type-safe router for React
1717- React Router - Declarative routing for React
1818- TanStack Start - Full-stack React and Solid framework powered by TanStack Router
1919- Next.js - React framework with hybrid rendering
@@ -36,16 +36,16 @@ Backend
3636- Express - Popular Node.js framework
3737- Fastify - Fast, low-overhead web framework for Node.js
3838- Convex - Reactive backend-as-a-service
39- - Fullstack Next.js (unavailable) - Use Next.js built-in API routes
40- - Fullstack TanStack Start (unavailable) - Use TanStack Start's built-in API routes
39+ - Fullstack Next.js - Use Next.js built-in API routes
40+ - Fullstack TanStack Start - Use TanStack Start's built-in API routes
4141- No Backend - Skip backend integration (frontend only)
4242
4343Runtime
4444
4545- Bun (selected) - Fast JavaScript runtime & toolkit
4646- Node.js - JavaScript runtime environment
4747- Cloudflare Workers - Serverless runtime for the edge
48- - No Runtime (unavailable) - No specific runtime
48+ - No Runtime - No specific runtime
4949
5050Api
5151
6565
6666- Drizzle (selected) - TypeScript ORM
6767- Prisma - Next-gen ORM
68- - Mongoose (unavailable) - Elegant object modeling tool
69- - No ORM (unavailable) - Skip ORM integration
68+ - Mongoose - Elegant object modeling tool
69+ - No ORM - Skip ORM integration
7070
7171Db Setup
7272
7373- Turso - Distributed SQLite with edge replicas (libSQL)
74- - Cloudflare D1 (unavailable) - Serverless SQLite-compatible database for Cloudflare Workers
75- - Neon Postgres (unavailable) - Serverless Postgres with autoscaling and branching
76- - Prisma PostgreSQL (unavailable) - Managed Postgres via Prisma Data Platform
77- - MongoDB Atlas (unavailable) - Managed MongoDB clusters in the cloud
78- - Supabase (unavailable) - Local Postgres stack via Supabase (Docker required)
79- - PlanetScale (unavailable) - Postgres & Vitess (MySQL) on NVMe
80- - Docker (unavailable) - Run Postgres/MySQL/MongoDB locally via Docker Compose
74+ - Cloudflare D1 - Serverless SQLite-compatible database for Cloudflare Workers
75+ - Neon Postgres - Serverless Postgres with autoscaling and branching
76+ - Prisma PostgreSQL - Managed Postgres via Prisma Data Platform
77+ - MongoDB Atlas - Managed MongoDB clusters in the cloud
78+ - Supabase - Local Postgres stack via Supabase (Docker required)
79+ - PlanetScale - Postgres & Vitess (MySQL) on NVMe
80+ - Docker - Run Postgres/MySQL/MongoDB locally via Docker Compose
8181- Basic Setup (selected) - No cloud DB integration
8282
8383Web Deploy
@@ -87,13 +87,13 @@ Web Deploy
8787
8888Server Deploy
8989
90- - Cloudflare (unavailable) - Deploy to Cloudflare Workers using Alchemy
90+ - Cloudflare - Deploy to Cloudflare Workers using Alchemy
9191- None (selected) - Skip deployment setup
9292
9393Auth
9494
9595- Better-Auth (selected) - The most comprehensive authentication framework for TypeScript
96- - Clerk (unavailable) - More than authentication, Complete User Management
96+ - Clerk - More than authentication, Complete User Management
9797- No Auth - Skip authentication
9898
9999Payments
@@ -165,7 +165,7 @@ If following Better T Stack scaffolding:
165165` rm -rf apps/web/components.json apps/web/src/components/ui `
166166
167167```
168- cd apps/web && bunx --bun shadcn@latest create --preset "https://ui.shadcn.com/init?base=base&style=maia&baseColor=neutral&theme=neutral&iconLibrary=hugeicons&font=figtree&menuAccent=subtle&menuColor=default&radius=default&template=start" --template start
168+ cd apps/web && bunx --bun shadcn@latest create --preset "https://ui.shadcn.com/init?base=base&style=maia&baseColor=neutral&theme=neutral&iconLibrary=hugeicons&font=figtree&menuAccent=subtle&menuColor=default&radius=default&template=start" --template start .
169169```
170170
171171Add all ShadCN components
@@ -177,3 +177,60 @@ Add all ShadCN components
177177Set up Storybook through their wizard
178178
179179` bunx create storybook@latest `
180+
181+ ## Linting
182+
183+ If ultracite had troubles installing, run the following:
184+
185+ ` bunx ultracite init --pm bun --frameworks "react" --editors vscode --integrations lefthook `
186+
187+ Add the following scripts to the root package.json:
188+
189+ ```
190+ "prepare": "lefthook install && effect-language-service patch",
191+ "check": "biome check",
192+ "check-types": "bun run --filter '*' check-types",
193+ "fix": "biome check --write",
194+ "test:unit": "bun run --filter '*' test:unit"
195+ ```
196+
197+ ## Setup CI
198+
199+ Sample Code Quality workflow:
200+
201+ ```
202+ name: Code Quality
203+
204+ on:
205+ push:
206+ branches: [main]
207+ pull_request:
208+ branches: [main]
209+
210+ jobs:
211+ quality:
212+ name: Code Quality
213+ runs-on: ubuntu-latest
214+ steps:
215+ - uses: actions/checkout@v4
216+
217+ - uses: oven-sh/setup-bun@v2
218+ with:
219+ bun-version: latest
220+
221+ - name: Install dependencies
222+ run: bun install --frozen-lockfile
223+
224+ - name: Lint
225+ run: bun run check
226+
227+ - name: Type check
228+ run: bun run check-types
229+
230+ - name: Unit tests
231+ run: bun run test:unit
232+ ```
233+
234+ ## Gotchas
235+
236+ If using Drizzle + Alchemy, be sure to run ` bun db:generate ` to generate the schema first.
0 commit comments