Build, deploy, and manage AI agents that automate your workflows.
- Framework: TanStack Start (React 19, SSR)
- Styling: Tailwind CSS v4 + shadcn/ui
- Icons: Phosphor Icons
- Auth: Supabase Auth (Google OAuth)
- Monorepo: Turborepo + pnpm workspaces
clawbuilder/
├── apps/web/ # Main web application
│ └── src/
│ ├── lib/ # Supabase clients, auth utilities
│ ├── routes/ # TanStack Router file-based routes
│ └── router.tsx # Router config with auth context
├── packages/ui/ # Shared UI components (shadcn/ui)
│ └── src/
│ ├── components/
│ ├── hooks/
│ ├── lib/
│ └── styles/
└── turbo.json
- Node.js 20+
- pnpm 9+
# Install dependencies
pnpm install
# Copy environment template and fill in your Supabase credentials
cp apps/web/.env.example apps/web/.env.localEdit apps/web/.env.local with your Supabase project URL and anon key:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
- Enable Google provider under Authentication > Providers in your Supabase dashboard
- Add
http://localhost:3000/auth/callbackto allowed redirect URLs - Set up Google OAuth credentials (client ID + secret) in Google Cloud Console
pnpm devThe app starts at http://localhost:3000.
Add shadcn components from the root of the web app:
pnpm dlx shadcn@latest add button -c apps/webComponents are placed in packages/ui/src/components/ and imported as:
import { Button } from "@workspace/ui/components/button"| Command | Description |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Build all packages |
pnpm lint |
Lint all packages |
pnpm typecheck |
TypeScript check |
pnpm format |
Format with Prettier |
pnpm test:unit |
Run unit tests (Vitest) |
pnpm test:e2e |
Run E2E tests (Playwright) |