🧰 ☕ 🐳 🤖
Sábado 0 · faça antes do Sábado 1

Prepare o ambiente

São 4 horas por sábado. Não dá pra gastar 40 minutos instalando Docker na sala. Tudo abaixo é feito em casa, no seu notebook — e cada item fica marcado neste navegador.

📐
Como o curso funciona
Sala invertida: a teoria é sua, em casa; a sala é pra exercitar julgamento

Cada capítulo deste site tem três zonas. Se você chegar no sábado sem a primeira, vai assistir os outros trabalharem.

📖
Antes da aula
Você lê o capítulo (~1h) e mexe nos simuladores. É a teoria densa. No classcontent tem o vídeo e o podcast da aula.
🏫
Em sala (4h)
Labs de julgamento: você dirige o agente, revisa PR, defende/refuta. Cada lab tem um entregável. Presencial ou pelo Zoom.
🏠
Até o próximo sábado
O seu repositório contínuo (o serviço de Pedidos) evolui em casa, dirigido por você com um agente CLI. Não é opcional.
💻
Seu notebook
A escola não fornece máquina, de propósito: o ambiente fica configurado pra você seguir em casa. Mínimo confortável: 16 GB de RAM (Docker + IDE + brokers).
🤖
Um agente CLI
Escolha Claude Code, Codex CLI ou Google Antigravity CLI. O Cap 1 oferece os mesmos prompts para as três ferramentas.
☁️
Conta AWS (só no Bloco 3)
Conta própria, free tier. Precisa de cartão. Fica pra tarefa de casa do Sáb 5 — seção 8, no fim desta página.
1
Java 21 (LTS)
records, sealed e pattern matching exigem 21+
🎯 Por quê 21 e não 17: record e sealed existem desde o 17, mas o switch com pattern matching (que usamos no Sáb 1) só é final no 21. Se você já tem 21+, só confira a versão.
SDKMAN — gerencia várias versões de Javabash
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 21.0.4-tem      # Temurin 21 (Eclipse Adoptium)
sdk default java 21.0.4-tem

Alternativa: brew install --cask temurin@21. Se listar versões com sdk list java, escolha qualquer 21.x-tem.

confiraterminal
java -version
openjdk version "21.0.4" 2024-07-16 LTS   ← o número que importa é o 21
⚠️
Erro previsível: aparece 17 ou 11 mesmo depois de instalar. É o JAVA_HOME antigo ou outro Java na frente no PATH. No SDKMAN, sdk default java 21.0.4-tem resolve; no Windows, confira Variáveis de ambiente → JAVA_HOME.
2
IDE
IntelliJ IDEA Community é o recomendado
🎯 Por quê IntelliJ: é o que o mercado Java usa e o que o professor projeta. VS Code com o Extension Pack for Java funciona, mas você vai traduzir atalhos sozinho.

Baixe o IntelliJ IDEA Community (grátis) em jetbrains.com/idea. No primeiro projeto, confira que o SDK aponta pro Java 21: File → Project Structure → SDK.

⌨️
Ligaduras de fonte. A fonte padrão da IDE desenha -> como uma seta única. É só visual: a seta do switch e das lambdas são dois caracteres, - e >. Se isso te incomoda, desligue em Settings → Editor → Font → Enable ligatures.
3
Git + GitHub
o repositório contínuo do curso vive lá
🎯 Por quê: no Sáb 1 você cria o repositório pedidos, que evolui até o capstone. A tarefa de casa é sempre um commit. E o agente trabalha melhor num diretório versionado (ele lê o git diff).
confiraterminal
git --version
git version 2.4x.x
git config --global user.name "Seu Nome"
git config --global user.email "voce@exemplo.com"
4
Docker + os brokers locais
Postgres agora; RabbitMQ e Kafka a partir do Sáb 4 — mas testa tudo hoje
🎯 Por quê: Testcontainers (Sáb 3) sobe um Postgres real dentro do teste; RabbitMQ (Sáb 4) e Kafka (Sáb 5) rodam na sua máquina. Tudo via Docker. Se o Docker não funciona, metade do curso trava.

Instale o Docker Desktop (docker.com). No Windows ele exige WSL 2 — o instalador avisa. Depois, salve este arquivo numa pasta infra/ (vai ser a mesma do seu repositório):

infra/docker-compose.ymlyaml
services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: pedidos
      POSTGRES_PASSWORD: pedidos
      POSTGRES_DB: pedidos
    ports: ["5432:5432"]

  rabbitmq:
    image: rabbitmq:3-management     # painel web em localhost:15672 (guest/guest)
    ports: ["5672:5672", "15672:15672"]

  kafka:
    image: apache/kafka:3.9.0        # nó único KRaft, já ouve em localhost:9092
    ports: ["9092:9092"]
