Files
millions/docs/20_PROJECT_STRUCTURE.md
2026-04-21 10:53:35 +01:00

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