first commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# Cursor Rules for PWA React App
|
||||
|
||||
## Component Development Guidelines
|
||||
|
||||
### Structure
|
||||
- Use functional components with TypeScript
|
||||
- Follow the folder structure: components should be in `src/components/`
|
||||
- Use PascalCase for component names
|
||||
- Create separate files for each component
|
||||
|
||||
### Code Style
|
||||
- Use TypeScript for type safety
|
||||
- Use functional components with hooks
|
||||
- Prefer named exports for components
|
||||
- Use arrow functions for component definitions
|
||||
- Keep components small and focused (single responsibility)
|
||||
|
||||
### Styling
|
||||
- Use Tailwind CSS classes for styling
|
||||
- Use `cn()` utility from `@/lib/utils` for conditional classes
|
||||
- Prefer shadcn/ui components when available
|
||||
- Use CSS variables for theming (defined in globals.css)
|
||||
- Support RTL direction (Persian)
|
||||
|
||||
### State Management
|
||||
- Use Jotai atoms for global state (in `src/atoms/`)
|
||||
- Use React hooks (useState, useEffect) for local component state
|
||||
- Custom hooks should be in `src/hooks/`
|
||||
|
||||
### API & Services
|
||||
- All Supabase calls should go through `src/services/supabase.ts`
|
||||
- Create custom hooks for data fetching (e.g., `useRequests`, `useChat`)
|
||||
- Handle loading and error states
|
||||
|
||||
### Routing
|
||||
- Use React Router v6+
|
||||
- Use lazy loading for route components
|
||||
- Wrap protected routes with `<ProtectedRoute>` component
|
||||
- Use `useNavigate` for programmatic navigation
|
||||
|
||||
### Forms
|
||||
- Use controlled components with useState
|
||||
- Validate inputs before submission
|
||||
- Show error messages with Toast notifications
|
||||
- Disable submit button during loading
|
||||
|
||||
### Accessibility
|
||||
- Use semantic HTML elements
|
||||
- Add proper labels for form inputs
|
||||
- Ensure keyboard navigation works
|
||||
- Use ARIA attributes when needed
|
||||
|
||||
### Performance
|
||||
- Use React.memo for expensive components when needed
|
||||
- Implement lazy loading for routes
|
||||
- Optimize images and assets
|
||||
- Use Suspense boundaries
|
||||
|
||||
### TypeScript
|
||||
- Define types for all props
|
||||
- Use interfaces for object types
|
||||
- Avoid `any` type, use `unknown` if needed
|
||||
- Export types from service files
|
||||
|
||||
### File Organization
|
||||
- Keep related files together
|
||||
- Use index files for clean imports when appropriate
|
||||
- Separate concerns (UI, logic, data)
|
||||
|
||||
### Best Practices
|
||||
- Always handle async operations with try/catch
|
||||
- Show loading states during async operations
|
||||
- Provide user feedback with Toast notifications
|
||||
- Clean up subscriptions and effects properly
|
||||
- Use meaningful variable and function names in Persian context
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user