Uma central de conversas com IA para estudar, debater, organizar conhecimento e comparar modelos sem ficar preso a um único provedor.
O Haumea oferece chat multimodal com modelos do catálogo OpenRouter, transcrição de áudio pelo Gemini, personas, memórias, compartilhamento e visualizações ricas. A aplicação usa Next.js no frontend e Firebase para autenticação, dados, arquivos e funções de backend.
- Escolha o modelo por tarefa: pesquise o catálogo do OpenRouter, filtre por provedor, compare contexto e preços e favorite modelos.
- Leve seu próprio acesso: cadastre chaves OpenRouter para chat e Gemini para transcrição.
- Mantenha o trabalho organizado: use pastas, subpastas, pesquisa e nomes personalizados.
- Adapte o comportamento: crie personas, instruções de sistema e memórias.
- Vá além do chat simples: use modo de debate, estudo guiado e raciocínio compatível com o modelo.
- Trabalhe com conteúdo real: anexe imagens, PDF, áudio, DOCX e texto dentro dos limites configurados.
- Compartilhe do seu jeito: gere cópias ou chats colaborativos com convites.
- Exporte o resultado: baixe HTML, JSON ou TXT; o HTML exportado também oferece geração de PDF no navegador.
- respostas em streaming;
- seleção e cache do catálogo OpenRouter;
- busca, ordenação, favoritos e histórico de uso de modelos;
- confirmação antes de selecionar modelos acima do limite de preço definido na interface;
- suporte a modelos com visão e áudio quando informado pelo catálogo;
- chaves múltiplas de OpenRouter e Gemini;
- consulta de créditos do OpenRouter;
- endpoint personalizado previsto na base de código, mas não exportado atualmente pelo backend.
- prompt padrão do Haumea;
- modo de estudo guiado;
- modo de debate com turnos, personas e configuração própria;
- personas personalizadas;
- memórias globais e específicas;
- modo incógnito sem memórias e sem persistência da conversa.
- Markdown com tabelas e listas;
- fórmulas com KaTeX;
- diagramas Mermaid;
- gráficos Plotly;
- estruturas químicas com OpenChemLib;
- blocos de código com destaque de sintaxe;
- imagens anexadas ou geradas pelo modelo;
- gravação, reprodução e transcrição de áudio;
- reprocessamento de transcrições que falharam.
- chats e pastas sincronizados com o Firestore;
- cache local em IndexedDB;
- rascunhos;
- compartilhamento por cópia ou colaboração;
- notificações de chats compartilhados;
- estatísticas de uso e leaderboard público de custos;
- painel administrativo para usuários e limpeza forçada de cache.
Next.js 15 + React 19
├── Firebase Authentication
├── Firestore + sincronização em tempo real
├── IndexedDB para cache local
├── Firebase Storage
└── Cloud Functions
├── OpenRouter: chat, modelos e créditos
├── Gemini: transcrição
├── chaves criptografadas
├── debate e compartilhamento
└── administração e métricas
O frontend usa exportação estática (output: "export") e é publicado pelo Firebase Hosting. As funções usam Node.js 22.
- Next.js 15, React 19 e TypeScript
- Tailwind CSS e Framer Motion
- Firebase Authentication, Firestore, Storage, Hosting e Cloud Functions
- OpenRouter e Google Gemini
- Zod
- KaTeX, Mermaid, Plotly e OpenChemLib
- DOMPurify
- IndexedDB
- Node.js 22;
- npm;
- Firebase CLI;
- projeto Firebase com Authentication por e-mail/senha, Firestore, Storage, Functions e Hosting;
- chave OpenRouter para conversas;
- chave Gemini para transcrição, se esse recurso for usado;
- plano do Firebase compatível com Cloud Functions e serviços externos.
git clone https://github.com/riique/Haumea.git
cd Haumea
npm install
npm --prefix haumea-functions installCopy-Item .env.example .env.localPreencha a configuração Web do Firebase e as URLs das funções:
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_CHAT_FUNCTION_URL=...
NEXT_PUBLIC_DEBATE_FUNCTION_URL=...Copy-Item haumea-functions/.env.example haumea-functions/.envGere uma chave hexadecimal de 32 bytes:
openssl rand -hex 32Além de ENCRYPTION_KEY, o backend valida ADMIN_PASSWORD em execução nas Cloud Functions. Use senhas fortes e configure segredos pelo mecanismo do Firebase em produção.
firebase functions:secrets:set ENCRYPTION_KEYNão envie .env, .env.local, chaves de API ou senhas ao Git.
Frontend:
npm run devAcesse http://localhost:3000.
Para compilar as funções:
npm --prefix haumea-functions run buildO script serve das funções inicia o emulador correspondente:
npm --prefix haumea-functions run serve| Comando | Finalidade |
|---|---|
npm run dev |
inicia o Next.js com Turbopack |
npm run build |
gera a exportação estática em out/ |
npm run start |
inicia o servidor Next.js |
npm run lint |
executa o ESLint |
npm run deploy |
compila e publica a configuração Firebase |
npm run deploy:hosting |
publica somente o Hosting |
npm run deploy:functions |
publica somente as Functions |
Revise e publique as regras antes de disponibilizar a aplicação:
firebase deploy --only firestore:rules,firestore:indexes,storagePara publicar tudo:
npm run deployO firebase.json também configura cabeçalhos de segurança e cache para o Hosting.
app/ rotas de autenticação, painel, admin e conversor
components/ chat, navegação, renderizadores e modais
contexts/ autenticação, tema e estado do painel
hooks/ dados, colaboração, debate, cache e gravação
lib/db/ IndexedDB, cache e migrações
lib/services/ Firestore, Storage, OpenRouter e domínio do app
haumea-functions/ backend Firebase em TypeScript
System Prompts/ prompts dos modos principais
scripts/ utilitários de recuperação
- chaves persistidas pelo backend usam AES-256-GCM com IV e tag de autenticação;
- as regras do Firestore isolam os dados do usuário e tratam compartilhamentos separadamente;
- as regras do Storage limitam arquivos por proprietário e colaboração;
- conteúdo HTML renderizado passa por sanitização;
- o Hosting define políticas de frame, MIME, referência e permissões;
- sair da conta limpa o cache local.
Revise as regras e as permissões administrativas para sua instalação. “Open source” não significa que uma implantação pública esteja segura sem configuração.
- Autenticação implementada por e-mail e senha; provedores sociais não estão configurados no código atual.
- Custos e disponibilidade dependem do OpenRouter, Gemini e Firebase.
- Nem todo modelo aceita imagens, áudio, PDF, ferramentas ou raciocínio.
- O modo incógnito evita a persistência da conversa pelo fluxo do app, mas chamadas ainda passam pelos provedores externos escolhidos.
- O catálogo e os preços mostrados vêm das APIs e podem mudar.
- O conversor importa apenas JSON do formato antigo esperado.
- O repositório não inclui uma suíte automatizada de testes; valide build, regras e emuladores antes do deploy.
Abra uma issue com contexto reproduzível ou envie um pull request pequeno. Antes de enviar:
npm run lint
npm run build
npm --prefix haumea-functions run buildNão inclua dados de conversas, arquivos de usuários, credenciais do Firebase ou chaves de provedores.
Distribuído sob a licença MIT. Consulte LICENSE.
