{ "recommendations": { "convex": { "fileStructure": { "queries": "convex/{feature}/queries.ts", "mutations": "convex/{feature}/mutations.ts", "actions": "convex/{feature}/actions.ts" }, "rules": [ "Actions must include 'use node' when using Node.js packages", "Actions cannot use ctx.db directly - use ctx.runQuery or ctx.runMutation", "Queries and mutations should be transactional", "Use proper Convex pagination with cursor-based approach", "Follow schema definitions in convex/schemas/" ] }, "react": { "components": { "location": "app/components/", "styling": "Use shadcn/ui components with Tailwind CSS", "naming": "PascalCase for components, kebab-case for files" } }, "typescript": { "strict": true, "rules": [ "Use proper type imports", "Leverage path aliases (@/ prefix)", "Define proper interfaces and types in app/types/" ] }, "imports": { "preferences": [ "Use path aliases (@/components, @/lib, etc.)", "Group imports by type (React, components, utils, types)", "Avoid relative imports beyond one level" ] }, "email": { "templates": { "location": "convex/resend/emails/", "framework": "React Email components" } }, "testing": { "location": "__tests__/", "naming": "{feature}.test.ts" }, "styles": { "tailwind": { "theme": "new-york", "customization": "tailwind.config.js", "variables": "Use CSS variables for theming" } } }, "formatting": { "indentation": "spaces", "quotes": "single", "semicolons": true }, "dependencies": { "packageManager": "npm", "react": { "version": "^19.0.0", "peerDependencies": true }, "build": { "tool": "bun", "dev": "npm run dev" } } }