Configuração de Desenvolvimento
Pré-requisitos
- Docker / Docker Compose
- Node.js (consulte
engines.nodeempackage.json) - pnpm (consulte
engines.pnpm/packageManagerempackage.json) - SQLite3
- Inkscape (para tradução de SVGs da documentação e exportação para PNG; necessário apenas se você executar
translateoutranslate:svg) - bat/batcat (para exibir uma versão formatada do
translate:help) - direnv (para carregar automaticamente os arquivos
.env*)
Etapas
1. Clonar o repositório:
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. Instalar dependências (Debian/Ubuntu):
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
3. Remover instalações antigas do Node.js (se já estiver instalado)
sudo apt-get purge nodejs npm -y
sudo apt-get autoremove -y
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/share/man/man1/node*
sudo rm -rf /usr/local/lib/dtrace/node.d
rm -rf ~/.npm
rm -rf ~/.node-gyp
sudo rm -rf /opt/local/bin/node
sudo rm -rf /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/include/node*
sudo rm -rf /usr/local/bin/node*
4. Instalar Node.js e pnpm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm install -g pnpm npm-check-updates doctoc
5. Configurar suporte ao direnv
Adicione estas linhas ao arquivo ~/.bashrc
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
com este comando:
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
no diretório base do repositório, execute:
direnv allow
Adicione estas linhas ao arquivo ~/.profile
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
com este comando:
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
Você precisa reabrir o terminal ou pode precisar fechar/reabrir o IDE do editor de código (Visual Studio Code, Cursor, Lingma, Antigravity, Zed, ...) para que essas alterações entrem em vigor.
6. Criar o arquivo .env no diretório base do repositório com essas variáveis.
-
Você pode usar qualquer valor para
VERSION; ele será atualizado automaticamente ao usar os scripts de desenvolvimento. -
Use senhas aleatórias para
ADMIN_PASSWORDeUSER_PASSWORD; essas senhas serão usadas no scriptpnpm take-screenshots. -
Você pode obter a
OPENROUTER_API_KEYem openrouter.ai.VERSION=x.x.x# Development user passwordsADMIN_PASSWORD="admin_secret"USER_PASSWORD="user_secret"# Openrouter.ai API key for translation scripts in documentationOPENROUTER_API_KEY=sk-or-v1-your-key-for-translate-files
Scripts Disponíveis
O projeto inclui vários scripts npm para diferentes tarefas de desenvolvimento:
Scripts de Desenvolvimento
pnpm dev- Iniciar servidor de desenvolvimento na Porta 8666 (inclui pré-verificações)pnpm build- Compilar a aplicação para produção (inclui pré-verificações)pnpm lint- Executar ESLint para verificar a qualidade do códigopnpm typecheck- Executa a verificação de tipos do TypeScriptscripts/upgrade-dependencies.sh— Atualização segura de build de cada pacote do workspace (detectados automaticamente). Usa o modo doctor donpm-check-updatespara manter apenas as atualizações que passam notypecheck/lintde cada pacote, revertendo aquelas que quebram o build; em seguida, executapnpm audit/audit --fixe aplica obrigatoriamente (e reporta) qualquer correção de segurança que exija alterações no código. Atualiza o lockfile do workspace e o browserslist. Prefirasource ./scripts/upgrade-dependencies.shpara que o nvm seja aplicado ao seu shell; em CI ou automação, useCI=1ouUPGRADE_ALLOW_EXEC=1ao executar o arquivo diretamente. Veja tambémscripts/upgrade-tools.shapenas para ferramentas Node/pnpm.scripts/clean-workspace.sh- Limpa o workspace
Nota: O script preinstall aplica automaticamente o pnpm como gerenciador de pacotes.
Scripts de Documentação
Estes scripts devem ser executados a partir do diretório documentation/:
pnpm start- Compila e serve o site de documentação em modo de produção (porta 3000 por padrão)pnpm start:en- Inicia o servidor de desenvolvimento da documentação em inglês (recarga automática habilitada)pnpm start:fr- Inicia o servidor de desenvolvimento da documentação no idioma francês (recarga automática habilitada)pnpm start:de- Inicia o servidor de desenvolvimento da documentação no idioma alemão (recarga automática habilitada)pnpm start:es- Inicia o servidor de desenvolvimento da documentação no idioma espanhol (recarga automática habilitada)pnpm start:pt-br- Inicia o servidor de desenvolvimento da documentação no idioma português (Brasil) (recarga automática habilitada)pnpm build- Compila o site de documentação para produçãopnpm write-translations- Extrai strings traduzíveis da documentaçãopnpm translate- Traduz arquivos de documentação usando IA (veja Fluxo de Tradução)pnpm lint- Executa o ESLint nos arquivos-fonte da documentação
Os servidores de desenvolvimento (start:*) fornecem substituição de módulo em tempo real para desenvolvimento rápido. A porta padrão é 3000.
Scripts de Produção
pnpm build-local- Compilar e preparar para produção local (inclui pré-verificações, copia arquivos estáticos para diretório standalone)pnpm start-local- Iniciar servidor de produção localmente (porta 8666, inclui pré-verificações). Nota: Executepnpm build-localprimeiro.pnpm start- Iniciar servidor de produção (porta 9666)
Scripts do Docker
pnpm docker:up- Iniciar stack do Docker Composepnpm docker:down- Parar stack do Docker Composepnpm docker:clean- Limpar ambiente e cache do Dockerpnpm docker:devel- Criar uma imagem Docker de desenvolvimento marcada comowsj-br/duplistatus:devel
Scripts do Serviço Cron
pnpm cron:start- Iniciar serviço cron em modo de produçãopnpm cron:dev- Iniciar serviço cron em modo de desenvolvimento com observação de arquivos (porta 8667)pnpm cron:start-local- Iniciar serviço cron localmente para testes (porta 8667)
Scripts de Teste
pnpm generate-test-data- Gerar dados de backup de teste (requer parâmetro --servers=N)pnpm validate-csv-export- Validar funcionalidade de exportação CSVpnpm test-entrypoint- Testar script de entrada do Docker no desenvolvimento local (veja Scripts de Teste)pnpm take-screenshots- Tirar capturas de tela para documentação (consulte Ferramentas de Documentação)
Verificações Atrasado, verificações de saúde do cron e testes SMTP são feitos através do aplicativo em execução e curl (consulte Test Scripts); os antigos auxiliares autônomos pnpm para esses foram removidos.