suba e confiraterminal
cd infra
docker compose up -d
docker compose ps
NAME               STATUS          PORTS
infra-postgres-1   Up 10 seconds   0.0.0.0:5432->5432/tcp
infra-rabbitmq-1   Up 10 seconds   0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp
infra-kafka-1      Up 10 seconds   0.0.0.0:9092->9092/tcp

Abra http://localhost:15672 (guest / guest): é o painel do RabbitMQ. Se abriu, o Docker está saudável. Depois, docker compose down pra desligar.

⚠️
Erro previsível: port is already allocated na 5432. Você tem um Postgres instalado direto na máquina. Ou pare esse serviço, ou troque a porta do compose pra "5433:5432" (e lembre disso na URL do Spring).
5
Escolha um agente CLI
Claude Code, Codex CLI ou Google Antigravity CLI — um deles é suficiente
🎯 Por que um agente no terminal: ele roda dentro do repositório aberto no IntelliJ, lê arquivos, edita e executa os testes. Todo lab segue “escreva a spec, aprove o plano, deixe o agente executar e revise a evidência”.

Opção A — Claude Code. Use sua conta Claude compatível e faça a instalação:

instalador nativobash
curl -fsSL https://claude.ai/install.sh | bash

Primeiro contato. Abra uma pasta hello-agente no IntelliJ, abra o Terminal da IDE e chame o agente:

terminalterminal
mkdir hello-agente && cd hello-agente
claude
# na primeira vez ele abre o navegador pra você logar com a conta do Claude Pro
# dentro do Claude Code, o comando /login refaz isso se precisar

Agora dê a primeira ordem — e repare que ela já tem cara de spec (o que, e o que não):

agente · hello-agente
> Crie um record Java 21 chamado Pedido com id (String) e total (BigDecimal). Só o arquivo Pedido.java, sem build, sem testes, sem nada além disso.

Esperado: ele cria um arquivo e para. Se ele criou pom.xml, README e três classes, você acabou de ver o primeiro motivo do curso existir: o agente faz mais do que pediram quando a spec deixa. Já dá pra treinar a revisão.

🔁
Opção B — Codex CLI. Instale com npm install -g @openai/codex, inicie com codex e autentique. Ele usa AGENTS.md; os prompts do Cap 1 já estão preparados.
🛰️
Opção C — Google Antigravity CLI. No macOS/Linux, use curl -fsSL https://antigravity.google/cli/install.sh | bash; inicie com agy. Ele também reconhece AGENTS.md no workspace.
6
Teste final: o combo inteiro
5 minutos que evitam 40 na sala

Na mesma pasta hello-agente, peça ao agente um projeto mínimo que use tudo o que você instalou:

agente · hello-agente
> Transforme isto num projeto Maven Java 21 mínimo com um teste JUnit 5 para o record Pedido. Rode os testes e me mostre o resultado. Não adicione Spring nem outras dependências.

Esperado: BUILD SUCCESS e Tests run: 1, Failures: 0. Se o Maven wrapper baixou dependências, sua rede e seu Java estão ok. Abra a pasta na IDE e veja o teste verde lá também.

7
Se você vai participar remoto (Zoom)
o mesmo acompanhamento, se a sua ponta funcionar
8
Conta AWS + CLI + SAM só antes do Sáb 6
não precisa agora — mas precisa estar pronto no dia
🎯 Por quê conta própria: o sistema serverless que você monta no Bloco 3 é seu, fica no seu portfólio, e você aprende a operar (e a não estourar) a conta — que é o que o mercado paga. Free tier cobre tudo o que o curso usa se você desligar o que criou.
  1. Crie a conta em aws.amazon.com (pede cartão; a cobrança do curso, se houver, é de centavos).
  2. Ative MFA no usuário root e nunca mais use o root no dia a dia.
  3. Budget alarm em Billing → Budgets: US$ 5/mês com alerta por e-mail. É o seu cinto de segurança.
  4. Crie um usuário IAM dev-curso com AdministratorAccess (é conta de estudo) e gere access keys pra CLI.
  5. Instale a AWS CLI e o AWS SAM CLI (docs oficiais têm instalador por SO).
confiraterminal
aws configure                  # cola as access keys; região: us-east-1
aws sts get-caller-identity    # tem que devolver o ARN do usuário dev-curso
sam --version
SAM CLI, version 1.1xx.x

Ambiente pronto? Então o Sábado 1 é seu.

Leia o Capítulo 0 (como um agente pensa) e a zona 📖 do Sábado 1 antes do Sábado 1.

☕ Ir para o Sábado 01 →