-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy path.env.example
More file actions
158 lines (137 loc) · 6.4 KB
/
Copy path.env.example
File metadata and controls
158 lines (137 loc) · 6.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# Este arquivo é a fonte de variáveis de ambiente para o Docker Compose
# (docker-compose.yml injeta ./.env em backend e scraper-go via env_file).
# Copie para `.env` e preencha os segredos antes de subir o projeto.
# ---------------------------------------------------------------------------
# Runtime
# ---------------------------------------------------------------------------
NODE_ENV=development
PORT=3001
# ---------------------------------------------------------------------------
# URLs base
# ---------------------------------------------------------------------------
APP_URL=http://localhost:3001
FRONTEND_URL=http://localhost:5173
# ---------------------------------------------------------------------------
# Sessão (backend) — obrigatória
# ---------------------------------------------------------------------------
# Qualquer string longa e aleatória. Gere uma com:
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
SESSION_SECRET=
# ---------------------------------------------------------------------------
# Segurança / criptografia de PII (backend) — obrigatórias
# ---------------------------------------------------------------------------
# ENCRYPTION_MASTER_KEY precisa ter 64 caracteres hexadecimais (32 bytes).
# Gere uma com o mesmo comando acima.
ENCRYPTION_MASTER_KEY=
ENCRYPTION_KEY_ID=default
# Qualquer string secreta não vazia (usada para gerar hashes pesquisáveis de e-mail/CPF).
SEARCH_KEY=
# ---------------------------------------------------------------------------
# CORS (backend)
# ---------------------------------------------------------------------------
# Fonte da verdade das origens permitidas. Em produção, se vazio, cai apenas
# em *.candidate.app.br (localhost nunca entra por fallback em produção).
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:5174
# ---------------------------------------------------------------------------
# Rate limit de autenticação (backend) — login e cadastro têm buckets próprios.
# Variável ausente ou inválida (<= 0 ou não numérica) usa o default indicado.
# ---------------------------------------------------------------------------
AUTH_RATE_LIMIT_IP_MAX=20
AUTH_RATE_LIMIT_ACCOUNT_MAX=5
AUTH_RATE_LIMIT_WINDOW_SECONDS=900
# ---------------------------------------------------------------------------
# Banco de dados / cache
# ---------------------------------------------------------------------------
POSTGRES_USER=vagas
POSTGRES_PASSWORD=vagas
POSTGRES_DB=vagas
# Use esta URL quando backend/scraper rodarem fora do Docker e o banco/Valkey
# estiverem expostos no host (veja LOCAL_DEVELOPMENT.md para expor as portas).
DATABASE_URL=postgresql://vagas:vagas@localhost:5432/vagas
VALKEY_URL=redis://localhost:6379/0
# Dentro do Docker Compose, o backend/scraper-go já recebem
# VALKEY_URL=redis://valkey:6379/0 via `environment:` no docker-compose.yml,
# sobrescrevendo o valor acima — não precisa duplicar aqui.
CACHE_TTL_MS=600000
REDIS_KEY_PREFIX=vagas-full
KEYWORDS_STORAGE_MODE=env
# Liga/desliga POST /keywords no backend e o consumidor da fila
# scraper:keywords:pending no scraper-go (kwsync). Mantenha false em dev
# a menos que você esteja testando esse fluxo especificamente.
KWSYNC_ENABLED=false
# ---------------------------------------------------------------------------
# E-mail transacional (backend)
# ---------------------------------------------------------------------------
# Vazio ⇒ provider no-op (apenas loga, não envia). Preencha com a chave da
# Resend para enviar de verdade.
EMAIL_API_KEY=
EMAIL_FROM_ADDRESS=
EMAIL_FROM_NAME=
EMAIL_QUEUE_ATTEMPTS=3
# ---------------------------------------------------------------------------
# Integração backend <-> scraper-go
# ---------------------------------------------------------------------------
# Usada pelos adapters goScraper.ts/goKeywords.ts (fluxo de scraping/keywords direto).
GO_SCRAPER_URL=http://localhost:8081
# Usada pelo scraperClient nos endpoints administrativos /admin/scrapers/*.
# É uma variável distinta de GO_SCRAPER_URL, mesmo apontando ao mesmo serviço.
SCRAPER_URL=http://localhost:8081
# Endereço em que o próprio scraper-go escuta (opcional, default :8081).
GO_SCRAPER_ADDR=:8081
# ---------------------------------------------------------------------------
# Observabilidade
# ---------------------------------------------------------------------------
PROMETHEUS_URL=http://localhost:9090
# ---------------------------------------------------------------------------
# OAuth (opcional — só necessário para testar login social)
# ---------------------------------------------------------------------------
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
# ---------------------------------------------------------------------------
# Frontend / front_admin (usadas como build args pelo Docker Compose)
# ---------------------------------------------------------------------------
VITE_API_BASE_URL=http://localhost:3001
VITE_API_URL=http://localhost:3001
VITE_APP_ENV=development
# ---------------------------------------------------------------------------
# scraper-go — concorrência e limites de execução
# ---------------------------------------------------------------------------
SCRAPER_MAX_CONCURRENCY=12
SCRAPER_PROVIDER_MAX_CONCURRENCY=2
SCRAPER_PROVIDER_CONCURRENCY_OVERRIDES=
SCRAPER_RUN_LOCK_TTL=120s
SCRAPER_RUN_LOCK_RENEW_INTERVAL=30s
SCRAPER_CLASSIFICATION_BATCH_SIZE=100
SCRAPER_PERSIST_BATCH_SIZE=100
SCRAPER_INDEX_BATCH_SIZE=250
GOMAXPROCS=2
GOMEMLIMIT=1500MiB
# ---------------------------------------------------------------------------
# scraper-go — fontes de vagas de terceiros (todas opcionais)
# ---------------------------------------------------------------------------
ADZUNA_APP_ID=
ADZUNA_APP_KEY=
ADZUNA_KEYWORD_SLOT_SIZE=30
JOOBLE_API_KEY=
JOOBLE_API_BASE=https://br.jooble.org/api
THEMUSE_API_KEY=
LINKEDIN_KEYWORD_SLOT_SIZE=30
GUPY_ENABLED=true
GUPY_RAW_DISCOVERY_ENABLED=true
GUPY_FULL_SWEEP_ENABLED=true
GUPY_FULL_REMOTE_SWEEP_ENABLED=true
GUPY_QUERY_LIMIT=60
INHIRE_ENABLED=true
INHIRE_TENANTS_FILE=./internal/interfaces/inhireTenants.json
INHIRE_ENRICH_DETAILS=false
INHIRE_DETAILS_MODE=ambiguous
INHIRE_DETAILS_TIMEOUT_MS=10000
GREENHOUSE_ENABLED=true
GREENHOUSE_COMPANIES_FILE=./internal/interfaces/greenhouseCompanies.json
LEVER_ENABLED=false
LEVER_COMPANIES_FILE=./internal/interfaces/leverCompanies.json
LEVER_INCLUDE_ALL_JOBS=true