Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Haumea

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.

Painel do Haumea

Por que usar

  • 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.

Recursos confirmados

Conversa e modelos

  • 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.

Aprendizado e personalização

  • 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.

Conteúdo e visualização

  • 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.

Organização e colaboração

  • 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.

Arquitetura

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.

Tecnologias

  • 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

Pré-requisitos

  • 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.

Instalação

git clone https://github.com/riique/Haumea.git
cd Haumea
npm install
npm --prefix haumea-functions install

Frontend

Copy-Item .env.example .env.local

Preencha 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=...

Funções

Copy-Item haumea-functions/.env.example haumea-functions/.env

Gere uma chave hexadecimal de 32 bytes:

openssl rand -hex 32

Alé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_KEY

Não envie .env, .env.local, chaves de API ou senhas ao Git.

Executar localmente

Frontend:

npm run dev

Acesse http://localhost:3000.

Para compilar as funções:

npm --prefix haumea-functions run build

O script serve das funções inicia o emulador correspondente:

npm --prefix haumea-functions run serve

Comandos

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

Regras e publicação

Revise e publique as regras antes de disponibilizar a aplicação:

firebase deploy --only firestore:rules,firestore:indexes,storage

Para publicar tudo:

npm run deploy

O firebase.json também configura cabeçalhos de segurança e cache para o Hosting.

Estrutura

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

Segurança e privacidade

  • 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.

Estado e limitações

  • 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.

Contribuição

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 build

Não inclua dados de conversas, arquivos de usuários, credenciais do Firebase ou chaves de provedores.

Licença

Distribuído sob a licença MIT. Consulte LICENSE.

Releases

Packages

Contributors

Languages