AGENTS.md
Agents Guidelines
Build, Lint, Test Commands
- Dev (frontend + backend):
npm run dev - Lint:
npm run lint(ESLint only; no separate test runner configured) - Build:
npm build - Note: No test runner found. Only ESLint/Prettier for code quality.
Code Style & Conventions
Imports & Organization
- Use path aliases:
@/components,@/lib,@/types,@/hooks(defined intsconfig.json) - Group imports: external → aliases → relative paths
- No comments unless explicitly requested
TypeScript & Types
- Strict mode enabled (
tsconfig.json) - Use
Id<'tableName'>for Convex document IDs - Define interfaces for component props (
XxxProps) - Use discriminated unions with
as constfor literals
React Components
- Client components: Add
"use client"directive - Hooks called at top level before early returns
- Functional components with TypeScript interfaces
- Props interfaces:
interface XxxProps { ... }
Formatting
- Prettier configured (
.prettierrcis empty, uses defaults) - Tailwind CSS for styling (integrated with Next.js)
- Use CVA (class-variance-authority) for variant-based components
Convex Backend
- File-based routing: public functions in
convex/, internal prefixed functions separate - Function syntax: Always use new syntax with
query,mutation,actionwrappers - Validators: Always include
argsandreturnsvalidators (usev.null()if no return) - Error handling: Throw errors for validation failures; Convex handles serialization
- Types: Use
Id<'table'>,Doc<'table'>,Record<Key, Value>from_generated/dataModel
Cursor Rules
See .cursor/rules/convex_rules.mdc for comprehensive Convex backend guidelines.
Key Libraries
- Frontend: Next.js 15, React 19, TailwindCSS 4, Radix UI, HeroUI
- Backend: Convex (database + server logic), Clerk (auth)
- Forms: React Hook Form, Zod validation
- Email: React Email, Resend
- Internationalization: next-intl (English & Romanian)