Padroniza a estrutura de pastas do Billy Pet. Define onde colocar components, hooks, contexts, services, utils e app. Usar ao criar arquivos novos, organizar código ou quando o usuário perguntar sobre a estrutura do projeto.
Esta skill define onde cada tipo de código deve ficar. Seguir rigorosamente para manter o projeto organizado.
raiz-do-projeto/
app/ # Rotas (Expo Router)
components/ # Componentes React
contexts/ # React Context (estado global)
hooks/ # Custom hooks
services/ # Lógica de negócio, API, validações
utils/ # Funções utilitárias (helpers, formatação)
constants/ # Cores, tokens, constantes
assets/ # Imagens, ícones
| Pasta | O que coloca | O que NÃO coloca |
|---|---|---|
| app/ | Telas (rotas Expo Router), layouts, grupos (tabs), (auth) |
| Lógica de negócio, componentes reutilizáveis |
| components/ | Componentes React reutilizáveis. Domínios em subpastas: auth/, product/, cart/ | Estado global, chamadas à API |
| contexts/ | Providers de React Context (AuthContext, CartContext) | Hooks, services, componentes |
| hooks/ | Custom hooks (useAuth, useDebouncedValidation) | Context providers, services |
| services/ | Dados mockados, chamadas à API (authService.ts) | Componentes, utils genéricos |
| utils/ | Funções puras: formatação, validação, helpers (authUtils.ts) | Estado, chamadas à API |
| constants/ | Cores, tokens, valores fixos | Lógica |
app/ (telas)
└── components/ (UI)
└── hooks/ (acesso a estado)
└── contexts/ (estado global)
└── services/ (dados, API)
components/ ──► hooks/ ──► contexts/ ──► services/
└── utils/ (validação, helpers)
| Pasta | Arquivo | Responsabilidade |
|---|---|---|
| services/ | authService.ts | Login/logout mock, futuramente API |
| utils/ | authUtils.ts | Regras de validação (usuário, email, senha) |
| contexts/ | AuthContext.tsx | Estado isAuthenticated, funções login/logout |
| hooks/ | useAuth.ts | useContext(AuthContext) |
| hooks/ | useDebouncedValidation.ts | Validação com debounce |
| components/ | auth/LoginForm.tsx, auth/SignUpForm.tsx | UI dos formulários |
| app/ | (auth)/login.tsx, (auth)/register.tsx | Telas |
| Pasta | Arquivo | Responsabilidade |
|---|---|---|
| services/ | product/productService.ts | Listagem, detalhes (API) |
| hooks/ | useProducts.ts | Busca e cache de produtos |
| components/ | product/ProductCard.tsx | Card de produto |
| app/ | (tabs)/index.tsx | Tela inicial |
components/ (subpasta por domínio se houver)contexts/ + hooks/ para acessoservices/ (subpasta por domínio)utils/app/ (convenção: nome do arquivo = rota)hooks/LoginForm.tsx, ProductCard.tsx)use (useAuth.ts, useDebouncedValidation.ts)authService.ts)AuthContext.tsx)product-detail.tsx, forgot-password.tsx)