3.1 KiB
3.1 KiB
Nota de atualização
Este documento contém referências históricas a BFF, Appwrite ou papéis legados. No fluxo ativo do frontend, a referência correta é API direta e os papéis válidos são
admin,owner,employeeedelivery.
Frontend - SaveInMed Marketplace
React + Vite + TypeScript + Tailwind CSS
Estado Atual
- Fluxo ativo de autenticação: API direta via
VITE_API_URL - Fluxo ativo não depende de BFF
- Papéis suportados no frontend ativo:
admin,owner,employee,delivery superadmine aliases antigos (seller,colaborador,entregador,dono) existem apenas como compatibilidade de legado- Documento canonico da arquitetura atual: docs/arquitetura-atual.md
Estrutura de src/
src/
|-- assets/ -> Logo, imagens estáticas
|-- components/ -> Componentes reutilizáveis
|-- context/ -> React Context (auth, tema)
|-- hooks/ -> Custom hooks
|-- layouts/ -> Layouts de página
|-- pages/ -> Páginas organizadas por contexto e perfil
| |-- auth/ -> Login
| |-- marketplace/ -> Search, Cart, Checkout, Orders, OrderDetails
| `-- dashboard/
| |-- admin/ -> Painel administrativo
| |-- seller/ -> ÃÂrea do `owner` (nome de pasta legado)
| |-- employee/ -> ÃÂrea do `employee`
| |-- delivery/ -> ÃÂrea do `delivery`
| |-- Company.tsx
| `-- MyProfile.tsx
|-- services/ -> Clientes HTTP por domÃÂnio
|-- stores/ -> Zustand (carrinho, filtros, UI global)
|-- types/ -> Tipos TypeScript compartilhados
`-- utils/ -> format, jwt, logger
Importações absolutas
Utilize o alias @/ (aponta para src/):
import { useAuth } from '@/context/AuthContext'
Gerenciamento de estado
| Estado | Estratégia |
|---|---|
| Auth (JWT, user) | Context API (AuthContext) + apiClient |
| Tema claro/escuro | Context API (ThemeContext) |
| Carrinho | Zustand (cartStore) |
| Filtros de busca | Zustand / usePersistentFilters |
| Estado UI local | useState no componente |
Regra: Context apenas para auth e tema. O restante fica em Zustand ou estado local.
Scripts
pnpm dev
pnpm build
pnpm test
pnpm lint
Autenticação e API
- O app Vite usa src/services/apiClient.ts
- O base URL do fluxo ativo vem de
VITE_API_URL - Exemplo esperado:
VITE_API_URL=https://api-dev.saveinmed.com.br
- O login ativo chama
POST /v1/auth/login - O frontend injeta o token JWT em
Authorization: Bearer <token> - Não usar
NEXT_PUBLIC_BFF_API_URLpara o app Vite ativo
Roles suportadas
adminowneremployeedelivery
Observação sobre legado
O repositório ainda contém páginas e serviços legados em src/app/... e stubs antigos. Esses arquivos não devem ser usados como referência de arquitetura nova sem revisão.