| .. | ||
| docs | ||
| e2e | ||
| public | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| COMO_ADICIONAR_ENTREGADOR_APPWRITE.md | ||
| CONFIGURACAO_COLLECTION_EMPRESAS_DADOS.md | ||
| CONFIGURACAO_COLLECTION_USUARIOS.md | ||
| CONFIGURACAO_COLLECTION_USUARIOS_DATA.md | ||
| CONFIGURACAO_COLLECTIONS_APPWRITE.md | ||
| CORRECAO_FORMULARIO_EDICAO_PRODUTOS.md | ||
| CORRECAO_MODAL_DETALHES_PRODUTO.md | ||
| deno.lock | ||
| DIAGNOSTICO_ERROS_COLLECTIONS.md | ||
| Dockerfile | ||
| eslint.config.mjs | ||
| IMPLEMENTACAO_COMPLETA_MAPEAMENTO.md | ||
| IMPLEMENTACAO_DASHBOARD_DADOS_REAIS.md | ||
| IMPLEMENTACAO_MERCADOPAGO_CHECKOUT.md | ||
| IMPLEMENTACAO_MODAL_EDICAO_PRODUTOS.md | ||
| IMPLEMENTACAO_PAGAMENTOS_CHECKOUT.md | ||
| index.html | ||
| INTEGRACAO_PAGAMENTO_SUCESSO_MERCADOPAGO.md | ||
| MARKETPLACE.md | ||
| MELHORIAS_AUTENTICACAO_AUTH_APPWRITE.md | ||
| MELHORIAS_GESTAO_CATALOGO_PRODUTOS.md | ||
| MELHORIAS_MODAL_EDICAO_PRODUTOS.md | ||
| next.config.ts | ||
| OTIMIZACOES_PERFORMANCE_DASHBOARD.md | ||
| package-lock.json | ||
| package.json | ||
| PERMISSOES_COLLECTION_USUARIOS.md | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| postcss.config.cjs | ||
| postcss.config.mjs | ||
| PRODUTOS_CATALOGO_IMPLEMENTACAO.md | ||
| README.md | ||
| route.ts | ||
| SOLUCAO_ERROS_REGISTRO.md | ||
| tailwind.config.ts | ||
| test-carrinho.js | ||
| test-completar-registro.js | ||
| test-pedido.js | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Frontend — SaveInMed Marketplace
React + Vite + TypeScript + Tailwind CSS
Estrutura de src/
src/
├── assets/ → Logo, imagens estáticas
├── components/ → Componentes reutilizáveis
├── context/ → React Context (auth, tema) — estado global estável
├── hooks/ → Custom hooks
├── layouts/ → Layouts de página (Shell, DashboardLayout)
├── pages/ → Páginas organizadas por contexto e perfil
│ ├── auth/ → Login
│ ├── marketplace/ → Search, Cart, Checkout, Orders, OrderDetails
│ └── dashboard/
│ ├── admin/ → Painel administrativo (role admin)
│ ├── seller/ → Inventário, Produtos, Carteira, Equipe
│ ├── employee/ → Dashboard do colaborador
│ ├── delivery/ → Dashboard do entregador
│ ├── 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/):
// ✅ Correto
import { useAuth } from '@/context/AuthContext'
// ❌ Evitar (quebra ao mover o arquivo)
import { useAuth } from '../../context/AuthContext'
Gerenciamento de estado
| Estado | Estratégia |
|---|---|
| Auth (JWT, user) | Context API (AuthContext) |
| 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. Tudo mais vai para Zustand.
Scripts
pnpm dev # Dev server (proxy → :8214)
pnpm build # Build produção
pnpm test # Testes (Vitest)
pnpm lint # ESLint