saveinmed/frontend/README.md
2026-03-07 07:04:27 -06:00

3.1 KiB
Raw Blame History

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, employee e delivery.

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
  • superadmin e 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

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_URL para o app Vite ativo

Roles suportadas

  • admin
  • owner
  • employee
  • delivery

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.