This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
pnpm dev- Start all development servers using Turbopnpm build- Build all packages and applicationspnpm lint- Run linting across all packagespnpm format- Format code using Prettier
pnpm dev- Start Next.js dev server with Turbo packpnpm lint- Run Next.js lintingpnpm ts- Run TypeScript formattingpnpm better-auth:generate- Generate Better Auth schema
pnpm db:generate- Generate Prisma clientpnpm db:migrate- Run database migrations in developmentpnpm db:deploy- Deploy migrations to production
Chrome and Firefox extensions are built separately with their own package.json files in apps/chrome-extension/ and apps/firefox-extension/.
This is a TypeScript monorepo using pnpm workspaces and Turbo for task orchestration. The project is a bookmark management SaaS application called "SaveIt.now".
- apps/web - Next.js 15 web application (main SaaS product)
- apps/chrome-extension - Chrome browser extension
- apps/firefox-extension - Firefox browser extension
- apps/worker - Cloudflare Worker for background processing
- packages/database - Prisma database client and types
- packages/ui - Shared UI components using shadcn/ui
- packages/eslint-config - Shared ESLint configuration
- packages/typescript-config - Shared TypeScript configuration
Authentication: Uses Better Auth with Prisma adapter, supporting GitHub/Google OAuth, magic links, and email OTP. Includes Stripe integration for subscriptions.
Database: PostgreSQL with Prisma ORM. Schema generation and migrations managed through packages/database.
Background Jobs: Inngest for processing bookmarks, sending emails, and handling webhooks.
File Storage: AWS S3 for bookmark screenshots and media files.
Key Service Integrations:
- Stripe for payments and subscriptions
- Resend for transactional emails
- PostHog for analytics
- OpenAI and Google Gemini for AI features
- Better Auth for authentication
The application requires extensive environment variables (35+ variables) for various integrations. Check turbo.json for the complete list of required environment variables for builds.
- To get the latest deployment logs, use
flyctl logscommand for the specific app - Vercel CLI deployment commands:
vercel- Deploy the current projectvercel --prod- Deploy to productionvercel logs- View latest deployment logsvercel inspect- Get detailed deployment information and verify everything is working correctly
- Always run
pnpm tsANDpnpm lintin the folderapp/webto verify typescript working after a task
IMPORTANT - When the users write #<some-name> you SHOULD always try to find a commands inside the folder .claude/commands that match <some-name> then read the file and strictly follow the instructions. You can also search in ~/.claude/commands for user globals commands.
You SHOULD STRICTLY follow the commands of the commands at any cost.
You SHOULD ALWAYS trigger the commands usage when the query start with #.
But you SHOULD NEVER do it if the query DOESN'T START with # !
You can adopt a fan-out pattern where you spawn subagents to perform parallel isolated tasks, and then fan-in the results.
codex exec "something to do" -m gpt-5 -c model_reasoning_effort="high" --yolo