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
84 lines
1.7 KiB
Markdown
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
|
|
```
|