- 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
104 lines
4 KiB
Markdown
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 |
|