Pular para o conteúdo

Instalação

Este é o guia de configuração completo. Para uma configuração mínima de 5 minutos, veja Quickstart.

RequisitoVersãoObservações
Node.js20+LTS recomendado. Verifique: node -v
npm10+Incluído no Node 20
Git2.x+Com Git LFS para arquivos de dados grandes
Ferramentas de build C++Necessário para compilação nativa do better-sqlite3
DockerOpcional, apenas para Neo4j local
Terminal window
git clone https://github.com/sensdiego/juca.git
cd juca

Se o repositório usa Git LFS para arquivos de dados, execute também:

Terminal window
git lfs install
git lfs pull
Terminal window
npm install

Isso instala ~670 pacotes, incluindo o módulo nativo better-sqlite3. Se a compilação falhar:

  • macOS: xcode-select --install
  • Linux (Debian/Ubuntu): sudo apt-get install build-essential python3
  • Linux (RHEL/Fedora): sudo dnf groupinstall "Development Tools"

Copie o arquivo de exemplo e preencha seus valores:

Terminal window
cp .env.example .env.local

Variáveis obrigatórias (mínimo):

Terminal window
# Provedores de LLM — pelo menos Anthropic + Groq
ANTHROPIC_API_KEY=sk-ant-...
GROQ_API_KEY=gsk_...
# Bypass de autenticação em dev
ENABLE_DEV_AUTH=true

Opcionais mas recomendadas:

Terminal window
# Integração com o Valter (o backend principal)
VALTER_API_URL=https://valter-api-production.up.railway.app
VALTER_API_KEY=your-key
# Provedores de LLM adicionais
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
DEEPSEEK_API_KEY=sk-...
# Grafo de Conhecimento (modo JSON por padrão)
KG_PROVIDER=json

Veja Variáveis de Ambiente para a referência completa das 30+ variáveis.

Se quiser usar o grafo de conhecimento Neo4j localmente em vez de arquivos JSON:

Terminal window
docker compose up -d

Isso inicia uma instância do Neo4j Community 5. Em seguida, configure:

Terminal window
KG_PROVIDER=neo4j
NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=password

O projeto usa git hooks customizados em .githooks/:

HookAção
pre-commitRoda o ESLint nos arquivos em stage
pre-pushRoda a suíte de testes completa
post-checkoutTarefas de manutenção
post-commitTarefas de manutenção
post-mergeTarefas de manutenção

Os hooks são configurados automaticamente via o script prepare no package.json:

Terminal window
npm run prepare # Executa: git config core.hooksPath .githooks
Terminal window
# Iniciar o servidor de dev
npm run dev
# Em outro terminal, rodar os testes
npm test

Resultados esperados:

  • Servidor de dev inicia em http://localhost:3000 sem erros
  • Testes são executados (alguns podem falhar devido ao problema conhecido #270)

O Juca usa um build Docker multi-stage para deploy em produção:

Terminal window
# Build da imagem (ATENÇÃO: apenas para CI/Railway — NÃO rode localmente)
docker build -t juca .

O Dockerfile:

  1. Estágio deps — Instala as dependências npm
  2. Estágio build — Roda next build com saída standalone
  3. Estágio runtime — Imagem mínima de Node.js com apenas os artefatos de produção

O deploy no Railway acontece automaticamente ao fazer push para main.

ProblemaSolução
Falha na compilação do better-sqlite3Instale as ferramentas de build C++ (veja o passo 2)
Arquivos Git LFS aparecem como ponteirosExecute git lfs pull
Erros de autenticação em todas as páginasDefina ENABLE_DEV_AUTH=true no .env.local
”No API key configured”Adicione no mínimo ANTHROPIC_API_KEY e GROQ_API_KEY

Para outros problemas, veja Solução de Problemas.