Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Sistema web para gestão de escalas de trabalho, colaboradores, ausências e plantões. Uma máquina roda o servidor; qualquer dispositivo da rede acessa pelo navegador, sem instalar nada.
| Camada | Stack |
|---|---|
| Frontend | HTML, CSS e JavaScript |
| Backend | Node.js 22+ e Express |
| Banco de dados | SQL Server |
Sobe o servidor e o banco juntos, sem instalar Node nem SQL Server na máquina (exige o Docker Desktop e a máquina virtual do WSL 2, que ocupa alguns GB de RAM):
cp .env.docker.example .env
docker compose up -d --build
Acesse http://localhost:4450. O banco SoftwareEscalas, as tabelas e o
administrador são criados automaticamente na primeira subida — se ADMIN_PASSWORD
ficar vazio, a senha aparece uma única vez em docker compose logs app. Os dados
ficam em volumes e sobrevivem a reinícios; com restart: always os containers
voltam sozinhos quando a máquina liga.
O app conecta com um login próprio, escalas_app, dono só do banco do app (senha
em APP_DB_PASSWORD no .env); o sa fica só para o passo que cria banco e
login. A porta 1433 do SQL só aceita conexão desta máquina. Quem já usava o
Docker com o sa segue o passo a passo de atualização em
docs/DOCKER.md.
O app roda sem root (usuário node da imagem). Ele só grava em /data (volume
app-data) e na pasta de backup — que deve ficar dentro de /data (ex.:
/data/backups) ou num volume montado. Um passo curto do compose
(app-permissoes) acerta o dono de /data antes de o app subir, o que também
migra volumes criados por versões antigas. Se atualizar só o app com
docker compose up -d --no-deps app, rode antes docker compose run --rm app-permissoes.
docker compose down
Requer Node 22.12+ e um SQL Server na máquina (o Express serve). O app conecta por TCP/IP, que o SQL Server Express traz desabilitado; o script abaixo, rodado uma vez no PowerShell como Administrador, habilita o TCP/IP numa porta fixa, cria o banco e um login próprio do app e libera a porta 4450 no firewall:
powershell -ExecutionPolicy Bypass -File scripts\preparar-sql-server.ps1
npm install
npm start
Acesse http://localhost:4450. Configure a conexão com o SQL Server pela própria
tela de configuração inicial (veja Configuração inicial do banco).
Um arquivo .env na raiz do projeto (modelo em .env.example) é
lido na subida — útil para PORT e ADMIN_PASSWORD. O passo a passo completo
está em docs/SERVIDOR-COMO-INSTALAR.md.
Uma verificação completa antes de abrir um Pull Request (o CI roda o mesmo):
npm run verificar
Ela executa, em ordem:
| Comando | O que faz |
|---|---|
npm run smoke | Checagem de sintaxe de todos os .js |
npm run lint | ESLint. O frontend é analisado como módulos ES sem nenhum global do projeto: nome que não é import, local ou API do navegador é erro, e função sem uso também |
npm run typecheck | TypeScript em modo checkJs sobre backend, scripts e testes |
npm run format:check | Prettier (por enquanto só nos arquivos novos — ver .prettierignore) |
npm test | Testes unitários das regras de negócio, sem banco |
Sobem o servidor em processo contra um SQL Server descartável em Docker e exercitam as rotas por HTTP: login e permissões, colaboradores, lançamentos, folgas de domingo, limite de setores e backup/restauração.
npm run integracao:banco:subir
npm run test:integracao
O banco de teste fica em 127.0.0.1:14339 (container escalas-integracao-db) e
é apagado e recriado a cada execução. Por segurança, os testes só aceitam banco
com "Integracao" no nome — nunca tocam a produção (porta 4450/1433).
npm run integracao:banco:derrubar remove o container.
Para conferir telas no navegador com dados de exemplo, sem tocar na produção:
npm run integracao:servidor
Abra http://127.0.0.1:4480 (login admin / Admin!Integracao1).
tests/integracao/golden-master.js executa um roteiro fixo por todas as rotas de
dados e fotografa todas as tabelas. Gere antes da mudança e compare depois
(no mesmo dia):
node tests/integracao/golden-master.js gerar antes.json
node tests/integracao/golden-master.js comparar antes.json
npm run e2e:demo
This is the beginning of the README. Read the rest at the original. Read the full README ↗