163 lines
2.6 KiB
Markdown
163 lines
2.6 KiB
Markdown
# Project Structure
|
|
|
|
## Objetivo
|
|
Definir uma estrutura de projeto clara, previsível e adequada a desenvolvimento assistido por agentes de IA.
|
|
|
|
## Estrutura de alto nível
|
|
|
|
```text
|
|
app/
|
|
components/
|
|
features/
|
|
lib/
|
|
server/
|
|
prisma/
|
|
docs/
|
|
public/
|
|
```
|
|
|
|
## Estrutura recomendada detalhada
|
|
|
|
```text
|
|
src/
|
|
app/
|
|
(dashboard)/
|
|
api/
|
|
login/
|
|
layout.tsx
|
|
page.tsx
|
|
|
|
components/
|
|
ui/
|
|
shared/
|
|
layout/
|
|
tables/
|
|
forms/
|
|
status/
|
|
|
|
features/
|
|
suppliers/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
purchase-orders/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
receipts/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
inventory/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
listings/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
sales/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
shipments/
|
|
components/
|
|
actions/
|
|
schemas/
|
|
utils/
|
|
dashboard/
|
|
components/
|
|
queries/
|
|
utils/
|
|
|
|
lib/
|
|
auth/
|
|
utils/
|
|
constants/
|
|
validators/
|
|
|
|
server/
|
|
db/
|
|
client.ts
|
|
repositories/
|
|
services/
|
|
queries/
|
|
permissions/
|
|
audit/
|
|
|
|
prisma/
|
|
schema.prisma
|
|
migrations/
|
|
seeds/
|
|
|
|
docs/
|
|
*.md
|
|
|
|
public/
|
|
images/
|
|
icons/
|
|
```
|
|
|
|
## Regras de organização
|
|
- `app/` contém rotas, layouts e entry points do Next.js
|
|
- `components/` contém componentes reutilizáveis sem lógica de negócio forte
|
|
- `features/` organiza a aplicação por domínio funcional
|
|
- `server/` concentra lógica do lado do servidor
|
|
- `prisma/` concentra schema, migrations e seeds
|
|
- `docs/` contém a documentação do projeto
|
|
|
|
## Padrão por feature
|
|
Cada feature deve, idealmente, conter:
|
|
- `components/`
|
|
- `actions/`
|
|
- `schemas/`
|
|
- `utils/`
|
|
|
|
Opcionalmente:
|
|
- `queries/`
|
|
- `types/`
|
|
- `tests/`
|
|
|
|
## Separação recomendada de responsabilidades
|
|
|
|
### UI
|
|
Componentes visuais, tabelas, formulários, badges, cards, filtros.
|
|
|
|
### Actions / handlers
|
|
Entradas da aplicação para mutações e operações ligadas ao utilizador.
|
|
|
|
### Schemas
|
|
Validação com Zod.
|
|
|
|
### Services
|
|
Regras de negócio e fluxos operacionais.
|
|
|
|
### Repositories
|
|
Acesso aos dados e queries Prisma.
|
|
|
|
### Queries
|
|
Leituras complexas e agregações para dashboard e listagens.
|
|
|
|
## Convenções de naming
|
|
- kebab-case para nomes de pastas de features
|
|
- PascalCase para componentes React
|
|
- camelCase para funções e variáveis
|
|
- nomes explícitos e orientados ao domínio
|
|
- evitar abreviações ambíguas
|
|
|
|
## Estrutura inicial mínima da V1
|
|
- auth
|
|
- suppliers
|
|
- purchase-orders
|
|
- receipts
|
|
- inventory
|
|
- sales
|
|
- shipments
|
|
- dashboard
|