Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
130 lines (115 loc) · 5.28 KB
/
Copy path.env.example
File metadata and controls
130 lines (115 loc) · 5.28 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
# Copy to .env before running docker compose:
# cp .env.example .env (PowerShell: Copy-Item .env.example .env)
#
# These are LOCAL DEVELOPMENT credentials. Never reuse them anywhere real.
# --- PostgreSQL ---
POSTGRES_USER=ticketflow
POSTGRES_PASSWORD=ticketflow
# Host port only. Inside the Docker network Postgres is always on 5432.
# Defaults to 5433 to avoid clashing with a native PostgreSQL install.
POSTGRES_PORT=5433
# --- MongoDB ---
MONGO_ROOT_USER=root
MONGO_ROOT_PASSWORD=root
MONGO_PORT=27017
# --- Kafka ---
KAFKA_EXTERNAL_PORT=9092
# --- Aplicação (perfil `apps`) ---
# Host ports only; dentro do container as portas não mudam.
ORDER_SERVICE_PORT=8081
PAYMENT_SERVICE_PORT=8082
PAYMENT_GATEWAY_PORT=8090
# --- Autenticação ---
# Fora dos perfis `local` e `docker` estas duas NÃO têm valor padrão: o serviço se
# recusa a subir sem a chave, e o emissor de token vem desligado. É deliberado —
# havia um padrão publicado neste repositório, e um ambiente que suba com a chave
# de exemplo aceita token forjado por qualquer pessoa.
#
# No compose os dois já vêm com valor de brincadeira; só descomente para trocar.
# TICKETFLOW_AUTH_SECRET=troque-isto-por-32-caracteres-ou-mais
# TICKETFLOW_DEV_TOKENS=true
# --- AWS simulada (perfil `aws`) ---
LOCALSTACK_PORT=4566
# Ligue junto com o perfil `aws` para o Notification Service arquivar no S3.
TICKETFLOW_ARCHIVE_ENABLED=false
# --- Observabilidade (perfil `observability`) ---
# Portas de host. Dentro da rede Docker não mudam.
PROMETHEUS_PORT=9091
GRAFANA_PORT=3002
# --- Web UIs ---
KAFKA_UI_PORT=8085
NOTIFICATION_SERVICE_PORT=8083
# =============================================================================
# Nuvem gerenciada (docker-compose.cloud.yml, perfil Spring `cloud`)
#
# Só os NOMES ficam aqui. Os valores vão para o `.env`, que o git ignora — e é
# por isso que este arquivo existe: alguém que clona o repositório descobre o
# que precisa preencher sem que nenhum segredo tenha sido publicado.
#
# Nenhuma destas tem valor padrão na aplicação: faltar derruba o boot, de
# propósito.
# =============================================================================
# --- Order Service: Supabase ---
# ATENÇÃO: use o *session pooler*, não a conexão direta.
# A direta só responde em IPv6 e o Render sai por IPv4; o transaction pooler
# (6543) quebra prepared statements do Hibernate. O session pooler é IPv4 e
# mantém a sessão.
# jdbc:postgresql://aws-0-<regiao>.pooler.supabase.com:5432/postgres?sslmode=require
# POSTGRES_ORDERS_URL=
# POSTGRES_ORDERS_USER=postgres.<referencia-do-projeto>
# POSTGRES_ORDERS_PASSWORD=
# --- Payment Service: Neon ---
# jdbc:postgresql://<endpoint>.neon.tech/neondb?sslmode=require
# POSTGRES_PAYMENTS_URL=
# POSTGRES_PAYMENTS_USER=neondb_owner
# POSTGRES_PAYMENTS_PASSWORD=
# --- Notification Service: MongoDB Atlas ---
# A URI carrega usuário e senha; é segredo inteiro.
# mongodb+srv://<usuario>:<senha>@<cluster>.mongodb.net/ticketflow_notifications?retryWrites=true&w=majority
# MONGO_URI=
# --- Kafka: Redpanda Cloud (SASL_SSL + SCRAM-SHA-256) ---
# KAFKA_BOOTSTRAP=<id>.any.<regiao>.mpx.prd.cloud.redpanda.com:9092
# KAFKA_USER=ticketflow
# KAFKA_PASSWORD=
# --- Identidade: um dos dois caminhos, nunca nenhum ---
#
# Caminho A, provedor de verdade (o dos ambientes publicados). Os dois serviços
# validam o token contra a chave pública do Google. AUDIENCE é o client id do
# OAuth, e é obrigatório: sem ele, um token do Google emitido para outro site
# entra aqui como login válido, com o `sub` real da pessoa.
# TICKETFLOW_AUTH_ISSUER_URI=https://accounts.google.com
# TICKETFLOW_AUTH_AUDIENCE=<client-id>.apps.googleusercontent.com
#
# Caminho B, emissor simétrico (para depurar a pilha local contra a nuvem sem
# precisar de conta em provedor nenhum). Mínimo de 32 caracteres; gere um valor
# aleatório e não reaproveite o de exemplo.
# TICKETFLOW_AUTH_SECRET=
#
# Faltando os dois, o boot cai de propósito.
# --- Pagamento: quem cobra ---
#
# O padrão é o gateway simulado (Wiremock), e por isso este bloco fica comentado:
# quem clona o repositório roda o sistema inteiro sem ter conta em provedor
# nenhum. O corte em 2000 do simulado dá os dois desfechos sem editar nada — um
# ingresso Pista (650) é aprovado e um Camarote (2400) é recusado.
#
# Descomentar troca a estratégia do Payment Service para o Stripe. As chaves não
# têm padrão: com `stripe` e sem chave, o serviço se recusa a subir. Subir e só
# falhar na primeira cobrança seria pior.
# TICKETFLOW_GATEWAY_PROVIDER=stripe
# STRIPE_SECRET_KEY=sk_test_...
#
# Do endpoint de webhook cadastrado no painel do Stripe. Sem ele o webhook não
# verifica assinatura e recusa tudo — que é o comportamento certo, porque
# aceitar sem verificar é uma porta aberta para forjar aprovação de pagamento.
# STRIPE_WEBHOOK_SECRET=whsec_...
#
# Só para o ambiente local: confirma o cartão na hora com um meio de pagamento
# fictício, para o ciclo fechar sem o `stripe listen` da CLI encaminhando o
# webhook para a sua máquina. Vazio em produção, onde a confirmação acontece no
# Stripe Elements e o cartão nunca passa pelo serviço.
# STRIPE_TEST_CARD=pm_card_visa
#
# A chave publicável do front (Stripe Elements). Não é segredo: ela viaja no
# HTML de qualquer site que use Stripe.
# VITE_STRIPE_PUBLISHABLE_KEY=pk_test_...