diff --git a/.gitignore b/.gitignore index a3038fd..23ed777 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,21 @@ backend/test-db-users.js backend/test-db-users.cjs backend/pg-convert.js -# Override local de ambiente DEV (aponta o banco p/ pgdev) — NÃO versionar +# Segredos de ambiente — NÃO versionar (qualquer nível) .env +**/.env +backend/.env +.secrets +**/.secrets +*.dump +backend/server.js.bak # Dependências e caches locais node_modules/ frontend/node_modules/ backend/node_modules/ .claude/ + +# backups de env (segredos) — nunca versionar +*.env.bak* +backend/.env.bak* diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..8cb32ec --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,28 @@ +# Segredos e ambiente — NUNCA entram na imagem +.env +.env.* +*.secret +.secrets + +# Dependências e caches (reinstalados no build) +node_modules +npm-debug.log + +# Artefatos locais / backups / dados que não pertencem à imagem +*.bak +server.js.bak +sessions/ +media/ +data/ +bkp/ +*.dump + +# Diagnóstico temporário +test-db-users.js +test-db-users.cjs +pg-convert.js + +# Diversos +.git +.DS_Store +*.log diff --git a/backend/.env b/backend/.env deleted file mode 100644 index 44c4cf4..0000000 --- a/backend/.env +++ /dev/null @@ -1,45 +0,0 @@ -# ───────────────────────────────────────────── -# Server -# ───────────────────────────────────────────── -PORT=8018 -NODE_ENV=development -JWT_SECRET=scoreodonto_jwt_secret_forte_2026 - -# ───────────────────────────────────────────── -# PostgreSQL (Prisma) -# ───────────────────────────────────────────── -DATABASE_URL="postgresql://scoreodonto_user:clube67_scoreodonto_pass_9903@10.99.0.3:5432/scoreodonto?schema=public" - -# ───────────────────────────────────────────── -# DragonflyDB (compatível com Redis) -# ───────────────────────────────────────────── -DRAGONFLY_URL=redis://:clube67_dragonfly_pass_9903@10.99.0.3:6379/1 -DRAGONFLY_TTL_SECONDS=86400 - -# ───────────────────────────────────────────── -# NATS JetStream -# ───────────────────────────────────────────── -NATS_URL=nats://10.99.0.3:4222 - -# ───────────────────────────────────────────── -# Temporal.io -# ───────────────────────────────────────────── -TEMPORAL_ADDRESS=10.99.0.3:7233 -TEMPORAL_NAMESPACE=default -TEMPORAL_TASK_QUEUE=scoreodonto-queue - -# ───────────────────────────────────────────── -# IA (OpenAI + Google Gemini) -# ───────────────────────────────────────────── -OPENAI_API_KEY=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 -GEMINI_API_KEY=AIza... - -# ───────────────────────────────────────────── -# WhatsApp / Baileys -# ───────────────────────────────────────────── -BAILEYS_SESSIONS_PATH=/home/deploy/scoreodonto-sessions - -# ───────────────────────────────────────────── -# Frontend (CORS) -# ───────────────────────────────────────────── -FRONTEND_URL=http://localhost:3013 diff --git a/backend/.env.example b/backend/.env.example new file mode 100644 index 0000000..4249dc7 --- /dev/null +++ b/backend/.env.example @@ -0,0 +1,26 @@ +# Modelo de variáveis de ambiente do backend (SEM segredos). +# Copie para .env e preencha com valores REAIS. O .env NÃO é versionado. +PORT=8018 +NODE_ENV=production + +# Segredo de assinatura dos tokens JWT — gerar com: openssl rand -hex 48 +JWT_SECRET= + +# Banco e cache (não versionar valores reais) +DATABASE_URL=postgresql://USER:SENHA@HOST:5432/BANCO?schema=public +DRAGONFLY_URL=redis://:SENHA@HOST:6379/1 +DRAGONFLY_TTL_SECONDS=3600 + +# Mensageria / workflows +NATS_URL=nats://HOST:4222 +TEMPORAL_ADDRESS=HOST:7233 +TEMPORAL_NAMESPACE=default +TEMPORAL_TASK_QUEUE=scoreodonto + +# Chaves de IA (rotacionáveis apenas nos painéis dos provedores) +OPENAI_API_KEY= +GEMINI_API_KEY= + +# Caminhos / front +BAILEYS_SESSIONS_PATH=/app/sessions +FRONTEND_URL=https://scoreodonto.com