Zuna AI Motor offline ativo

Respostas em JavaScript puro, armazenamento local e hooks prontos para API real.

Voice input + voice output IDE embutida Tela, câmera e share

Construa, converse e itere com uma SPA premium totalmente local.

A interface replica a linguagem visual de um assistente topo de linha sem depender de servidores externos. O motor reconhece intenções, gera respostas estruturadas, cria trechos de código e mantém histórico persistente no navegador.

Painel de publicação Simulação visual pronta para Play Store ou Web App
1 clique
R$ 2.8k receita simulada
4.9★ qualidade estimada
Web PWA pronto
APK empacotamento visual
Stack do app offline + expansível
Vanilla JS Speech API Web Share MediaDevices localStorage Hooks de API
Conversa Sessão local ativa
", "" ].join("\n"); } async function copyIdeBundle() { await copyText(buildIdeBundle()); toast("Bundle completo copiado."); } function simulatePublishStep(message) { refs.publishStatus.textContent = message; toast(message); } function openModal(id) { $("#" + id)?.classList.add("open"); } function closeModal(id) { $("#" + id)?.classList.remove("open"); if (id === "cameraModal") stopCamera(false); } function saveState() { persistJSON(STORAGE_KEY, state); } function generateResponse(input, messageHistory) { const normalized = normalize(input); const tone = settings.tone; const wantsCode = /(c[oó]digo|html|css|javascript|js|python|react|app|site|landing page|componente|algoritmo)/i.test(normalized); const wantsPlan = /(plano|roadmap|cronograma|etapas|passos|estrat[eé]gia|projeto)/i.test(normalized); const wantsExplanation = /(explique|como funciona|o que [ée]|conceito|entenda|resuma)/i.test(normalized); const wantsMath = /(\d+\s*[\+\-\*x\/]\s*\d+)|quanto [ée]|calcule|resolver/i.test(normalized); const wantsGreeting = /\b(oi|ol[aá]|e ai|bom dia|boa tarde|boa noite)\b/i.test(normalized); const wantsTime = /\b(horas?|que horas|data de hoje|dia de hoje)\b/i.test(normalized); const wantsWeather = /\b(clima|tempo|temperatura|chuva|previs[aã]o)\b/i.test(normalized); const wantsNews = /\b(not[ií]cias?|novidades|acontecendo agora|ultimas?)\b/i.test(normalized); const wantsPublish = /\b(publicar|play store|apk|pwa|deploy|lan[çc]ar)\b/i.test(normalized); const wantsApi = /\b(api|endpoint|integra[çc][aã]o|modelo real|llm)\b/i.test(normalized); const wantsIDE = /\b(ide|editor|preview|compilar|executar)\b/i.test(normalized); if (wantsGreeting) { return joinSections([ `${settings.projectName} online no modo offline-first.`, toneLead(tone, "Posso gerar código, explicar arquitetura, resolver lógica, montar planos e estruturar um produto completo em uma única conversa."), "Diga o que você quer construir e eu respondo com objetividade." ]); } if (wantsTime) { const now = new Date(); return joinSections([ "Resultado local do navegador:", `Hora: ${now.toLocaleTimeString("pt-BR")}`, `Data: ${now.toLocaleDateString("pt-BR", { day: "2-digit", month: "long", year: "numeric" })}`, "Esse valor é obtido offline, diretamente do dispositivo." ]); } if (wantsWeather || wantsNews) { return joinSections([ "Posso estruturar a resposta, mas clima em tempo real e notícias atuais exigem uma fonte externa.", "No modo atual, o app permanece 100% offline. Para dados reais, conecte um endpoint no hook de API futura das configurações.", "Se quiser, eu já deixo o contrato de integração pronto em JavaScript." ]); } if (wantsMath) { return solveMath(input); } if (wantsCode) { return generateCodeResponse(input, tone); } if (wantsPlan) { return generatePlanResponse(input, tone); } if (wantsPublish) { return joinSections([ "Fluxo recomendado para publicação:", "1. Validar UX e lógica offline no arquivo único.", "2. Extrair manifest, ícones e service worker para virar PWA.", "3. Empacotar com Capacitor, TWA ou WebView se quiser APK.", "4. Conectar analytics, monetização e API real apenas quando o produto base estiver estável.", "A interface já inclui um painel visual de publicação para guiar esse processo." ]); } if (wantsApi) { return [ "A arquitetura já prevê integração futura com API real.", "", "Hook sugerido em JavaScript:", "```js", "async function fetchRealModel(prompt) {", " const endpoint = settings.apiHook;", " if (!endpoint) throw new Error('Configure um endpoint primeiro.');", " const response = await fetch(endpoint, {", " method: 'POST',", " headers: { 'Content-Type': 'application/json' },", " body: JSON.stringify({ prompt })", " });", " const data = await response.json();", " return data.output || data.message || '';", "}", "```", "", "Enquanto isso, o motor local continua respondendo sem backend." ].join("\n"); } if (wantsIDE) { return joinSections([ "A IDE local já está pronta no painel lateral.", "Ela permite editar HTML, CSS e JS, renderizar no `iframe` e observar logs básicos sem sair da SPA.", "Se quiser, eu também posso gerar agora um template inicial específico para o projeto que você está imaginando." ]); } if (wantsExplanation) { return generateExplanationResponse(input, tone); } return generateGeneralResponse(input, messageHistory, tone); } function generateCodeResponse(input, tone) { const lower = normalize(input); let language = "JavaScript"; let snippet = ""; if (/python/.test(lower)) { language = "Python"; snippet = [ "def executar_tarefa(itens):", " resultado = []", " for item in itens:", " if item:", " resultado.append(str(item).strip().upper())", " return resultado", "", "print(executar_tarefa(['zuna', ' ai ', 'offline']))" ].join("\n"); } else if (/react/.test(lower)) { language = "React"; snippet = [ "export function HeroCard({ title, subtitle }) {", " return (", "
", "

{title}

", "

{subtitle}

", " ", "
", " );", "}" ].join("\n"); } else if (/html|landing|site|pagina|p[aá]gina/.test(lower)) { language = "HTML/CSS/JS"; snippet = [ "
", "

Zuna AI

", "

Interface premium pronta para converter visitantes em usuarios.

", " ", "
", "", "", "", "