saveinmed/README.md
caio-machado-dev bf85072bff chore: remove legacy services and restructure monorepo
- remove backend-old (Medusa), saveinmed-frontend (Next.js/Appwrite) and marketplace dirs
- split Go usecases by domain and move notifications/payments to infrastructure
- reorganize frontend pages into auth, dashboard and marketplace modules
- add Makefile, docker-compose.yml and architecture docs
2026-02-25 16:51:34 -03:00

104 lines
4 KiB
Markdown

# SaveInMed — Monorepo
> Marketplace B2B para o setor farmacêutico brasileiro.
> Conecta distribuidoras, farmácias e operadores logísticos em uma plataforma única.
---
## Estrutura do repositório
```
saveinmed/
├── backend/ # API principal (Go · Clean Architecture)
├── frontend/ # Marketplace web (React + Vite + Tailwind)
├── backoffice/ # API administrativa (NestJS · Prisma)
├── seeder-api/ # Seeder de catálogo de produtos
├── website/ # Site institucional
└── docs/ # Documentação técnica centralizada
```
### `backend/`
API REST em Go seguindo Clean Architecture:
- **`internal/domain/`** — modelos, regras e contratos de domínio
- **`internal/usecase/`** — casos de uso por domínio (`company_usecase.go`, `order_usecase.go`, …)
- **`internal/http/handler/`** — handlers HTTP (um arquivo por recurso)
- **`internal/repository/postgres/`** — implementações de repositório + migrações SQL
- **`internal/infrastructure/`** — integrações externas: `mapbox/`, `payments/`, `notifications/`
- **`cmd/api/`** — entrypoint da API REST
- **`cmd/seeder/`** — seed de dados
### `frontend/`
Marketplace React com Vite. Páginas organizadas por perfil de usuário:
- **`src/pages/auth/`** — Login, registro, recuperação de senha
- **`src/pages/marketplace/`** — busca, carrinho, checkout, pedidos
- **`src/pages/dashboard/admin/`** — painel admin (consome a API do `backoffice`)
- **`src/pages/dashboard/seller/`** — painel do vendedor/distribuidora
- **`src/pages/dashboard/employee/`** — painel do colaborador
- **`src/pages/dashboard/delivery/`** — painel do entregador
- **`src/components/`** — componentes reutilizáveis
- **`src/stores/`** — Zustand (carrinho, filtros, UI global)
- **`src/context/`** — Context API (auth + tema)
- **`src/services/`** — clientes HTTP por domínio
### `backoffice/`
API NestJS para operações administrativas internas: KYC, auditoria, disputas, relatórios, detecção de fraude.
Conecta ao mesmo banco de dados do `backend` via Prisma.
O painel React em `frontend/src/pages/dashboard/admin/` é o **frontend desta API**.
---
## Gerenciamento de estado (frontend)
| Estado | Onde | Justificativa |
|--------|------|---------------|
| Autenticação (token JWT, user) | Context API (`AuthContext`) | Semântica de provider; mudanças raras |
| Tema claro/escuro | Context API (`ThemeContext`) | Idem |
| Carrinho de compras | Zustand (`cartStore`) | Atualizações frequentes; sem re-render do provider raiz |
| Filtros de busca persistentes | Zustand / `usePersistentFilters` | Sobrevive a navegações |
| Estado de UI local (modais, loaders) | `useState` local | Não precisa ser compartilhado |
> **Regra:** Use Context apenas para auth/tema. Para estado de domínio ou UI global, use Zustand.
---
## Comandos úteis
```bash
# Backend Go (porta 8214 por padrão)
cd backend && go run ./cmd/api
# Frontend marketplace
cd frontend && pnpm dev
# Backoffice API
cd backoffice && pnpm start:dev
# Aplicar migrações Go
cd backend && go run ./cmd/apply_migration
# Seed manual
cd backend && go run ./cmd/seeder
```
Swagger disponível em `http://localhost:8214/swagger/index.html`.
---
## Convenções
- **Commits semânticos:** `feat:`, `fix:`, `refactor:`, `docs:`, `chore:`
- **Branches:** `main` = produção · `develop` = staging · `feature/*` = funcionalidades
- **PRs:** obrigatório para `main` com ao menos 1 revisor
---
## Documentação técnica
| Arquivo | Conteúdo |
|---------|----------|
| [docs/architecture.md](docs/architecture.md) | Visão geral da arquitetura e decisões de design |
| [docs/BACKEND.md](docs/BACKEND.md) | Backend Go — detalhes, handlers, domínios |
| [docs/BACKOFFICE.md](docs/BACKOFFICE.md) | NestJS backoffice — módulos e responsabilidades |
| [docs/DATABASE.md](docs/DATABASE.md) | Modelo de dados e migrações |
| [docs/ROADMAP.md](docs/ROADMAP.md) | Roadmap de produto |
| [STATUS_REPORT_SAVEINMED.md](STATUS_REPORT_SAVEINMED.md) | Status detalhado de cada funcionalidade |