Files and Directories
General Files
- Use lowercase and hyphen-separated names (kebab-case) for files and directories
- ✅
user-profile.ts - ❌
UserProfile.ts
- ✅
- Group related files in directories with descriptive plural names
- ✅
components,services,utils - ❌
component,util
- ✅
Special Files
- Configuration files should follow framework conventions
- ✅
next.config.mjs,tailwind.config.js
- ✅
- Test files should mirror source files with
.testor.specsuffix- ✅
user-service.test.tsforuser-service.ts
- ✅
- Database migration files should include timestamp and description
- ✅
20241017124431_add_documents_and_insights.sql
- ✅
Code Symbols
Variables and Functions
- Use camelCase for variables and function names
- ✅
fetchUserData,isLoading,handleSubmit - ❌
FetchUserData,is_loading
- ✅
- Boolean variables should use is/has/should prefix
- ✅
isVerifyEmailEnabled,hasPermission,shouldDisplay
- ✅
- Async functions should use verb prefixes suggesting async
- ✅
fetchData,createUser,updateProfile
- ✅
Classes and Types
- Use PascalCase for:
- Classes:
Config,Client,ResponseAPI - Interfaces:
TSurveySummaryResponse,ApiConfig - Type aliases:
TResponseData,TJsTrackProperties
- Classes:
- Prefix types with T and interfaces with I (when helpful)
- ✅
TStats,TResponseData,IApiConfig
- ✅
- Enum names should be PascalCase, values in UPPER_SNAKE_CASE
Constants
- Use UPPER_SNAKE_CASE for constant values
- ✅
API_TIMEOUT,MAX_RETRIES,CONTAINER_ID
- ✅
- Use PascalCase for constant references/objects
- ✅
ErrorCodes,Config
- ✅
Database Models
- Use PascalCase singular form for model names
- ✅
Survey,Response,Document
- ✅
- Use camelCase for field names
- ✅
createdAt,environmentId,isSpam
- ✅
- Use snake_case for database column names
- ✅
created_at,updated_at
- ✅
Components
- Use PascalCase for React components and their files
- ✅
SurveyCard.tsx,UserProfile.tsx
- ✅
- Component-specific types should be prefixed with component name
- ✅
SurveyCardProps,UserProfileData
- ✅
API and Endpoints
- Use kebab-case for API endpoints
- ✅
/api/user-profile,/api/survey-responses
- ✅
- Use camelCase for query parameters
- ✅
/api/surveys?pageSize=10&sortOrder=desc
- ✅
Schema and Validation
- Prefix Zod schemas with Z
- ✅
ZSurvey,ZDocument,ZInsight
- ✅
- Use descriptive names for validation schemas
- ✅
ZUpdateDocumentAction,ZGenerateDocumentObjectSchema
- ✅
Error Handling
- Suffix error classes with “Error”
- ✅
ValidationError,DatabaseError,AuthenticationError
- ✅
- Use descriptive names for error types
- ✅
SURVEY_NOT_FOUND,INVALID_RESPONSE
- ✅
Best Practices
- Keep names descriptive but concise
- Be consistent within each context
- Follow existing patterns in the codebase
- Use full words instead of abbreviations unless widely accepted
- ✅
configurationvs ❌config(except in standard terms) - ✅
id,url(standard abbreviations are acceptable)
- ✅