Frontend React para gerar e acompanhar memoriais técnicos usando a API Memorial Descritivo.
O dashboard roda separado da API. A API gera os documentos .docx, salva os arquivos no Supabase Storage e persiste o histórico em Supabase Postgres. O frontend consome esses dados por HTTP usando VITE_API_URL.
- React
- TypeScript
- Vite
- Tailwind CSS
- Axios
- React Dropzone
Rode a API em um terminal:
cd ~/Projects/api_memorial_descritivo
.venv/bin/uvicorn app.main:app --reload --host 127.0.0.1 --port 8000Rode o dashboard em outro terminal:
cd ~/Projects/dashboard_memorial
npm install
npm run devConfigure o dashboard com:
VITE_API_URL=http://localhost:8000O dashboard usa os endpoints persistentes da API:
POST /api/v1/memoriais/{tipo}/from-files/persist
GET /api/v1/memoriais
GET /api/v1/memoriais?type=telecom
GET /api/v1/memoriais/{id}
GET /api/v1/memoriais/{id}/download
Mapeamento de tipos:
telecomunicacoes -> telecom
eletrico -> eletrico
gas_natural -> gas-natural
gas_glp -> glp
npm run devInicia o servidor local do Vite.
npm run buildExecuta TypeScript e gera a build de produção.
npm run lintExecuta ESLint.
npm run previewServe localmente a build gerada.
npm run e2eExecuta a suíte E2E em Chromium com Playwright Test. Antes de rodar, mantenha a API
local ativa em http://127.0.0.1:8000:
cd ~/Projects/api_memorial_descritivo
.venv/bin/uvicorn app.main:app --reload --host 127.0.0.1 --port 8000A suíte contém um smoke real-backend que valida o dashboard contra essa API local e
testes contract-mocked que interceptam contratos críticos no navegador para cobrir
histórico, detalhe, download, exclusão, mobile, loading e erros seguros sem depender do
Railway nem de credenciais reais.
npm run e2e:uiAbre a interface do Playwright para depuração local dos testes E2E.
Recomendação atual:
- Frontend: Vercel
- API: Railway, preferencialmente em um serviço separado do chatbot
- Persistência: Supabase Postgres + Supabase Storage
Variável no Vercel:
VITE_API_URL=https://<railway-api-domain>
VITE_SUPABASE_URL=https://<projeto>.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=<publishable-key>Variáveis relevantes na API Railway:
CORS_ORIGINS=https://<vercel-dashboard-domain>
SUPABASE_URL=...
SUPABASE_SECRET_KEY=...
OPENAI_API_KEY=...
USE_LLM_EXTRACTION=true
GENERATED_MEMORIALS_BUCKET=generated-memorials
GENERATED_MEMORIALS_SIGNED_URL_TTL=3600No Supabase:
- habilite login por email/senha;
- desabilite cadastro público;
- execute as migrations da API até
migrations/005_auth_profiles_and_ownership.sql; - confirme que o bucket privado
generated-memorialsexiste; - mantenha service role/secret key apenas no backend;
- use no frontend somente a publishable key.