SPA 100% client-side que reproduz o comportamento do visual HTML Content do Power BI Desktop: cole código DAX (uma measure que constrói uma string HTML via concatenação) no editor à esquerda e veja o HTML renderizado num iframe à direita.
- Vite + React 18 + TypeScript
- TailwindCSS v3 (variáveis CSS, dark mode via classe)
- CodeMirror 6 com
StreamLanguageDAX customizada - Radix UI primitives (Dialog, DropdownMenu) + Sonner para toasts
- Sem backend, sem rede em runtime; persistência em
localStorage
npm install
npm run dev # dev server em http://localhost:5173
npm run build # build de produção
npm run preview # preview do buildO núcleo (src/lib/daxParser/) é um avaliador pragmático — não um interpretador completo de DAX.
Ele tokeniza o código, monta uma AST por descida recursiva e avalia para produzir a string final
do RETURN. Funções de tabela (ALL, FILTER, ADDCOLUMNS, TOPN, RANKX, CONCATENATEX, SUMX, etc.)
operam sobre tabelas fictícias geradas a partir dos JSONs em src/data/.
A toolbar do editor inclui um botão Sparkles que aciona o assistente Gemini para Refatorar, Indentar, Comentar ou Corrigir o código DAX atual.
Por segurança, a GEMINI_API_KEY nunca é exposta no bundle do frontend.
O app chama um proxy serverless que guarda a chave server-side.
- Faça deploy do proxy de exemplo em
docs/serverless-proxy-example.ts(Vercel/Netlify/Cloudflare). Defina no provedor:GEMINI_API_KEY=<sua chave>ALLOWED_ORIGIN=https://seu-app...(opcional)
- Copie
.env.examplepara.env.locale ajuste:VITE_GEMINI_PROXY_URL=https://seu-proxy.vercel.app/api/gemini - Reinicie
npm run dev. O prompt do sistema vive emsrc/assets/prompts/dax_analyst_prompt.txte pode ser editado livremente.
Ctrl+Enter— renderizarCtrl+S— salvar rascuho atualCtrl+L— limpar editor