Quickstart
Quickstart
Seção intitulada “Quickstart”Esta página entrega o caminho mais rápido e confiável para rodar o Leci localmente e confirmar que o ambiente está funcional.
O quickstart prioriza primeira execução bem-sucedida
Seção intitulada “O quickstart prioriza primeira execução bem-sucedida”O objetivo aqui é validar o baseline do repositório em poucos minutos, sem cobrir todas as opções avançadas. Você vai instalar dependências, configurar variáveis de ambiente, aplicar migrations e iniciar o app.
Pré-requisitos mínimos e explícitos
Seção intitulada “Pré-requisitos mínimos e explícitos”Antes de executar os comandos, você precisa de:
- Node.js
>=20.0.0(definido empackage.json) - npm
>=10.0.0(definido empackage.json) - acesso a um PostgreSQL com
DATABASE_URL
O projeto atualmente usa:
- Next.js para runtime da aplicação
pgpara conexão com banco no script de migration- convenção Drizzle com SQL versionado em
drizzle/
Execute os comandos nesta ordem
Seção intitulada “Execute os comandos nesta ordem”Rode exatamente esta sequência na raiz do repositório.
# 1) Instalar dependênciasnpm install
# 2) Criar arquivo local de ambientecp .env.example .env
# 3) Definir DATABASE_URL no .env# Exemplo de formato:# DATABASE_URL=postgresql://user:password@host:5432/database
# 4) Aplicar migrations SQLnpx tsx scripts/migrate.ts
# 5) Iniciar servidor de desenvolvimentonpm run devDepois abra:
http://localhost:3000
Resultado esperado da UI atual:
- título
Leci - subtítulo
Plataforma de busca de legislação brasileira federal
Valide comandos de qualidade básicos
Seção intitulada “Valide comandos de qualidade básicos”Depois que o app subir, rode os checks abaixo.
# Verificação de lintnpm run lint
# Runner de testes (hoje sem suites, mas comando deve executar)npm testNo estado atual, saída com zero testes é esperada.
Entenda o comportamento de migration antes de reexecutar
Seção intitulada “Entenda o comportamento de migration antes de reexecutar”O runner (scripts/migrate.ts) lê todos os arquivos .sql de drizzle/, ordena por prefixo numérico e executa tudo em sequência a cada execução.
const files = fs.readdirSync(drizzleDir) .filter((file) => file.endsWith(".sql")) .sort((a, b) => { const aNum = Number.parseInt(a.split("_")[0] ?? "0", 10); const bNum = Number.parseInt(b.split("_")[0] ?? "0", 10); return aNum - bNum; });Falhas comuns no quickstart e correções imediatas
Seção intitulada “Falhas comuns no quickstart e correções imediatas”Estes são os problemas mais frequentes na primeira execução.
Erro: DATABASE_URL is not set
Seção intitulada “Erro: DATABASE_URL is not set”Causa: .env ausente ou variável vazia.
Correção:
- Garanta que
.envexiste. - Garanta que
DATABASE_URL=está preenchido. - Rode migration novamente.
Erro: conexão com PostgreSQL recusada/timeout
Seção intitulada “Erro: conexão com PostgreSQL recusada/timeout”Causa: host inacessível ou credencial incorreta.
Correção:
- Revise host/porta/usuário/senha na
DATABASE_URL. - Valide acesso de rede (VPN/firewall) se banco hospedado.
- Teste a URL em cliente SQL e tente novamente.
Erro ao aplicar SQL de migration
Seção intitulada “Erro ao aplicar SQL de migration”Causa: permissão insuficiente, extensão ausente ou SQL não-idempotente.
Correção:
- Verifique permissões para criar schema/extensões.
- Revise requisitos do
drizzle/0001_init.sql(ex.: extensãovector). - Inspecione o statement exato que falhou.
App sobe, mas não tem telas avançadas
Seção intitulada “App sobe, mas não tem telas avançadas”Causa: estado atual do produto.
🚧 Planned Feature — Fluxos completos de busca/navegação/leitura estão no roadmap e ainda não foram implementados.
Próximos passos após quickstart
Seção intitulada “Próximos passos após quickstart”Depois de validar o baseline:
- Leia
docs/getting-started/installation.mdpara setup completo e reproduzível. - Leia
docs/development/setup.mdpara fluxo diário de desenvolvimento. - Leia
docs/features/index.mdpara entender status por capability.