Awesome Cursor Rules Collection

Showing 781-792 of 1033 matches

TypeScript
# iSuTech Coding Rules and Best Practices



## Table of Contents
1. [General Guidelines](#general-guidelines)
2. [Code Style](#code-style)
3. [React Best Practices](#react-best-practices)
4. [TypeScript Guidelines](#typescript-guidelines)
5. [State Management](#state-management)
6. [Testing](#testing)
7. [Performance](#performance)
8. [Security](#security)


<!-- > For a quick reference guide to these standards, see [@/Docs/QUICKREFERENCE.md](@/Docs/QUICKREFERENCE.md) -->


## General Guidelines

### File Organization
- One component per file
- Use meaningful file names that reflect the component's purpose
- Group related files in appropriate directories
- Maximum file size should not exceed 400 lines
- Keep components focused and single-responsibility

### Naming Conventions
- Use PascalCase for component names: `UserProfile.tsx`
- Use camelCase for file names of non-components: `useAuth.tsx`
- Use kebab-case for CSS files: `button-styles.css`
- Use descriptive names that indicate functionality

## Code Style

### Formatting
- Use 2 spaces for indentation
- Use semicolons at the end of statements
- Use single quotes for strings
- Add trailing commas in objects and arrays
- Maximum line length: 100 characters

### Comments
- Write self-documenting code
- Add comments for complex logic only
- Use JSDoc for component props and functions
- Keep comments up-to-date with code changes

## React Best Practices

### Components
- Use functional components with hooks
- Keep components small and focused
- Extract reusable logic into custom hooks
- Use proper prop typing with TypeScript
- Implement error boundaries for error handling

### Props
- Use destructuring for props
- Define prop types using TypeScript interfaces
- Provide default props when applicable
- Avoid passing unnecessary props

### Hooks
- Follow hooks rules and naming conventions
- Custom hooks should start with 'use'
- Keep hooks focused on specific functionality
- Memoize values and callbacks when needed

## TypeScript Guidelines

### Types and Interfaces
- Use interfaces for object shapes
- Use type aliases for unions and complex types
- Export types/interfaces when shared
- Use meaningful type names

### Type Safety
- Avoid using 'any' type
- Use strict type checking
- Properly type async operations
- Use generics when appropriate

## State Management

### Local State
- Use useState for simple component state
- Use useReducer for complex state logic
- Keep state as close as possible to where it's used

### Global State
- Use React Query for server state
- Follow object syntax for query configuration
- Implement proper loading and error states
- Use proper caching strategies

## Testing

### Unit Tests
- Write tests for all components
- Test component behavior and user interactions
- Use meaningful test descriptions
- Follow AAA pattern (Arrange, Act, Assert)

### Integration Tests
- Test component integration points
- Verify data flow between components
- Test error handling and edge cases

## Performance

### Optimization
- Use React.memo for expensive components
- Implement code splitting with lazy loading
- Optimize images and assets
- Monitor and optimize bundle size

### Best Practices
- Avoid unnecessary re-renders
- Use proper key props in lists
- Implement proper loading states
- Use performance monitoring tools

## Security

### Data Handling
- Sanitize user input
- Implement proper authentication
- Use HTTPS for API calls
- Follow security best practices

### Error Handling
- Implement proper error boundaries
- Log errors appropriately
- Don't expose sensitive information
- Handle API errors gracefully

## Commit Guidelines

### Commit Messages
- Use conventional commits format
- Write clear and concise messages
- Reference issue numbers when applicable
- Keep commits focused and atomic

### Version Control
- Create feature branches from main
- Keep branches up to date
- Review code before merging
- Delete branches after merging

## Documentation

### Code Documentation
- Document complex logic
- Update README.md when needed
- Document API endpoints
- Keep documentation up to date

### Component Documentation
- Document component props
- Provide usage examples
- Document side effects
- Include accessibility considerations

## Accessibility

### Guidelines
- Use semantic HTML elements
- Implement proper ARIA attributes
- Ensure keyboard navigation
- Test with screen readers

### Best Practices
- Provide alt text for images
- Use proper heading hierarchy
- Implement focus management
- Test color contrast

## CSS/Tailwind Guidelines

### Styling
- Use Tailwind CSS classes
- Follow mobile-first approach
- Maintain consistent spacing
- Use design system tokens

### Best Practices
- Keep styles modular
- Avoid !important
- Use proper responsive classes
- Follow BEM naming for custom CSS

## Code Review

### Process
- Review all code changes
- Provide constructive feedback
- Check for best practices
- Verify documentation

### Checklist
- Code follows style guide
- Tests are included
- Documentation is updated
- Performance is considered
- Security is addressed

Remember: These rules are living guidelines. They should be regularly reviewed and updated based on team feedback and project needs.
bun
css
html
javascript
react
tailwindcss
typescript
gedeza/isutech-web-aurora

Used in 1 repository

Svelte

You are an expert in JavaScript, TypeScript, and SvelteKit framework for scalable web development.

Key Principles
- Write concise, technical responses with accurate SvelteKit examples.
- Leverage SvelteKit's server-side rendering (SSR) and static site generation (SSG) capabilities.
- Prioritize performance optimization and minimal JavaScript for optimal user experience.
- Use descriptive variable names and follow SvelteKit's naming conventions.
- Organize files using SvelteKit's file-based routing system.

SvelteKit Project Structure
- Use the recommended SvelteKit project structure:
  ```
  - src/
    - lib/
    - routes/
    - app.html
  - static/
  - svelte.config.js
  - vite.config.js
  ```

Component Development
- Create .svelte files for Svelte components.
- Implement proper component composition and reusability.
- Use Svelte's props for data passing.
- Leverage Svelte's reactive declarations and stores for state management.
- Use viem for blockchain integration and wallet-related functionality.

Routing and Pages
- Utilize SvelteKit's file-based routing system in the src/routes/ directory.
- Implement dynamic routes using [slug] syntax.
- Use load functions for server-side data fetching and pre-rendering.
- Implement proper error handling with +error.svelte pages.

Server-Side Rendering (SSR) and Static Site Generation (SSG)
- Leverage SvelteKit's SSR capabilities for dynamic content.
- Implement SSG for static pages using prerender option.
- Use the adapter-auto for automatic deployment configuration.

Styling
- Use Svelte's scoped styling with <style> tags in .svelte files.
- Leverage global styles when necessary, importing them in __layout.svelte.
- Utilize CSS preprocessing with Sass or Less if required.
- Implement responsive design using CSS custom properties and media queries.

Performance Optimization
- Minimize use of client-side JavaScript; leverage SvelteKit's SSR and SSG.
- Implement code splitting using SvelteKit's dynamic imports.
- Use Svelte's transition and animation features for smooth UI interactions.
- Implement proper lazy loading for images and other assets.

Data Fetching
- Use load functions for server-side data fetching.
- Implement proper error handling for data fetching operations.
- Utilize SvelteKit's $app/stores for accessing page data and other stores.

SEO and Meta Tags
- Use Svelte:head component for adding meta information.
- Implement canonical URLs for proper SEO.
- Create reusable SEO components for consistent meta tag management.

State Management
- Use Svelte stores for global state management.
- Leverage context API for sharing data between components.
- Implement proper store subscriptions and unsubscriptions.

Forms and Actions
- Utilize SvelteKit's form actions for server-side form handling.
- Implement proper client-side form validation using Svelte's reactive declarations.
- Use progressive enhancement for JavaScript-optional form submissions.

API Routes
- Create API routes in the src/routes/api/ directory.
- Implement proper request handling and response formatting in API routes.
- Use SvelteKit's hooks for global API middleware.

Authentication
- Implement authentication using SvelteKit's hooks and server-side sessions.
- Use secure HTTP-only cookies for session management.
- Implement proper CSRF protection for forms and API routes.

Styling with Tailwind CSS
- Integrate Tailwind CSS with SvelteKit using svelte-add
- Use Tailwind utility classes extensively in your Svelte components.
- Leverage Tailwind's responsive design utilities (sm:, md:, lg:, etc.).
- Utilize Tailwind's color palette and spacing scale for consistency.
- Implement custom theme extensions in tailwind.config.cjs when necessary.
- Avoid using the @apply directive; prefer direct utility classes in HTML.

Testing
- Use Vitest for unit and integration testing of Svelte components and SvelteKit routes.
- Implement end-to-end testing with Playwright or Cypress.
- Use SvelteKit's testing utilities for mocking load functions and other SvelteKit-specific features.

Accessibility
- Ensure proper semantic HTML structure in Svelte components.
- Implement ARIA attributes where necessary.
- Ensure keyboard navigation support for interactive elements.
- Use Svelte's bind:this for managing focus programmatically.

Key Conventions
1. Follow the official SvelteKit documentation for best practices and conventions.
2. Use TypeScript for enhanced type safety and developer experience.
3. Implement proper error handling and logging.
4. Leverage SvelteKit's built-in features for internationalization (i18n) if needed.
5. Use SvelteKit's asset handling for optimized static asset delivery.

Performance Metrics
- Prioritize Core Web Vitals (LCP, FID, CLS) in development.
- Use Lighthouse and WebPageTest for performance auditing.
- Implement performance budgets and monitoring.

Refer to SvelteKit's official documentation for detailed information on components, routing, and server-side rendering for best practices. Same for viem.
css
cypress
html
java
javascript
less
playwright
react
+6 more

First seen in:

vacp2p/staking-demo-app

Used in 1 repository

TypeScript
{
  "version": "1.0",
  "language": {
    "typescript": {
      "fileExtensions": [".ts", ".tsx"],
      "importOrder": [
        "^react$",
        "^react-dom.*$",
        "^next.*$",
        "^@vercel/.*$",
        "^ai$",
        "^@radix-ui/.*$",
        "^prosemirror-.*$",
        "^@/components/.*$",
        "^@/lib/.*$",
        "^@/hooks/.*$",
        "^[./]"
      ],
      "componentStructure": {
        "order": [
          "imports",
          "types",
          "interfaces",
          "constants",
          "component",
          "exports"
        ]
      }
    }
  },
  "formatting": {
    "indentStyle": "space",
    "indentSize": 2,
    "lineWidth": 80,
    "quoteStyle": {
      "typescript": "single",
      "json": "double"
    },
    "semicolons": "always",
    "trailingComma": "all"
  },
  "components": {
    "directory": "components",
    "naming": {
      "pattern": "kebab-case",
      "exceptions": ["ui"]
    },
    "structure": {
      "ui": "components/ui",
      "icons": "components/icons.tsx",
      "shared": "components"
    }
  },
  "paths": {
    "aliases": {
      "@": ".",
      "@/components": "./components",
      "@/lib": "./lib",
      "@/hooks": "./hooks"
    }
  },
  "ignore": [
    "node_modules",
    ".next",
    "public",
    ".vercel",
    "lib/db/migrations"
  ],
  "rules": {
    "typescript": {
      "noExplicitAny": "off",
      "useFragmentSyntax": "warn",
      "noUnusedImports": "warn",
      "useArrayLiterals": "warn",
      "noNewSymbol": "warn"
    },
    "a11y": {
      "useHtmlLang": "warn",
      "noHeaderScope": "warn",
      "useValidAriaRole": {
        "level": "warn",
        "ignoreNonDom": false,
        "allowInvalidRoles": ["none", "text"]
      }
    },
    "nextjs": {
      "clientComponents": {
        "directive": "'use client'",
        "location": "top",
        "required": true
      },
      "hydration": {
        "preventMismatch": {
          "dateHandling": "useEffect",
          "windowChecks": "useEffect",
          "randomValues": "useEffect",
          "dynamicClassNames": "warn"
        },
        "suppressWarning": {
          "enabled": false,
          "message": "suppressHydrationWarning should only be used when necessary"
        }
      },
      "serverComponents": {
        "defaultServer": true,
        "asyncComponents": "preferred"
      }
    },
    "react": {
      "hooks": {
        "dependencies": "error",
        "exhaustiveDeps": "warn",
        "rulesOfHooks": "error"
      },
      "performance": {
        "useMemo": "recommended",
        "useCallback": "recommended",
        "reactMemo": "selective"
      }
    }
  }
} 
css
javascript
next.js
radix-ui
react
typescript
vercel
while-basic/celaya-chatbot

Used in 1 repository

TypeScript
# Desenvolvimento Cross-Platform com TypeScript e React

## Diretrizes Gerais de Simplificação

### 1. Remova Complexidade Desnecessária

- Elimine código redundante
- Remova funcionalidades não utilizadas
- Simplifique lógicas complexas
- Evite over-engineering
- manter logs extremamentes necessários
- Ocultar logs de sucesso (200)
- Ocultar mensagens de compilação
- Ocultar o aviso experimental do Node.js
- Manter apenas mensagens de erro importantes

### 2. Gerencie Dependências com Cuidado

- Mantenha apenas dependências essenciais
- Avalie o custo/benefício de cada pacote
- Prefira soluções nativas quando possível
- Remova dependências não utilizadas

### 3. Mantenha o Projeto Limpo

- Apague arquivos e pastas não utilizados
- Remova código comentado
- Mantenha apenas assets necessários
- Faça limpeza regular do projeto

### 4. Simplifique o package.json

- Remova scripts não utilizados
- Mantenha apenas exportações necessárias
- Organize scripts de forma clara
- Mantenha versões de dependências atualizadas

### 5. Desenvolva Componentes Eficientes

- Mantenha componentes simples e focados
- Evite props desnecessárias
- Use composição ao invés de herança
- Documente funcionalidades importantes

### 6. Monitore Padrões de Problemas

- Identifique loops de correções
- Documente soluções recorrentes
- Corrija problemas na raiz
- Evite soluções temporárias

## Processo de Desenvolvimento Incremental

1. **Evolução Gradual**:

   - Comece com uma única página funcional.
   - Adicione um componente por vez.
   - Teste cada adição antes de avançar.
   - Só adicione dependências quando absolutamente necessário.

2. **Regras de Ouro**:

   - Não adicione dependências desnecessárias.
   - Mantenha a simplicidade sempre.
   - Realize testes frequentes.
   - Faça commits pequenos e regulares.

3. **Quando Precisar Escalar**:
   - Use monorepo apenas se for realmente necessário.
   - Adicione ferramentas conforme a necessidade real.
   - Mantenha a documentação atualizada.
   - Faça mudanças incrementais.

## Configuração Inicial

### Remover Avisos Desnecessários

Para remover avisos de desenvolvimento desnecessários, configure o `next.config.js`:

```typescript
/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
};

module.exports = nextConfig;
```

### Configurar .gitignore

Mantenha o .gitignore limpo e relevante para seu projeto:

#### ✅ Regras para um .gitignore Eficiente:

1. **Mantenha Apenas o Necessário**

   - Inclua somente padrões para arquivos que existem ou podem existir no projeto
   - Remova entradas de tecnologias que não está usando
   - Evite duplicação de padrões

2. **Organize por Categorias**

   - Agrupe entradas relacionadas (ex: dependências, build, ambiente)
   - Use comentários para identificar cada seção
   - Mantenha uma ordem lógica

3. **Revise Regularmente**

   - Remova padrões de ferramentas que não usa mais
   - Atualize conforme o projeto evolui
   - Questione se cada entrada é realmente necessária

4. **Padrões Essenciais para Next.js**

   ```plaintext
   # Dependências
   node_modules

   # Next.js
   .next/

   # Ambiente
   .env*.local
   .env

   # Debug
   npm-debug.log*
   yarn-debug.log*
   yarn-error.log*

   # TypeScript
   *.tsbuildinfo
   next-env.d.ts

   # Sistema
   .DS_Store

   # Logs
   *.log
   ```

#### ❌ Evite no .gitignore:

- Padrões de ferramentas que não usa
- Duplicação de regras
- Entradas muito genéricas
- Padrões de outras tecnologias/frameworks

### Criar um Projeto Next.js Básico

```bash
npx create-next-app@latest meu-projeto --typescript --tailwind --eslint
cd meu-projeto
npm run dev
```

### Estrutura Inicial Recomendada

```plaintext
meu-projeto/
├── src/
│   ├── components/ # Componentes reutilizáveis
│   ├── pages/      # Páginas do Next.js
│   └── styles/     # Estilos globais
├── package.json
└── tsconfig.json
```

### Página Inicial

Crie uma página simples em `src/pages/index.tsx`:

```tsx
export default function Home() {
  return <h1>Bem-vindo ao meu projeto Next.js!</h1>;
}
```

### Adicionar Componentes Básicos

Exemplo: `src/components/Button.tsx`

```tsx
import React from "react";

interface ButtonProps {
  label: string;
  onClick: () => void;
}

const Button: React.FC<ButtonProps> = ({ label, onClick }) => {
  return (
    <button onClick={onClick} className="bg-blue-500 text-white p-2 rounded">
      {label}
    </button>
  );
};

export default Button;
```

### Estilização com Tailwind CSS

Adicione estilos globais em `src/styles/globals.css`:

```css
@tailwind base;
@tailwind components;
@tailwind utilities;
```

## Boas Práticas

### ✅ Faça:

- Comece com o mínimo necessário.
- Adicione funcionalidades uma por vez.
- Teste cada nova adição.
- Use TypeScript desde o início.
- Use Tailwind CSS para estilização.

### ❌ Não Faça:

- Não adicione dependências desnecessárias.
- Não crie estruturas complexas sem necessidade.
- Não use monorepo sem necessidade clara.
- Não misture múltiplas tecnologias de UI.
- Não tente implementar tudo de uma vez.

## Processo de Desenvolvimento

1. **Crie um Componente**
2. **Teste o Componente**
3. **Integre na Página**
4. **Teste Novamente**
5. **Faça o Commit**
6. **Repita o Ciclo**

## Estrutura Mínima Recomendada

```plaintext
src/
├── pages/
│   └── index.tsx # Apenas uma página inicial
└── components/
    └── Button.tsx # Um componente por vez
```

## Checklist Antes de Adicionar Algo Novo

- Isso é realmente necessário agora?
- Existe uma solução mais simples?
- Isso vai adicionar complexidade?
- Vale a pena o trade-off?

## Sinais de Alerta

- Muitos arquivos de configuração.
- Dependências não utilizadas.
- Arquivos vazios.
- Imports não utilizados.
- Código comentado em excesso.
- IDEs mostrando erros de dependências mesmo após instalação:
  - Este é um problema comum onde a IDE não reconhece imediatamente novas dependências
  - Solução: Feche e reabra o navegador/IDE
  - Na maioria dos casos, os erros desaparecem após reiniciar a IDE
  - Não é necessário reinstalar as dependências nestes casos

## Conclusão

- A simplicidade é a chave.
- Cada linha de código é uma responsabilidade.
- Menos é mais.
- Comece pequeno e cresça conforme necessário.
- Mantenha o projeto limpo e organizado.

### Estrutura Recomendada do Projeto

```plaintext
projeto/
├── .next/                  # ⚠️ no .gitignore
├── node_modules/          # ⚠️ no .gitignore
├── src/
│   ├── @types/
│   └── next-pwa.d.ts
│   ├── app/
│   │   ├── globals.css
│   │   ├── layout.tsx
│   │   └── page.tsx
│   ├── components/
│   │   └── Button.tsx
│   └── utils/
│       └── platform.ts
├── .cursorrules
├── .gitattributes
├── .gitignore
├── eslint.config.mjs
├── next-env.d.ts
├── next.config.js
├── next.config.ts
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── README.md
├── tailwind.config.ts
└── tsconfig.json
```

### Descrição da Estrutura

- **src/@types/**: Definições de tipos TypeScript
- **src/app/**: Componentes e layouts principais (App Router)
- **src/components/**: Componentes reutilizáveis
- **src/utils/**: Funções utilitárias e helpers
- **Diretórios Ignorados**:
  - `.next/`: Build e cache do Next.js (ignorado no git)
  - `node_modules/`: Dependências do projeto (ignorado no git)
- **Arquivos de Configuração**:
  - `next.config.js`: Configuração do Next.js
  - `tailwind.config.ts`: Configuração do Tailwind CSS
  - `tsconfig.json`: Configuração do TypeScript
  - `.gitignore`: Arquivos a serem ignorados pelo Git

# Ambiente de Desenvolvimento

- Sistema Operacional: macOS
- Gerenciador de Pacotes do Sistema: Homebrew (brew)
- Gerenciador de Pacotes Node: Yarn (exclusivamente)

## Gerenciamento de Dependências

### ✅ Usar Apenas Yarn 4 (Berry)

```bash
yarn deps:outdated      # Verificar e atualizar dependências interativamente
yarn up -i             # Alternativa direta para verificar atualizações
yarn up [pacote]       # Atualizar um pacote específico
yarn add [pacote]      # Instalar nova dependência
yarn add -D [pacote]   # Instalar dependência de desenvolvimento
yarn remove [pacote]   # Remover dependência
yarn                   # Instalar todas as dependências
yarn dedupe           # Remove duplicações de pacotes e otimiza dependências
```

### Comandos Específicos do Yarn 4

- `yarn up -i`: Interface interativa para atualização de dependências
- `yarn up "*" --latest`: Atualizar todas as dependências para última versão
- `yarn dlx`: Executar pacotes sem instalá-los (substitui npx)
- `yarn why [pacote]`: Verificar por que um pacote está instalado
- `yarn info [pacote]`: Ver informações detalhadas de um pacote

### Sobre yarn dedupe

O comando `yarn dedupe` é utilizado para:

- Remover versões duplicadas de pacotes
- Otimizar a árvore de dependências
- Reduzir o tamanho do node_modules
- Resolver conflitos de versões similares
- Melhorar a performance da aplicação

✅ **Quando Usar**:

- Após adicionar novas dependências
- Quando o node_modules estiver muito grande
- Se houver warnings de versões duplicadas
- Durante otimização de performance
- Antes de fazer deploy em produção

⚠️ **Cuidados**:

- Teste a aplicação após usar dedupe
- Verifique se não houve breaking changes
- Mantenha um backup do yarn.lock
- Execute em ambiente de desenvolvimento primeiro

💡 **Dica**: Use `yarn dedupe --check` para verificar duplicações sem fazer alterações

### ❌ Não Usar

- Evitar comandos npm (npm install, npm run, etc)
- Não manter package-lock.json
- Não misturar npm e yarn no mesmo projeto

## Scripts do Projeto

```bash
yarn dev                  # Ambiente de desenvolvimento
yarn build               # Build de produção
yarn start               # Iniciar em produção
yarn lint                # Executar linter
```

## Arquivos de Lock

- Manter apenas: yarn.lock
- Remover: package-lock.json

## Configuração do .gitignore para Yarn

```plaintext
# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*
```

## Instalação no macOS

- Instalado via Homebrew: `brew install yarn`
- Atualização: `brew upgrade yarn`
- Verificar versão: `yarn --version`

## Boas Práticas para macOS

1. **Sempre prefira Homebrew para instalações globais**

   - Mais confiável
   - Melhor gerenciamento de dependências
   - Atualizações mais simples
   - Menos problemas de permissão

2. **Comandos Homebrew Úteis**

   ```bash
   brew install [pacote]    # Instalar pacote
   brew upgrade [pacote]    # Atualizar pacote
   brew uninstall [pacote]  # Remover pacote
   brew doctor             # Verificar problemas
   brew update             # Atualizar Homebrew
   ```

3. **Manutenção**
   - Mantenha o Homebrew atualizado
   - Limpe pacotes antigos periodicamente: `brew cleanup`
   - Verifique dependências: `brew deps --tree [pacote]`

## Configuração do ESLint

### Configuração Recomendada

1. **Instalação das Dependências**

```bash
yarn add -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y
```

2. **Arquivo de Configuração Base**

```javascript:eslint.config.mjs
export default {
  root: true,
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:react/recommended',
    'plugin:react-hooks/recommended',
    'plugin:jsx-a11y/recommended',
    'next/core-web-vitals',
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 'latest',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint', 'react', 'jsx-a11y'],
  rules: {
    // Regras personalizadas
    'react/react-in-jsx-scope': 'off',
    'react/prop-types': 'off',
    '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
    '@typescript-eslint/no-explicit-any': 'warn',
    'no-console': ['warn', { allow: ['warn', 'error'] }],
  },
  settings: {
    react: {
      version: 'detect',
    },
  },
  ignorePatterns: [
    'node_modules/',
    '.next/',
    'out/',
    'public/',
    '*.config.js',
    '*.config.mjs',
  ],
}
```

3. **Scripts no package.json**

```json
{
  "scripts": {
    "lint": "eslint . --ext .ts,.tsx",
    "lint:fix": "eslint . --ext .ts,.tsx --fix"
  }
}
```

### Boas Práticas de Linting

✅ **Recomendado**:

- Execute o linter antes de cada commit
- Configure o auto-fix no seu editor
- Use o ESLint junto com o Prettier
- Mantenha as regras consistentes em todo o projeto
- Documente exceções às regras quando necessário

❌ **Evite**:

- Desabilitar regras do ESLint sem motivo claro
- Ignorar warnings do linter
- Misturar diferentes padrões de código
- Deixar regras conflitantes ativas

### Integração com VSCode

1. **Instale a extensão ESLint**
2. **Configure o settings.json**:

```json
{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ]
}
```

### Resolução de Problemas Comuns

1. **Conflitos com Prettier**:

   - Instale `eslint-config-prettier`
   - Adicione `prettier` ao final do array `extends`

2. **Regras Muito Restritivas**:

   - Ajuste as regras gradualmente
   - Comece com warnings antes de errors
   - Documente as razões das alterações

3. **Performance**:
   - Use `.eslintignore` para diretórios grandes
   - Configure o cache do ESLint
   - Limite o escopo da análise quando necessário

## Análise de Bundle com yarn analyze

### Configuração do Analisador de Bundle

1. **Instalação da Dependência**

```bash
yarn add -D @next/bundle-analyzer
```

2. **Configuração no next.config.js**

```javascript:next.config.js
const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
})

module.exports = withBundleAnalyzer({
  // ... outras configurações do Next.js
})
```

3. **Adicione o Script no package.json**

```json
{
  "scripts": {
    "analyze": "ANALYZE=true yarn build",
    "analyze:win": "set ANALYZE=true && yarn build" // Para Windows
  }
}
```

### Como Usar

1. **Execute o Comando**

```bash
yarn analyze
```

2. **Interpretando os Resultados**:
   - Dois relatórios serão gerados automaticamente no navegador:
     - Client bundles (`.next/analyze/client.html`)
     - Server bundles (`.next/analyze/server.html`)
   - Analise o tamanho dos módulos
   - Identifique dependências pesadas
   - Verifique código não utilizado

### Boas Práticas de Análise

✅ **Recomendado**:

- Execute a análise antes de cada deploy
- Monitore o crescimento do bundle
- Otimize dependências grandes
- Utilize code splitting quando necessário
- Remova imports não utilizados

❌ **Evite**:

- Ignorar bundles muito grandes
- Manter dependências duplicadas
- Importar bibliotecas inteiras quando necessário apenas alguns componentes
- Deixar código morto no bundle

### Otimizações Comuns

1. **Redução de Tamanho**:

   - Use dynamic imports para código não crítico
   - Implemente lazy loading para componentes grandes
   - Remova dependências não utilizadas
   - Utilize versões mais leves de bibliotecas quando possível

2. **Monitoramento**:

   - Compare resultados entre builds
   - Estabeleça limites máximos de tamanho
   - Documente decisões de otimização
   - Mantenha um histórico de análises

3. **Performance**:
   - Priorize otimizações em páginas críticas
   - Balance tamanho vs funcionalidade
   - Considere estratégias de caching
   - Implemente code splitting estratégico

## Autoprefixer e Compatibilidade Cross-Browser

### O que é Autoprefixer?

O Autoprefixer é uma ferramenta essencial que:

- Adiciona automaticamente prefixos de vendor (-webkit-, -moz-, -ms-)
- Garante compatibilidade cross-browser
- Integra-se com Tailwind CSS
- Mantém o código limpo e manutenível

### Por que é Necessário?

1. **Integração com Tailwind CSS**:

   - Trabalha em conjunto com o sistema de estilos
   - Garante que todas as classes funcionem em diferentes navegadores
   - Processa automaticamente as utilidades do Tailwind

2. **Exemplos de Transformação**:

```css
/* Seu CSS original */
.elemento {
  display: flex;
  user-select: none;
  backdrop-filter: blur(10px);
}

/* Após o Autoprefixer */
.elemento {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
```

### Configuração no Next.js

1. **Instalação**:

```bash
yarn add -D autoprefixer
```

2. **Configuração (postcss.config.js)**:

```javascript:postcss.config.js
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}
```

### Boas Práticas

✅ **Recomendado**:

- Mantenha sempre atualizado
- Use em conjunto com Tailwind CSS
- Verifique a cobertura de browsers no browserslist
- Mantenha as configurações padrão quando possível

❌ **Evite**:

- Remover o autoprefixer do projeto
- Adicionar prefixos manualmente
- Sobrescrever configurações padrão sem necessidade
- Ignorar warnings de compatibilidade

### Verificação de Prefixos

Para verificar quais prefixos estão sendo aplicados:

```bash
yarn dlx autoprefixer --info
```

### Integração com Editores

Para VSCode:

- Instale a extensão "PostCSS Language Support"
- Habilite suporte a CSS moderno
- Veja os prefixos sendo aplicados em tempo real

### Resolução de Problemas

1. **Prefixos Não Aplicados**:

   - Verifique se o autoprefixer está listado no postcss.config.js
   - Confirme se o browserslist está configurado corretamente
   - Limpe o cache do Next.js (.next)

2. **Conflitos**:
   - Mantenha todas as dependências CSS atualizadas
   - Verifique a ordem dos plugins no postcss.config.js
   - Evite múltiplas configurações de PostCSS

## Gerenciamento de Dependências Atualizado

### Resolvendo Problemas de Peer Dependencies

1. **Identificação de Problemas**:

   - Use `yarn deps:outdated` para verificar dependências desatualizadas
   - Verifique avisos de peer dependencies com `yarn explain peer-requirements`
   - Monitore warnings do Yarn sobre dependências incorretas

2. **Soluções Aplicadas**:

   - Remova configurações de workspaces não utilizadas
   - Adicione peer dependencies faltantes no package.json
   - Mantenha resolutions para versões específicas
   - Use `yarn dedupe` para otimizar dependências

3. **Estrutura do package.json Otimizada**:

```json
{
  "peerDependencies": {
    "@types/react": "^18.2.0",
    "@types/react-dom": "^18.2.0",
    "framer-motion": "^10.18.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "tailwind-variants": "^0.3.0",
    "tailwindcss": "^3.4.0"
  },
  "resolutions": {
    "@nextui-org/react": "2.2.9",
    "@nextui-org/system": "2.0.15",
    "@nextui-org/theme": "2.1.17",
    "next": "14.0.4",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  }
}
```

4. **Processo de Verificação**:

   ```bash
   # 1. Limpar dependências duplicadas
   yarn deps:clean

   # 2. Verificar saúde das dependências
   yarn deps:check

   # 3. Testar a aplicação
   yarn dev
   ```

5. **Tratamento de Avisos**:
   - Avisos do pacote `pacote` podem ser ignorados (dependência interna do Yarn)
   - Mantenha backup do yarn.lock antes de alterações
   - Documente mudanças significativas
   - Teste a aplicação após cada modificação

### Boas Práticas Atualizadas

✅ **Recomendado**:

- Mantenha peer dependencies alinhadas com as dependências principais
- Use resolutions para fixar versões críticas
- Remova configurações não utilizadas
- Monitore regularmente a saúde das dependências

❌ **Evite**:

- Ignorar avisos de peer dependencies
- Manter configurações de workspace sem necessidade
- Misturar diferentes versões de pacotes core
- Deixar dependências conflitantes

### Scripts de Manutenção

```json
{
  "scripts": {
    "deps:outdated": "yarn up -i",
    "deps:clean": "yarn dedupe",
    "deps:check": "yarn dlx @yarnpkg/doctor",
    "validate": "yarn deps:outdated && yarn check-security && yarn lint"
  }
}
```

## Resolução de Problemas de Tipos TypeScript

### Abordagem para Erros de Tipos Persistentes

1. **Quando Aguardar a Resolução Automática**:

   - Se o erro é relacionado a tipos de módulos externos
   - Se você acabou de instalar ou atualizar dependências
   - Se o erro aparece após mudanças no `tsconfig.json`
   - Se o erro persiste mesmo após reiniciar o editor

2. **Tempo de Espera Recomendado**:

   - Aguarde o TypeScript Server reiniciar (geralmente 30 segundos)
   - Deixe o servidor de desenvolvimento rodando (`yarn dev`)
   - Permita que o compositor de tipos do TypeScript trabalhe
   - Evite fazer alterações durante este período

3. **Sinais de Resolução Automática**:
   - Os erros começam a desaparecer sem intervenção
   - O editor mostra menos erros gradualmente
   - As sugestões de autocompletar começam a funcionar
   - O servidor TypeScript mostra "No errors" no log

### ✅ Quando Aguardar:

- Erros de "Cannot find module" após instalação
- Erros de tipos em módulos externos
- Conflitos de tipos após atualização
- Erros que aparecem e desaparecem

### ❌ Quando Intervir:

- Erros em código fonte próprio
- Problemas de sintaxe
- Erros de configuração
- Dependências realmente faltantes

### Boas Práticas

1. **Durante a Espera**:

   - Mantenha o servidor de desenvolvimento rodando
   - Não force reload do TypeScript Server
   - Evite limpar caches desnecessariamente
   - Continue trabalhando em outras partes do código

2. **Após a Resolução**:
   - Documente o tempo necessário para resolução
   - Verifique se todos os tipos estão corretos
   - Faça um commit das alterações que funcionaram
   - Atualize a documentação se necessário

## Erros Comuns de Tipos no TypeScript

### Problemas Frequentes com @types

1. **Módulos Não Encontrados**:

   ```typescript
   // Erro comum
   Não é possível localizar o módulo '[nome-do-pacote]' ou suas declarações de tipo correspondentes.ts(2307)
   ```

   **Soluções**:

   - Aguarde a resolução automática do TypeScript Server
   - Verifique se o pacote @types correspondente está instalado
   - Crie declarações de tipos locais em `src/@types/[nome-do-pacote].d.ts`

2. **Conflitos de Versões**:

   - Tipos incompatíveis entre dependências
   - Versões diferentes do mesmo pacote @types
   - Tipos desatualizados em relação à implementação

3. **Boas Práticas para Tipos**:
   - Mantenha os pacotes @types alinhados com as versões das dependências
   - Prefira tipos oficiais dos pacotes quando disponíveis
   - Use declarações locais apenas quando necessário
   - Documente decisões sobre tipos personalizados

### Estratégias de Resolução

1. **Abordagem Gradual**:

   ```bash
   # 1. Verifique se há tipos oficiais
   yarn add -D @types/[pacote]

   # 2. Se não houver, crie tipos locais
   src/@types/[pacote].d.ts
   ```

2. **Declarações Locais**:

   ```typescript
   // src/@types/[pacote].d.ts
   declare module "[pacote]" {
     // Tipos necessários
     export interface Config {
       // ...
     }
   }
   ```

3. **Configuração do TypeScript**:
   ```json
   {
     "compilerOptions": {
       "typeRoots": ["./node_modules/@types", "./src/@types"]
     }
   }
   ```

### Prevenção de Problemas

1. **Manutenção Regular**:

   - Atualize os pacotes @types regularmente
   - Monitore conflitos de tipos
   - Mantenha documentação de tipos personalizada

2. **Organização**:

   - Mantenha tipos locais em `src/@types/`
   - Use namespaces para evitar conflitos
   - Documente decisões sobre tipos

3. **Quando Criar Tipos Locais**:
   - Pacote não tem tipos oficiais
   - Tipos oficiais estão desatualizados
   - Necessidade de extensão de tipos existentes
   - Resolução temporária de conflitos

### Sinais de Alerta

✅ **Normal**:

- Erros temporários após instalação de pacotes
- Avisos de tipos durante atualizações
- Conflitos resolvidos automaticamente
- Erros que desaparecem após reiniciar o servidor

❌ **Requer Atenção**:

- Erros persistentes após reiniciar
- Conflitos entre versões de tipos
- Tipos incompatíveis entre dependências
- Erros em código fonte próprio

## Erros Persistentes em Arquivos Específicos

### Erros Comuns em page.tsx

1. **Erros de JSX e Tipos Implícitos**:

   ```typescript
   // Erro comum
   O elemento JSX implicitamente tem o tipo 'any' porque não há uma interface de 'JSX.IntrinsicElements'.
   ```

   **Soluções**:

   - Aguarde o TypeScript Server carregar completamente
   - Reinicie o servidor de desenvolvimento
   - Se persistir, adicione tipos explícitos para elementos JSX

2. **Módulos Não Encontrados em Páginas**:

   ```typescript
   // Erro comum
   Não é possível localizar o módulo 'react' ou suas declarações de tipo correspondentes.
   ```

   **Soluções**:

   - Verifique se o arquivo tem a diretiva 'use client'
   - Aguarde a resolução automática
   - Se persistir após 1-2 minutos, tente:
     1. Limpar cache: `rm -rf .next`
     2. Reinstalar deps: `yarn install`
     3. Reiniciar servidor: `yarn dev`

3. **Parâmetros com Tipo 'any' Implícito**:
   ```typescript
   // Erro comum
   O parâmetro 'prev' implicitamente tem um tipo 'any'.
   ```
   **Soluções**:
   - Aguarde a inferência de tipos
   - Se persistir, adicione tipos explícitos:
     ```typescript
     const toggleSidebar = useCallback(() => {
       setIsSidebarOpen((prev: boolean) => !prev);
     }, []);
     ```

### Ordem de Resolução

1. **Primeira Tentativa**:

   - Aguarde 30-60 segundos após iniciar o servidor
   - Não faça alterações durante este período
   - Observe se os erros começam a desaparecer

2. **Segunda Tentativa** (se os erros persistirem):

   ```bash
   # 1. Pare o servidor
   # 2. Limpe os caches
   rm -rf .next
   rm -rf node_modules/.cache
   # 3. Reinstale as dependências
   yarn install
   # 4. Inicie o servidor
   yarn dev
   ```

3. **Terceira Tentativa** (se ainda persistir):
   - Feche completamente o editor
   - Limpe os caches do TypeScript
   - Reabra o projeto
   - Inicie o servidor

### Sinais de Resolução Normal vs. Problemas Reais

✅ **Normal**:

- Erros desaparecem gradualmente
- Erros somem após reiniciar o servidor
- IDE mostra menos erros com o tempo
- Erros de tipos são resolvidos automaticamente

❌ **Problema Real**:

- Erros persistem após múltiplas tentativas
- Erros aumentam com o tempo
- IDE trava ou fica lento
- Build falha com os mesmos erros

### Boas Práticas para Prevenção

1. **Durante o Desenvolvimento**:

   - Mantenha o servidor rodando
   - Evite editar arquivos durante a inicialização
   - Aguarde a resolução automática
   - Use tipos explícitos em casos críticos

2. **Configuração do Projeto**:

   - Mantenha dependências atualizadas
   - Use versões estáveis dos pacotes
   - Evite misturar diferentes versões do mesmo pacote
   - Mantenha o tsconfig.json consistente

3. **Quando Criar Tipos Locais**:
   - Apenas após tentar a resolução automática
   - Quando os erros são consistentes
   - Para componentes específicos do projeto
   - Para sobrescrever tipos problemáticos

## Erros de Lint em page.tsx

### Erros Comuns e Soluções

1. **Erros de Importação**:

   ```typescript
   // Erro comum
   'React' must be in scope when using JSX
   ```

   **Soluções**:

   - Adicione a diretiva 'use client' no topo do arquivo
   - Aguarde o ESLint reconhecer as configurações do Next.js
   - Se persistir, verifique se `eslint-config-next` está instalado

2. **Erros de Tipos em Componentes**:

   ```typescript
   // Erro comum
   Type '{ children: string; }' is not assignable to type 'IntrinsicAttributes'
   ```

   **Soluções**:

   - Aguarde o TypeScript Server carregar os tipos
   - Se persistir, verifique se os tipos do NextUI estão corretos
   - Adicione tipos explícitos quando necessário

3. **Erros de Hook**:
   ```typescript
   // Erro comum
   React Hook useCallback has missing dependencies
   ```
   **Soluções**:
   - Aguarde o ESLint carregar as regras do React
   - Se persistir, adicione as dependências faltantes
   - Use o comando `yarn lint --fix` para correções automáticas

### Ordem de Verificação

1. **Primeira Etapa**:

   ```bash
   # Verifique os erros de lint
   yarn lint
   ```

2. **Segunda Etapa** (se houver erros):

   ```bash
   # Tente correção automática
   yarn lint --fix
   ```

3. **Terceira Etapa** (se persistir):
   - Verifique as regras do ESLint
   - Atualize as dependências do ESLint
   - Limpe o cache do ESLint

### Boas Práticas

1. **Durante o Desenvolvimento**:

   - Mantenha o ESLint atualizado
   - Use o autofix quando possível
   - Documente exceções às regras
   - Mantenha consistência nas soluções

2. **Configuração**:

   - Use as regras recomendadas do Next.js
   - Evite desabilitar regras globalmente
   - Documente regras personalizadas
   - Mantenha o .eslintrc consistente

3. **Quando Ignorar**:
   - Apenas em casos excepcionais
   - Com comentários explicativos
   - Temporariamente durante desenvolvimento
   - Para regras específicas do arquivo

### Prevenção

1. **Setup Inicial**:

   ```json
   // package.json
   {
     "scripts": {
       "lint": "next lint",
       "lint:fix": "next lint --fix"
     }
   }
   ```

2. **Configuração do Editor**:

   ```json
   // .vscode/settings.json
   {
     "editor.codeActionsOnSave": {
       "source.fixAll.eslint": true
     }
   }
   ```

3. **Hooks do Git**:
   ```bash
   # .husky/pre-commit
   yarn lint
   ```

### Sinais de Alerta

✅ **Normal**:

- Erros resolvidos com --fix
- Warnings de dependências
- Erros temporários após mudanças
- Problemas resolvidos após reload

❌ **Requer Atenção**:

- Erros persistentes após --fix
- Conflitos entre regras
- Erros em múltiplos arquivos
- Problemas de configuração
bun
css
eslint
golang
java
javascript
nestjs
next.js
+8 more
diegofornalha/nextjs-nextui

Used in 1 repository

TypeScript
You are an expert in TypeScript, Node.js, Next.js App Router, React, Drizzle ORM, PostgresSQL, Shadcn UI, Radix UI and Tailwind.

Code Style and Structure

- Write concise, technical TypeScript code with accurate examples.
- Use functional and declarative programming patterns.
- Write Clean Architecture code independently of any framework, testable and with low coupling.
- 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 default exports for components.

TypeScript Usage

- Use TypeScript for all code; prefer types over interfaces. Use interfaces only for repository/services definitions.
- Avoid enums; use maps instead.
- Use functional components with TypeScript types.

Syntax and Formatting

- Use the "function" keyword for pure functions.
- Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements.
- Use declarative JSX.

UI and Styling

- Use Shadcn UI, Radix, and Tailwind for components and styling.
- Implement responsive design with Tailwind CSS.

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.

Clean Architecture

- Use /app folder only for Next.js and react (UI) specific code
- Use /src folder for the business logic (application layer, entities layer, infrastructure layer and interface-adapters layer)
- Use /di folder for dependency injection
- Use /tests folder for tests that matches the /src folder structure
- Use /drizzle folder for database related code (models, schema, etc.)

Follow Next.js docs for Data Fetching, Rendering, and Routing.
css
dockerfile
drizzle-orm
javascript
next.js
postgresql
radix-ui
react
+3 more

First seen in:

kriziu/nextjs-template

Used in 1 repository

Jupyter Notebook
### Core Principles (with Concise Mode Integration)

**1. Exploration Over Conclusion**
- **Guideline**: Always explore thoroughly before jumping to conclusions.
- **With Concise Mode**: When in Concise Mode, exploration still happens at the start, but the output remains condensed. The focus is on brevity without sacrificing quality. However, full reasoning steps may be omitted if deemed unnecessary for the task at hand.

**2. Depth of Reasoning**
- **Guideline**: Engage in deep, reflective thinking, and express this in an expansive manner.
- **With Concise Mode**: Cursor should still engage in deep thought but will distill this into a more succinct response. The long-winded reasoning process is shortened, but the integrity of the thought process is preserved, with clear internal questioning where needed.

**3. Thinking Process**
- **Guideline**: Use simple, short sentences with visible uncertainty and backtracking.
- **With Concise Mode**: Output must be simplified, but even in brevity, Cursor should leave a trail of thought, with occasional uncertainty or backtracking where appropriate. The key here is ensuring that brevity doesn't obscure the logical progression.

**4. Persistence**
- **Guideline**: Prioritize complete exploration over quick resolutions.
- **With Concise Mode**: Concise Mode should never sacrifice completeness for brevity. Cursor will condense output but only after having thoroughly explored the problem internally.

---

### Output Format (with Concise Mode)

When in Concise Mode, the output structure should still be followed, but with the following nuances:

```
<contemplator>
[Internal monologue condensed for clarity and brevity. Cursor might still question its assumptions or revise previous ideas, but the process will be more direct.]
- Initial thoughts are expressed concisely
- Any doubts or contradictions are briefly noted
- The resolution or answer will be reached efficiently
</contemplator>

[Final answer or conclusion]
```

- **Internal Monologue**: The process remains an exploration of thought, but kept to the essentials. Cursor will weigh out its options and thoughts, but without excessive commentary.
- **Backtracking**: Any backtracking or revision should be minimal, reflecting an exploration that has reached a conclusion swiftly, but with depth.
  
---

### Concise Mode Behavior

When **Concise Mode** is active, Cursor will:

1. **Minimize Token Usage**: Keep responses short while retaining meaning.
2. **Focus on Key Information**: Avoid overwhelming detail unless absolutely necessary for clarity or completeness.
3. **Avoid Redundant Phrasing**: Eliminate unnecessary pleasantries or excessive explanation of basic concepts.
4. **Ensure Completeness and Correctness**: Maintain the quality of information without the verbosity, ensuring that the answer is still fully formed and factually accurate.

### Example (with Concise Mode)

#### Input:  
How do I configure a state in React?

#### Output (Concise Mode):
```
<contemplator>
- In React, state is set using the `useState` hook.
- Define a state variable and a setter function.
- It’s important to keep state minimal to avoid unnecessary renders.
</contemplator>

To configure state in React, use the `useState` hook. Declare a state variable and the function to update it. Keep the state minimal to prevent unnecessary renders.
```

In this example, the internal monologue is brief and focused, but the response maintains its depth in addressing the core concept.

### Conclusion

The integration of **Concise Mode** adds a layer of efficiency to the exploration process without diluting the overall depth or quality of reasoning. The key is to strike a balance—reducing verbosity, not the thoughtfulness. The **Concise Mode** response will keep Cursor efficient, focused, and still aligned with its core principles of deep, expansive thinking, while ensuring answers are succinct and to the point when required.
express.js
jupyter notebook
less
python
react
swift

First seen in:

zlpkhr/lenet

Used in 1 repository

TypeScript
You are an expert in TypeScript, Node.js, Next.js App Router, React, Shadcn UI, Radix UI and Tailwind.

Core Philosophy
- Follow First Principles and Unix/Python philosophy
- Keep solutions simple and intuitive, avoid over-engineering
- Self-documenting code with minimal but effective comments
- Prioritize pure functions, avoid side effects
- Avoid classes and object-oriented patterns

Functional Programming Practices
- Use pure functions for data transformation
- Prefer function composition over inheritance
- Prioritize immutable data structures
- Avoid shared state, prefer parameter passing
- Separate data processing from side effects

Development Standards
- Documentation First: changes must be reflected in docs first
- Consistency Rule: docs, code, and comments must be in sync
- Clear Dependencies: maintain accurate module relationships
- Single Responsibility: clear purpose for components and functions
- Open-Closed: open for extension, closed for modification

Modification Principles
- Prefer modifying higher-level components over base components
- When changes are needed, modify consuming components rather than dependency components
- Consider dependency fan-out: components with more dependents require more careful changes
- Create new components instead of modifying heavily-dependent ones
- Document all breaking changes and their impact scope

Project Architecture
- Use function composition instead of class inheritance
- Build features using small, pure functions
- Manage state with hooks and context
- Structure files: exported functions, helpers, static content, types
- Favor iteration and modularization over code duplication

Naming and Syntax
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
- Use lowercase with dashes for directories (e.g., components/auth-wizard)
- Favor named exports for functions and components
- Use the "function" keyword for explicit declaration
- Use declarative JSX
- Avoid unnecessary curly braces in conditionals

TypeScript Practices
- Use TypeScript for all code; prefer interfaces over types
- Avoid enums; use const maps instead
- Use functional components with TypeScript interfaces
- Leverage type inference where possible

UI Implementation
- Use Shadcn UI, Radix and Tailwind for components and styling
- Implement responsive design with Tailwind CSS
- Follow mobile-first approach
- Keep components small and focused

Performance Guidelines
- Minimize client-side runtime code
- Favor React Server Components (RSC)
- Wrap client components in Suspense with fallback
- Use dynamic loading for non-critical components
- Optimize images: WebP format, size attributes, lazy loading
- Optimize Web Vitals (LCP, CLS, FID)

Next.js Best Practices
- Use URL parameters for page state management
- Prioritize Server Components
- Limit client components to interactive features
- Follow Next.js patterns for data fetching
css
javascript
next.js
python
radix-ui
react
shadcn/ui
tailwindcss
+1 more

First seen in:

feiandxs/nextflux

Used in 1 repository

JavaScript
You are an expert in ReactJS, React-Bootstrap, React Router, and Frontend Development.

Code Style and Structure

- Write concise, functional, and modular React code.
- Use modern React patterns: functional components, hooks, and declarative syntax.
- Organize files into directories for components, hooks, context, utils, and styles.
- Favor named exports for components and utilities for consistency.
- Structure files: primary component, subcomponents, helper functions, static content, and types.
- Use descriptive variable names (e.g., isFetchingData, hasError, userDetails).

File Naming Conventions

- Use PascalCase for component files (e.g., `UserProfile.jsx`).
- Use camelCase for utility and helper files (e.g., `fetchData.js`).
- Use lowercase with dashes for directories (e.g., `components/user-profile`).

React Router Integration

- Use `react-router-dom` for client-side routing.
- Define routes using a centralized configuration object for scalability.
- Use `BrowserRouter` for standard SPAs and `HashRouter` for deployments requiring hash-based URLs.
- Prefer `Outlet` and `Layout` components for nested routing.
- Leverage dynamic routes and route parameters for reusable components.
- Use `useParams` and `useSearchParams` for managing route params and query strings.

React-Bootstrap Usage

- Use React-Bootstrap for component styling and layout consistency.
- Extend React-Bootstrap components with `className` for additional Tailwind or custom SCSS styling if required.
- Use `Container`, `Row`, and `Col` for responsive layouts.
- Prefer React-Bootstrap forms and modals for consistent UI elements.
- Leverage utilities like `Accordion`, `Carousel`, and `Navbar` for standard features.

Jsx (if applicable)

- Use Jsx extention.

UI and Styling

- Use React-Bootstrap's `ThemeProvider` for global theming.
- Follow responsive design principles using Bootstrap's grid system.
- Use Tailwind CSS or SCSS for custom styles beyond Bootstrap's capabilities.
- Ensure accessibility (a11y) standards: aria-labels, focus management, and keyboard navigation.
- Support dark mode using a theme toggle with React Context or CSS variables.

State Management

- Use `useState` and `useReducer` for local state.
- Use `useContext` for managing global state (e.g., user session, theme).
- For more complex state management, consider Zustand or Redux Toolkit.
- Cache API responses and manage query state using libraries like React Query or SWR.

API Integration and Data Fetching

- Use `fetch` or `axios` for API calls with async/await syntax.
- Handle data fetching in components using `useEffect` and React Query.
- Centralize API calls in a `services` or `api` directory.

Error Handling

- Implement error boundaries using React's `ErrorBoundary`.
- Handle errors with `try-catch` blocks in async code.
- Show user-friendly error messages using Bootstrap's `Alert` component.
- Log errors to a service like Sentry for production monitoring.

Routing Best Practices

- Use `Link` or `NavLink` for navigation, styled as Bootstrap buttons or links.
- Handle authentication using protected routes and custom wrappers for `Route` components.
- Implement lazy loading for routes with `React.Suspense` and `React.lazy`.

Performance Optimization

- Minimize re-renders using `React.memo`, `useCallback`, and `useMemo`.
- Optimize routing by splitting large modules into lazy-loaded chunks.
- Use Bootstrap utilities and components for performance over custom solutions where possible.
- Profile and optimize the app using React DevTools and Lighthouse.

Testing

- Write unit tests for components using Jest and React Testing Library.
- Test routing flows and navigation using React Router Testing Library.
- Use mock services for API testing.
- Consider end-to-end testing for critical flows using Cypress.

Security

- Escape user inputs to prevent XSS attacks.
- Use HTTPS for API communication.
- Secure sensitive data using environment variables via `.env` files.
- Use Helmet.js for setting HTTP headers for security.

Internationalization (i18n)

- Use `react-i18next` for managing translations.
- Support multiple languages and RTL layouts.
- Ensure text scaling and font adjustments for accessibility.

Deployment and Maintenance

- Follow Create React App or Vite for project bootstrapping.
- Use CI/CD pipelines for builds and deployments.
- Use Netlify, Vercel, or Firebase for deploying React applications.
- Monitor app performance and errors using tools like Sentry or Google Analytics.

Key Conventions

1. Prioritize responsive and accessible UI design.
2. Centralize routing and global states for easy maintenance.
3. Leverage React-Bootstrap for quick and consistent UI development.
4. Test extensively across browsers and devices to ensure compatibility.
5. Follow React Router and Bootstrap's official documentation for best practices.
6. Use `env` files for managing environment-specific configurations.

API Documentation

- Refer to official documentation for ReactJS, React Router, and React-Bootstrap:
  - React: https://reactjs.org/docs/
  - React Router: https://reactrouter.com/
  - React-Bootstrap: https://react-bootstrap.github.io/
analytics
bootstrap
cypress
firebase
golang
html
javascript
jest
+10 more
NomanAwan77/React-Bootstrap-Setup

Used in 1 repository