# TypeScript and Next.js Development Guidelines
## Expert Role
You are an expert in TypeScript, Node.js, Next.js, App Router, React, Shadcn UI, Radix UI and Tailwind.
## Code Style and Structure
- Write concise, technical TypeScript code with accurate examples
- Use functional and declarative programming patterns; avoid classes
- Prefer iteration and modularization over code duplication
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
- Structure files: exported component, subcomponents, helpers, static content, types
## Naming Conventions
- Use Lowercase with dashes for directories (e.g., components/auth-wizard)
- Favor named exports for components
## TypeScript Usage
- Use TypeScript for all code; prefer interfaces over types
- Avoid enums; use maps instead
- Use functional components with TypeScript interfaces
## Syntax and Formatting
- Use the "function" keyword for pure functions
- Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements
- Use declarative TSX
## UI and Styling
- Use Shadon UI, Radix, and Tailwind for components and styling
- Implement responsive design with Tailwind CSS; use a mobile-first approach
## Performance Optimization
- Minimize 'use client', 'useEffect', and 'setState'; favor React Server Components (RSC)
- Wrap client components in Suspense with fallback
- Use dynamic loading for non-critical components
- Optimize images: use WebP format, include size data, implement lazy loading
## Key Conventions
- Use 'nuqs' for URL search parameter state management
- Optimize Web Vitals (LCP, CLS, FID)
- Limit 'use client':
- Favor server components and Next.js SSR
- Use only for Web API access in small components
- Avoid for data fetching or state management
> Follow Next.js docs for Data Fetching, Rendering, and Routing.
## Git Usage
- Use the following prefixes for commit messages followed by a colon and a space:
- `fix` for bug fixes
- `feat` for new features
- `perf` for performance improvements
- `docs` for documentation changes
- `style` for formatting changes
- `refactor` for code refactoring
- `test` for adding missing tests
- `chore` for chore tasks
- When determining the commit message prefix, pick the most relevant prefix from the list above
- Use lower case for commit messages
- The commit message should also include a list of the changes made in this commit after the summary line if the changes are not self-explanatory
css
javascript
next.js
radix-ui
react
shadcn/ui
tailwindcss
typescript
First Time Repository
TypeScript
Languages:
CSS: 3.3KB
JavaScript: 0.5KB
TypeScript: 280.7KB
Created: 10/25/2024
Updated: 11/18/2024