--- alwaysApply: true --- # Development Workflow ## Git Workflow - **Default Branch**: `main` is protected - **Workflow**: feature branches → PR → required checks → squash merge - **Commit Format**: Conventional Commits - `feat: add contact form schema` - `fix: correct Image remote pattern` - `chore: bump dependencies` ## Required Checks Before any merge: - `npm run lint` - ESLint validation - `npm run type-check` - TypeScript validation - `npm run build` - Production build (optional locally, required in CI) ## Development Commands ```bash # Setup npm ci # Install dependencies # Development npm run dev # Dev server with Turbopack npm run type-check # TypeScript validation npm run lint # ESLint validation # Build & Deploy npm run build # Production build npm run start # Preview production build npx open-next@latest build # OpenNext build npx wrangler deploy .open-next/worker # Deploy to Cloudflare ``` ## Code Quality ### TypeScript - Use strict mode (enabled in [tsconfig.json](mdc:tsconfig.json)) - Prefer type inference over explicit types - Use absolute imports with `@` alias ### ESLint - Follow Next.js ESLint config - Fix all linting errors before committing - Don't bypass checks in production builds ## Testing Strategy - **Unit Tests**: Place close to sources, name with `.test.ts` or `.test.tsx` - **E2E Tests**: Optional Playwright setup - **Manual Testing**: Test all user flows before deployment ## Pull Request Guidelines - Keep PRs small and reviewable - Include screenshots for UI changes - Update [AGENTS.md](mdc:AGENTS.md) if conventions change - Justify new dependencies in PR description - Never commit secrets or sensitive data ## Common Pitfalls to Avoid 1. Adding remote image domains without updating [next.config.ts](mdc:next.config.ts) 2. Introducing client components unnecessarily 3. Duplicating navigation in nested layouts 4. Bypassing Tailwind utilities for custom CSS 5. Forgetting to update middleware whitelist for new static assets 6. Committing secrets instead of using environment variables