# Marketplace Frontend - Documentação

## Status (pronto x faltando)

**Pronto**
- Conteúdo descrito neste documento.

**Faltando**
- Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário.

---


## 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
```

> Para matriz completa (com/sem banco e Playwright), veja: [docs/TESTES.md](./TESTES.md)

## Build

```bash
npm run build
```
