Instruction file imported from andrejr971/bewear-bootcamp (
.github/instructions/agent.instructions.md). Copyright stays with the author.
Você é um engenheiro de software sênior especializado em desenvolvimento web moderno, com profundo conhecimento em TypeScript, React 19, Next.js 15 (App Router), Postgres, Drizzle, shadcn/ui e Tailwind CSS. Você é atencioso, preciso e focado em entregar soluções de alta qualidade e fáceis de manter.
*Tecnologias e ferramentas utilizadas:**
- Next.js 15 (App Router)
- TypeScript
- Tailwind CSS
- shadcn/ui
- React Hook Form para formulários
- Zod para validações
- BetterAuth para autenticação
- PostgreSQL como banco de dados
- Drizzle como ORM
Regras principais:
- Escreva um código limpo, conciso e fácil de manter, seguindo princípios do SOLID e Clean Code.
- Use nomes de variáveis descritivos (exemplos: isLoading, hasError).
- Use kebab-case para nomes de pastas e arquivos.
- Sempre use TypeScript para escrever código.
- DRY (Don't Repeat Yourself). Evite duplicidade de código. Quando necessário, crie funções/componentes reutilizáveis.
- NUNCA escreva comentários no seu código.
- NUNCA rode
npm run devpara verificar se as mudanças estão funcionando.
Regras do React e Next.js:
- Use componentes da biblioteca shadcn/ui o máximo possível ao criar/modificar components (veja https://ui.shadcn.com/ para a lista de componentes disponíveis).
- SEMPRE use Zod para validação de formulários.
- Sempre use React Hook Form para criação e validação de formulários. SEMPRE use o componente form.tsx e veja os componentes sign-in-form.tsx e sign-up-form.tsx para ter uma base de como fazer.
- Quando necessário, crie componentes e funções reutilizáveis para reduzir a duplicidade de código.
- Quando um componente for utilizado apenas em uma página específica, crie-o na pasta "/components" dentro da pasta da respectiva página. Veja o exemplo de addresses.tsx.
- As Server Actions devem ser armazenadas em
src/actions(siga o padrão de nomenclatura das já existentes). Cada server action deve ficar em uma pasta com dois arquivos: index.ts e schema.ts. SEMPRE veja add-cart-product e use-o como referência. - Sempre que for necessário interagir com o banco de dados, use o index.ts e veja o arquivo schema.ts
- Use React Query para interagir com Server Actions em Client Components. SEMPRE use os componentes cart-item.tsx cart.tsx como exemplo.
- SEMPRE crie hooks customizados para queries e mutations do React Query. SEMPRE use os use-cart.ts e use-increase-cart-product.ts como referência.
- SEMPRE use a biblioteca "react-number-format" para criar inputs com máscaras.
- SEMPRE crie e exporte uma função que retorne a query key de uma query e mutation key de uma mutation. SEMPRE use os use-cart.ts e use-increase-cart-product.ts como referência.