saveinmed/docs/MARKETPLACE.md
Tiago Yamamoto 8f1e893142 feat: major implementation - seeder, payments, docs
Seeder API:
- 110 pharmacies across 5 cities (Goiânia 72, Anápolis 22, Nerópolis 10, Senador Canedo 5, Aparecida 1)
- 3-300 products per pharmacy
- Dynamic city/state in company records

Payment Gateways:
- stripe.go: Stripe integration with PaymentIntent
- mock.go: Mock gateway with auto-approve for testing
- PaymentResult and RefundResult domain types

Documentation:
- docs/BACKEND.md: Architecture, invisible fee, endpoints
- docs/SEEDER_API.md: City distribution, product counts
- docs/MARKETPLACE.md: Frontend structure, stores, utils
- docs/BACKOFFICE.md: Admin features, encrypted settings
2025-12-26 23:39:49 -03:00

84 lines
1.7 KiB
Markdown

# Marketplace Frontend - Documentação
## Visão Geral
Frontend React do marketplace B2B SaveInMed para busca, compra e gestão de pedidos entre farmácias.
## Tecnologias
- **React 18** + **TypeScript**
- **Vite 5** - Build tool
- **TailwindCSS** - Estilização
- **Zustand** - State management
- **React Router** - Navegação
## Estrutura
```
src/
├── components/ → Componentes reutilizáveis
├── hooks/ → Custom hooks
├── layouts/ → Layouts (Shell, AuthLayout)
├── pages/ → Páginas/rotas
├── services/ → Chamadas API
├── stores/ → Zustand stores
├── types/ → TypeScript types
└── utils/ → Utilitários (format, jwt, logger)
```
## Funcionalidades
### Catálogo
- Busca de produtos por nome/medicamento
- Filtros por preço, distância, validade
- Ordenação por menor preço
### Carrinho
- Agrupamento por fornecedor
- Preços em centavos (formatCents)
- Cálculo de subtotais
### Checkout
- Endereço de entrega
- Métodos de pagamento (Pix, Cartão)
- Cálculo de frete
### Dashboard
- Pedidos realizados
- Pedidos recebidos
- Métricas
## Stores
| Store | Arquivo | Descrição |
|-------|---------|-----------|
| Auth | `authStore.ts` | Token, usuário logado |
| Cart | `cartStore.ts` | Itens do carrinho |
## Utils
| Util | Função | Exemplo |
|------|--------|---------|
| `formatCents` | Converte centavos | `819 → "R$ 8,19"` |
| `formatCurrency` | Formata decimal | `8.19 → "8,19"` |
| `decodeJwtPayload` | Decodifica JWT | Extrai claims |
## Executar
```bash
cd marketplace
npm install
npm run dev
```
## Testes
```bash
npm run test
```
## Build
```bash
npm run build
```