No description
- 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 |
||
|---|---|---|
| backend | ||
| backoffice | ||
| docs | ||
| frontend | ||
| seeder-api | ||
| website | ||
| .gitignore | ||
| docker-compose.yml | ||
| Makefile | ||
| README.md | ||
| start.sh | ||
| STATUS_REPORT_SAVEINMED.md | ||
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íniointernal/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 SQLinternal/infrastructure/— integrações externas:mapbox/,payments/,notifications/cmd/api/— entrypoint da API RESTcmd/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 senhasrc/pages/marketplace/— busca, carrinho, checkout, pedidossrc/pages/dashboard/admin/— painel admin (consome a API dobackoffice)src/pages/dashboard/seller/— painel do vendedor/distribuidorasrc/pages/dashboard/employee/— painel do colaboradorsrc/pages/dashboard/delivery/— painel do entregadorsrc/components/— componentes reutilizáveissrc/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
# 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
maincom ao menos 1 revisor
Documentação técnica
| Arquivo | Conteúdo |
|---|---|
| docs/architecture.md | Visão geral da arquitetura e decisões de design |
| docs/BACKEND.md | Backend Go — detalhes, handlers, domínios |
| docs/BACKOFFICE.md | NestJS backoffice — módulos e responsabilidades |
| docs/DATABASE.md | Modelo de dados e migrações |
| docs/ROADMAP.md | Roadmap de produto |
| STATUS_REPORT_SAVEINMED.md | Status detalhado de cada funcionalidade |