Table of Contents
🛠️ Curso: Ferramentas para Projetos
"Dominar a ferramenta certa é o primeiro passo para transformar uma ideia em um produto de sucesso."
Bem-vindo ao Guia Mestre de Ferramentas. Este curso foi projetado para capacitar desenvolvedores a dominar o ecossistema moderno de software: da gestão ágil e controle de versão à infraestrutura escalável, automação de CI/CD e design colaborativo.
⚡ Atalhos Rápidos
-
Trilha de Aulas
16 lições práticas englobando gestão, desenvolvimento, infra e design. Iniciar Jornada
-
Slides Interativos
Material visual moderno com Reveal.js para acompanhamento das aulas. Ver Slides
-
Quizzes Interativos
Avalie seu progresso com testes dinâmicos para cada módulo do curso. Testar Conhecimento
-
Laboratórios e Projetos
Aplique as ferramentas em cenários reais para consolidar o aprendizado. Ver Projetos
-
Exercícios Progressivos
Do básico ao desafio prático para dominar comandos e fluxos. Praticar Agora
-
Setup e Ferramentas
Configurações essenciais para seu ambiente de desenvolvimento. Configurar
🗺️ Mapa da Jornada (Módulos)
O curso está estruturado em 5 Módulos cruciais para a agilidade no desenvolvimento:
🧩 Módulo 1: Ecossistema e Gestão
O alicerce do projeto: organização e ambiente. - Aulas 01 a 04: Intro ao Ecossistema, Gestão de Projetos, Ambiente de Dev e Git Fundamentos.
🏗️ Módulo 2: Colaboração e Dados
Escalando o desenvolvimento e persistindo informação. - Aulas 05 a 08: Plataformas Git, DB Relacional, NoSQL e Cache, e Frameworks de Teste.
🔌 Módulo 3: API e Qualidade
Conectividade robusta e código impecável. - Aulas 09 a 12: Ferramentas de API, Qualidade de Código, CI/CD Moderno e Automação/IaC.
🚀 Módulo 4: Infraestrutura e Docker
Virtualização e orquestração para o mundo real. - Aulas 13 a 15: Docker e Compose, K8s e Runners, e Comunicação Corporativa.
🎨 Módulo 5: Design e UI
A ponte entre a funcionalidade e a experiência do usuário. - Aula 16: Design System e Figma para Desenvolvedores.
💡 Dicas de Sucesso
- Domine o Terminal: Muitas ferramentas de automação e infraestrutura (Docker, Git, IaC) dependem de um uso fluido da CLI.
- Pratique o Fluxo Git: O controle de versão é o coração da colaboração moderna; não avance sem entender
branchingepull requests. - Automatize Tudo: Sempre que possível, utilize as ferramentas de CI/CD para validar seu código automaticamente.
Pronto para dominar as ferramentas? Ir para Aula 01
Plano de Ensino 📅
Curso: Guia de Ferramentas para Desenvolvedores (ADS Extra)
Ementa
- Módulo 1: Fundamentos e Gestão: Introdução ao ecossistema, gestão de tarefas (Jira/Trello), configuração de ambientes (VS Code/Terminal) e fundamentos de Git.
- Módulo 2: Colaboração e Dados: Uso avançado de plataformas Git (GitHub/GitLab), interação com Bancos de Dados Relacionais e NoSQL via clientes GUI, e introdução a frameworks de teste.
- Módulo 3: Qualidade e Automação: Testes de API (Postman), qualidade de código (Linters/Formatters) e fluxos de CI/CD (GitHub Actions).
- Módulo 4: Infraestrutura e Integração: Automação de infraestrutura (IaC), Contêineres (Docker), Orquestração (Kubernetes), ferramentas de comunicação em equipe e Design (Figma).
Cronograma (16 Aulas)
Módulo 1: Fundamentos e Gestão
- Aula 01: Introdução ao Ecossistema de Ferramentas
- Aula 02: Gestão de Projetos e Tarefas (Jira, Trello, Asana)
- Aula 03: Ambiente de Desenvolvimento (VS Code, JetBrains, Terminal)
- Aula 04: Controle de Versão com Git: Fundamentos
Módulo 2: Colaboração e Dados
- Aula 05: Plataformas de Colaboração (GitHub, GitLab, Bitbucket)
- Aula 06: Bancos de Dados Relacionais e Clientes GUI (PostgreSQL, DBeaver)
- Aula 07: Bancos de Dados NoSQL e Cache (MongoDB, Redis)
- Aula 08: Frameworks de Teste e Qualidade (Jest, PyTest, JUnit)
Módulo 3: Qualidade e Automação
- Aula 09: Testes de API e Ferramentas (Postman, Insomnia)
- Aula 10: Qualidade de Código e Formatação (ESLint, Prettier)
- Aula 11: Automação e CI/CD Moderno (GitHub Actions)
Módulo 4: Infraestrutura e Integração
- Aula 12: Servidores, Automação e IaC (Ansible, Terraform)
- Aula 13: Contêineres com Docker e Docker Compose
- Aula 14: Orquestração com Kubernetes e Runners
- Aula 15: Comunicação e Colaboração em Equipe (Slack, MS Teams)
- Aula 16: Design, Prototipagem e Handoff (Figma)
Avaliação
- Exercícios: 16 listas de exercícios focadas no uso prático das ferramentas.
- Projetos: 16 mini-projetos (Setups, Configurações, Workflows).
- Quizzes: 16 testes de conhecimento sobre as ferramentas e conceitos.
- Projeto Integrador: Configuração de um ambiente completo de desenvolvimento e pipeline de CI/CD para uma aplicação fictícia.
Aulas
Aulas do Curso 📚
Acesse aqui todo o conteúdo teórico dividido em módulos de aprendizado.
Módulo 1 – Ecossistema e Gestão
- Aula 01 - Intro ao Ecossistema
- Aula 02 - Gestão de Projetos
- Aula 03 - Ambiente de Dev
- Aula 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
- Aula 05 - Plataformas Git
- Aula 06 - DB Relacional
- Aula 07 - NoSQL e Cache
- Aula 08 - Frameworks de Teste
Módulo 3 – API e Qualidade
- Aula 09 - Ferramentas de API
- Aula 10 - Qualidade de Código
- Aula 11 - CI/CD Moderno
- Aula 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Aula 01 - Introdução ao Ecossistema de Ferramentas 🌐
Objetivo
Objetivo: Compreender a importância das ferramentas no ciclo de vida de desenvolvimento de software e identificar as principais categorias de ferramentas utilizadas por equipes profissionais.
1. Por que as Ferramentas Importam? 🛠️
No desenvolvimento moderno, escrever código é apenas uma parte do trabalho. Para entregar software de forma eficiente, segura e colaborativa, utilizamos um conjunto de ferramentas que formam o nosso ecossistema de desenvolvimento.
🧠 Conceito: O Cinto de Utilidades do Dev
Assim como um marceneiro precisa de ferramentas especializadas para diferentes cortes e acabamentos, o ciclo de vida do software exige plataformas dedicadas. IDEs, controle de versão e pipelines formam uma cadeia de valor onde a saída de uma ferramenta alimenta a entrada da próxima.
No seu dia a dia profissional, você não abrirá apenas o VS Code. Seu fluxo será: Ler a Issue no Jira -> Criar branch no Git -> Escrever Código no VS Code -> Testar com Jest -> Subir um Pull Request no GitHub -> Ver o CI/CD (Actions) validar seu código.
2. Categorias de Ferramentas 🗂️
Podemos dividir as ferramentas essenciais em grandes blocos:
- Gestão e Organização: Onde planejamos o que será feito (Jira, Trello).
- Ambiente de Desenvolvimento: Onde o código nasce (VS Code, Terminal).
- Controle de Versão: Onde guardamos o histórico e colaboramos (Git, GitHub).
- Bancos de Dados: Onde os dados residem (PostgreSQL, MongoDB).
- Qualidade e Testes: Onde garantimos que tudo funciona (Postman, Jest).
- Infraestrutura e CI/CD: Onde o código "vai pro mundo" (Docker, GitHub Actions).
Visualização do Fluxo Profissional
```mermaid graph LR Plan([Planejamento]) --> Dev([Desenvolvimento]) Dev --> Test([Testes]) Test --> Deploy([Deploy/Produção]) Deploy --> Monitor([Monitoramento]) Monitor --> Plan
subgraph Ferramentas
Plan -.-> Jira
Dev -.-> VSCode
Test -.-> Postman
Deploy -.-> Docker
end
```
3. A Importância da Automação 🤖
Uma das metas deste curso é ensinar você a parar de fazer tarefas repetitivas manualmente.
Conceito
Automação é o uso de ferramentas para executar processos que seriam lentos ou propensos a erro se feitos por humanos (ex: rodar todos os testes do sistema a cada alteração no código).
4. O Coração do Desenvolvimento: O Terminal 💻
Quase todas as ferramentas profissionais possuem uma interface de linha de comando (CLI). Dominar o terminal é o primeiro passo para se tornar um desenvolvedor avançado.
5. Prática: Diagnóstico do Cinto de Ferramentas 🚀
Sua primeira missão é verificar o que você já tem instalado e o que precisaremos configurar:
- Abra seu terminal (CMD, PowerShell ou Terminal do macOS/Linux).
- Tente executar os comandos:
git --version,code --version,docker --version. - Anote quais ferramentas responderam com a versão e quais não foram encontradas.
- Crie uma conta gratuita no GitHub caso ainda não possua.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 02 - Gestão de Projetos e Tarefas 📊
Objetivo
Objetivo: Conhecer as principais ferramentas de gestão ágil, entender a diferença entre Scrum e Kanban e aprender a organizar o fluxo de trabalho de uma equipe de desenvolvimento.
1. Organização é Tudo! 📋
Um projeto de software moderno envolve centenas de tarefas, bugs e melhorias. Sem uma ferramenta de gestão, a equipe se perde em e-mails e mensagens de chat.
🧠 Conceito: Gestão Ágil
A maioria das ferramentas modernas baseia-se em metodologias ágeis (Agile). Diferente do modelo Cascata, o Agile foca em ciclos curtos de entrega (Sprints), feedback constante do cliente e transparência total sobre o que cada membro está desenvolvendo, garantindo previsibilidade.
Nas dailys (reuniões diárias de 15 minutos), a equipe se reúne em frente ao quadro Kanban para responder: O que eu fiz ontem? O que farei hoje? Existe algum impedimento bloqueando a minha tarefa?
2. Ferramentas de Mercado 🏗️
🟦 Jira Software
O padrão da indústria para ambientes corporativos. Extremamente poderoso e configurável. * Ideal para: Equipes grandes de engenharia. * Recurso chave: Quadros Scrum (Sprints) e relatórios de métricas.
🟨 Trello / Asana
Ferramentas visuais baseadas em cartões. Muito simples e intuitivas. * Ideal para: Projetos menores, equipes multidisciplinares e organização pessoal. * Recurso chave: Sistema de "Arrastar e Soltar" (Drag and Drop).
⬛ GitHub / GitLab Issues
Integradas diretamente ao repositório de código. * Ideal para: Rastrear bugs e funcionalidades atreladas a linhas específicas de código. * Recurso chave: Linking de issues com Pull Requests.
3. O Quadro Kanban 🧱
O Kanban é a forma mais comum de visualizar o trabalho. Consiste em colunas que representam o status de cada tarefa.
Fluxo Típico de Desenvolvimento
```mermaid graph TD A([Criar Tarefa]) --> B{Em Execução?} B -- Sim --> C([Desenvolvimento]) B -- Não --> A C --> D([Revisão de Código]) D --> E([Concluído])
subgraph "Estados Kanban"
A
C
D
E
end
```
Nota
O diagrama acima é uma representação visual simplificada do fluxo.
4. Criando sua Primeira Task 💻
Vamos simular a criação de uma tarefa no terminal, algo comum em ferramentas que possuem CLI ou integrações:
ADS-101 Configurar ambiente de dev High
ADS-99 Estudar Git Medium
5. Prática: Organizando seu Semestre 🚀
Sua missão é criar um quadro de gestão para suas atividades acadêmicas ou pessoais:
- Crie uma conta gratuita no Trello.
- Crie um quadro chamado "Organização ADS".
- Crie as colunas: Backlog, Em Execução, Em Revisão e Concluído.
- Adicione pelo menos 5 tarefas reais que você tenha para esta semana.
- Mova uma das tarefas para a coluna "Em Execução".
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 03 - Ambiente de Desenvolvimento 💻
Objetivo
Objetivo: Customizar o ambiente de trabalho para máxima eficiência, conhecer a diferença entre Editores de Código e IDEs e dominar comandos básicos de terminal.
1. Editor vs IDE: Qual Escolher? 🧠
Embora pareçam iguais, ferramentas de escrita de código têm propósitos diferentes.
📄 Editores de Código (Ex: VS Code)
São leves, rápidos e "nascem" simples. Você os torna poderosos através de extensões. * Vantagens: Consome pouca memória, gratuito, ecossistema gigante. * Desvantagens: Exige configuração manual para algumas linguagens.
🏎️ IDEs - Ambientes Integrados (Ex: IntelliJ, PyCharm)
Editores transferem a responsabilidade da configuração para o desenvolvedor. Eles carregam em milissegundos, consomem pouca RAM e são perfeitos para stacks modernas focadas em JavaScript/TypeScript.
IDEs automatizam o onboarding. Ao criar um projeto Spring Boot (Java), a IDE já configura o classpath, baixa as dependências Maven, mapeia botões para o banco de dados e levanta as configurações de debug automaticamente. Seu custo é o alto consumo de recursos da máquina.
2. O Super Poder do VS Code 🚀
O Visual Studio Code é o editor mais popular do mundo. Para ele ser produtivo, você precisa do "kit básico" de extensões:
- Portuguese (Brazil): Para traduzir a interface.
- Material Icon Theme: Para ícones de arquivos mais bonitos.
- Prettier: Para formatar seu código automaticamente.
- Error Lens: Para ver erros de código diretamente na linha.
3. Dominando o Terminal (CLI) ⌨️
O terminal é onde a magia acontece. Ele permite automatizar tarefas que levariam minutos na interface visual.
Comandos Essenciais (Universal)
| Comando | Ação |
|---|---|
ls (ou dir) |
Listar arquivos da pasta |
cd |
Entrar em uma pasta |
mkdir |
Criar uma nova pasta |
touch (ou echo >) |
Criar um novo arquivo |
rm (ou del) |
Excluir um arquivo |
Exemplo Prático de Fluxo no Terminal
4. Customização Profissional 🎨
Muitos desenvolvedores profissionais utilizam ferramentas para tornar o terminal mais informativo (como ZSH, Oh My Zsh ou Oh My Posh).
Componentes do Setup Ideal
```mermaid graph TD Dev([Desenvolvedor]) --> OS([Sistema Operacional]) OS --> Shell([Terminal/Shell]) Shell --> ZSH([ZSH / Oh My Zsh]) OS --> Editor([VS Code]) Editor --> Ext([Extensões])
subgraph "Ambiente Local"
Shell
Editor
end
```
Dica: Windows
No Windows, você pode usar o Windows Terminal e configurar o Oh My Posh para ter uma experiência visual similar.
5. Prática: Setup do Guerreiro(a) 🚀
Sua missão é deixar seu ambiente pronto para os próximos meses:
- Instale o Visual Studio Code.
- Instale as extensões citadas no capítulo 2.
- Abra o terminal do seu sistema e execute o comando
mkdir ads-ferramentas. - Entre na pasta e crie um arquivo chamado
config.txtusando comandos de terminal. - Configure o tema do seu VS Code para um que você goste (Ex: Dracula, One Dark Pro).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 04 - Controle de Versão com Git: Fundamentos 🛠️
Objetivo
Objetivo: Entender o conceito de versionamento distribuído, configurar o Git pela primeira vez e dominar o fluxo básico de salvamento de trabalho (Local Workflow).
1. O que é o Git? 🧠
O Git é um sistema de controle de versão distribuído. Ele funciona como uma "Máquina do Tempo" para o seu código, permitindo que você salve estados do projeto e retorne a eles se algo der errado.
🧠 Conceito: Snapshot vs Backup
Ferramentas convencionais (como Google Drive) salvam cópias inteiras do arquivo. Se você apagar tudo e salvar, a versão anterior se perde ou fica difícil de recuperar sem duplicar gigabytes de dados.
O Git tira "fotos" incrementais do seu projeto. Ele monitora apenas o que mudou (as linhas adicionadas ou removidas). Se não há alteração, o Git apenas aponta para a versão anterior, permitindo navegar por todo o histórico em milissegundos.
2. Configuração Inicial ⚙️
Antes de começar, o Git precisa saber quem você é. Isso é importante para que cada alteração tenha um autor identificado.
user.email=seu@email.com
3. O Fluxo de Trabalho Local 🔄
Para salvar alterações no Git, passamos por três estados principais:
- Working Directory: Onde você edita seus arquivos.
- Staging Area (Index): A "sala de espera". Aqui você escolhe o que será salvo.
- Local Repository: Onde a "foto" é guardada permanentemente.
Visualização do Fluxo de Trabalho
mermaid
graph LR
WD([Working Directory]) -- git add --> SA([Staging Area])
SA -- git commit --> LR([Local Repository])
LR -- git checkout --> WD
4. Comandos de Sobrevivência ⌨️
Estes são os comandos que você usará 90% do tempo:
| Comando | Ação |
|---|---|
git init |
Transforma a pasta atual em um repositório Git. |
git status |
Mostra o que foi alterado e o que está na "sala de espera". |
git add . |
Adiciona todas as mudanças para a Staging Area. |
git commit -m "mensagem" |
Salva as mudanças com uma descrição. |
git log |
Mostra o histórico de todas as fotos (commits). |
5. Exemplo Prático de Commit 💻
6. Prática: Minha Primeira Máquina do Tempo 🚀
- Crie uma pasta chamada
meu-primeiro-repo. - Inicie o Git nesta pasta.
- Crie um arquivo
historia.txte escreva uma frase. - Adicione o arquivo ao Git e faça um commit com a mensagem "Início da história".
- Altere o arquivo, adicione outra frase e faça um novo commit "Capítulo 2".
- Use o comando
git logpara ver suas duas "fotos" salvas.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 05 - Plataformas de Colaboração 🤝
Objetivo
Objetivo: Entender o papel das plataformas de hospedagem de código, conectar seu repositório local com a nuvem e compreender o fluxo de colaboração via Pull Requests.
1. Do Local para a Nuvem ☁️
Até agora, trabalhamos apenas na nossa máquina. Para colaborar com outras pessoas e garantir a segurança do nosso código, usamos plataformas como GitHub, GitLab ou Bitbucket.
🧠 Conceito: Repositório Remoto (Remote)
O repositório remoto atua como um porto seguro contra desastres. Se o seu computador local (Working Directory e Local Repo) for destruído, seu código ainda vive nas nuvens do GitHub/GitLab.
O Git distribui esse poder. Você "empurra" (push) os seus snapshots em lote para o repô remoto para a sua equipe, e "puxa" (pull) as fotos de outros colegas para se atualizar.
2. GitHub: O Padrão de Mercado 🐙
O GitHub é a maior plataforma de desenvolvedores do mundo. Além de hospedar o código, ele oferece ferramentas sociais e de automação.
Comandos de Conexão
| Comando | Ação |
|---|---|
git remote add origin <URL> |
Conecta seu repo local a um link remoto. |
git push -u origin main |
Envia seus commits para o servidor pela primeira vez. |
git pull origin main |
Traz as novidades do servidor para sua máquina. |
git clone <URL> |
Baixa um projeto completo da internet. |
3. O Fluxo de Colaboração Profissional 🔄
Em equipes profissionais, ninguém mexe direto no código "oficial" (main). Usamos um fluxo chamado GitHub Flow:
- Branch: Você cria uma "cópia" segura para trabalhar.
- Commit: Faz suas alterações.
- Pull Request (PR): Você pede permissão para unir suas mudanças ao código oficial.
- Code Review: Outros devs revisam seu código e sugerem melhorias.
- Merge: Se tudo estiver ok, o código é unido.
Visualização do Fluxo de PR
mermaid
graph LR
Main([Main Branch]) -- git checkout -b feature --> Feature([Sua Branch])
Feature -- git commit --> Feature
Feature -- Pull Request --> Review{Revisão}
Review -- Aprovado --> Main
Review -- Pedido de ajuste --> Feature
4. Praticando a Sincronização 💻
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 220 bytes | 220.00 KiB/s, done.
To https://github.com/usuario/meu-projeto.git
* [new branch] main -> main
5. Prática: Meu Portfólio no Ar 🚀
Sua missão é subir um de seus códigos para o GitHub:
- Crie um novo repositório Público no GitHub chamado
ads-ferramentas-desafio. - No seu terminal, dentro de uma pasta com código, execute o comando para adicionar o
origin. - Faça o
pushdo seu código. - Verifique no navegador se os arquivos apareceram lá.
- Desafio: Peça para um colega (ou use outra conta) fazer um "Fork" do seu projeto.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 06 - Bancos de Dados Relacionais e Clientes GUI 💾
Objetivo
Objetivo: Compreender o modelo de dados relacional (SQL), conhecer os principais bancos de dados do mercado e dominar o uso de ferramentas visuais para manipulação de dados.
1. Onde os Dados Moram? 🏗️
Quase toda aplicação precisa salvar informações permanentemente (usuários, pedidos, produtos). Para isso, usamos Sistemas de Gerenciamento de Banco de Dados (SGBDs).
🧩 Modelo Relacional (SQL)
O modelo SQL usa estruturação forte, em que cada coluna representa um atributo muito claro e inquebrável (Ex: ID, Nome, Email). Para organizar isso e mitigar a redundância de dados, divide-se em múltiplas tabelas que se "relacionam".
No exemplo abaixo, as informações estão na Tabela Usuarios. Se este usuário realiza compras, não reescrevemos o nome/email na venda, mas guardamos uma referência apontando para o seu ID.
| Exemplo de Tabela: Usuarios |
| :--- | :--- | :--- |
| ID | Nome | Email |
| 1 | Ana Silva | ana@email.com |
| 2 | Bob Souza | bob@email.com |
2. Líderes de Mercado 🏆
🐘 PostgreSQL
O "queridinho" dos desenvolvedores modernos. É robusto, gratuito e extremamente poderoso para lidar com grandes volumes de dados complexos.
🐬 MySQL
Famoso por ser o motor de grandes plataformas como o WordPress. É rápido e possui uma comunidade gigantesca.
3. Clientes GUI: Adeus Linha de Comando! 🖥️
Embora você possa usar o terminal, ferramentas visuais (Graphical User Interface) facilitam muito a vida do desenvolvedor.
🐝 DBeaver
O "canivete suíço" dos bancos de dados. É uma ferramenta universal que se conecta a quase qualquer banco (SQL, NoSQL, Nuvem). * Vantagem: Você aprende uma interface e usa em todos os projetos.
🎨 Beekeeper Studio
Uma alternativa moderna, mais bonita e simples de usar, ideal para quem está começando.
4. Visualizando Estruturas
mermaid
erDiagram
USUARIO ||--o{ PEDIDO : "faz"
PEDIDO ||--|{ ITEM_PEDIDO : "contem"
PRODUTO ||--o{ ITEM_PEDIDO : "pertence"
5. Praticando com SQL no Terminal 💻
Mesmo com ferramentas visuais, é bom conhecer o básico:
Type "help" for help.
meu_banco=# SELECT * FROM usuarios WHERE id = 1;
id | nome | email
----+-----------+---------------
1 | Ana Silva | ana@email.com
(1 row)
6. Prática: Conectando os Pontos 🚀
Sua missão é explorar um banco de dados real usando uma ferramenta visual:
- Instale o DBeaver Community Edition em sua máquina.
- Crie uma nova conexão do tipo SQLite (um banco que é apenas um arquivo, sem precisar instalar servidor).
- Crie uma tabela chamada
Ferramentascom as colunas:ID,NomeeCategoria. - Insira 3 linhas de dados usando a interface visual do DBeaver.
- Execute uma consulta SQL:
SELECT * FROM Ferramentas;e veja o resultado.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 07 - Bancos de Dados NoSQL e Cache ⚡
Objetivo
Objetivo: Entender quando utilizar bancos de dados não relacionais (NoSQL), compreender o conceito de documentos e descobrir como o Cache (Redis) acelera aplicações de larga escala.
1. Além das Tabelas: O Mundo NoSQL 🧠
Nem todo dado se encaixa bem em linhas e colunas rígidas. Para dados flexíveis e que precisam escalar rapidamente, usamos o NoSQL (Not Only SQL).
📄 Orientado a Documentos (MongoDB)
Em vez de tabelas rigorosas, usamos Coleções, que armazenam Documentos. Esses documentos se assemelham a objetos JSON na estrutura de chave-valor.
Ao dispensar "joins" complexos e predefinir que um mesmo Produto A pode ter especificações ausentes no Produto B, o MongoDB facilita muito o sharding — ou seja, espalhar os dados horizontalmente por dezenas de discos diferentes.
2. NoSQL vs SQL: Qual Usar? ⚖️
| Característica | 💾 SQL (Relacional) | ⚡ NoSQL (Documentos) |
|---|---|---|
| Esquema | Rígido (Fixo) | Flexível (Dinâmico) |
| Relacionamentos | Complexos (Joins) | Simples (Embarcados) |
| Foco | Consistência e Precisão | Velocidade e Escala |
| Exemplos | Postgres, MySQL | MongoDB, Cassandra |
3. Redis: A Velocidade da Memória 🚀
O Redis é um banco de dados que vive na Memória RAM, e não no disco rígido. Isso o torna incrivelmente rápido (milissegundos!).
🧠 Conceito: Cache
Imagine que um site de notícias tem 1 milhão de acessos na mesma matéria. Em vez de perguntar para o banco de dados lento 1 milhão de vezes, salvamos a resposta no Redis (Cache) por alguns minutos.
Fluxo de Funcionamento do Cache
```mermaid sequenceDiagram participant User as Usuário participant App as Aplicação participant Cache as Redis (Cache) participant DB as Postgres (Lento)
User->>App: Acessa Produto 1
App->>Cache: Tem no Cache?
Cache-->>App: Não (Miss)
App->>DB: Busca no Disco
DB-->>App: Retorna Dados
App->>Cache: Salva no Cache
App-->>User: Exibe Produto
```
4. Praticando com Redis no Terminal 💻
OK
127.0.0.1:6379> GET saudacao
"Olá Mundo"
127.0.0.1:6379> EXPIRE saudacao 10
(integer) 1# (Apaga o dado automaticamente em 10 segundos)
5. Prática: Explorando um JSON 🚀
No NoSQL, a estrutura mais comum é o JSON. Sua missão é criar o "esquema" de um documento para um sistema de cursos:
- Abra seu VS Code.
- Crie um arquivo chamado
aula.json. - Descreva uma aula utilizando a estrutura JSON (campos como nome, duracao, lista de ferramentas).
- Certifique-se de que o JSON esteja válido (use um validador online se necessário).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 08 - Frameworks de Teste e Qualidade 🧪
Objetivo
Objetivo: Entender a importância dos testes automatizados para a estabilidade do software, conhecer os diferentes níveis de teste e descobrir os principais frameworks de cada linguagem.
1. Por que Testar? 🛡️
Software sem testes é uma bomba relógio. À medida que o código cresce, mudar uma linha pode quebrar algo que já estava funcionando.
🧠 Conceito: Regressão
Na engenharia, um pequeno hotfix numa função utilitária pode desencadear uma reação em cadeia oculta. Se os desenvolvedores precisarem testar a tela toda a vez que o código muda, perde-se eficiência e confiabilidade.
Testes automatizados evitam a regressão. Eles processam as regras de negócio em frações de segundos garantindo que um módulo continue retornando o que você esperava antes de aprovar uma mudança nova.
2. Níveis de Teste: A Pirâmide 🏗️
Nem todos os testes são iguais. Os desenvolvedores seguem a Pirâmide de Testes:
- Testes Unitários (Base): Testam pequenas partes isoladas (funções ou classes). São rápidos e baratos.
- Testes de Integração (Meio): Testam se dois ou mais módulos funcionam bem juntos (ex: API salvando no Banco).
- Testes E2E - Ponta a Ponta (Topo): Simulam o usuário real clicando na tela. São lentos e complexos.
Pirâmide de Testes
mermaid
graph TD
UI([Testes E2E / UI]) -- Lento/Caro --- INT([Testes de Integração])
INT --- UNIT([Testes Unitários])
UNIT -- Rápido/Barato --- UNIT
3. Ferramentas por Linguagem 🏆
Cada ecossistema tem seu framework de "ouro":
| Linguagem | Framework de Teste |
|---|---|
| JavaScript/TS | Jest / Vitest |
| Python | PyTest |
| Java | JUnit |
| C# (.NET) | xUnit / NUnit |
4. O Ciclo TDD (Test Driven Development) 🔄
Alguns desenvolvedores preferem escrever o teste antes do código. Este processo é chamado de TDD:
- 🔴 Red: Escreve um teste que falha.
- 🟢 Green: Escreve o código mínimo para o teste passar.
- 🔵 Refactor: Melhora o código garantindo que o teste ainda passe.
5. Praticando no Terminal 💻
Simulando a execução de um teste com o Jest:
PASS ./soma.test.js
✓ soma 1 + 2 deve ser 3 (5 ms)
✓ soma -1 + 5 deve ser 4 (2 ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 1.2 s
Ran all test suites.
6. Prática: O Primeiro Teste (Lógica) 🚀
Mesmo que ainda não estejamos codificando, vamos pensar na lógica de um teste unitário:
- Imagine uma função chamada
calcularDesconto(preco, percentual). - No seu bloco de notas, escreva 3 cenários de teste:
- Cenário 1: Preço 100, Desconto 10. Resultado esperado: 90.
- Cenário 2: Preço 50, Desconto 0. Resultado esperado: 50.
- Cenário 3: Preço 200, Desconto 100. Resultado esperado: 0.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 09 - Ferramentas de API (Postman / Insomnia) 📡
Objetivo
Objetivo: Dominar o uso de clients HTTP para testar e documentar APIs, entender os métodos HTTP e interpretar os principais códigos de status retornados pelo servidor.
1. O que são Clients de API? 🕵️♂️
Quando desenvolvemos o backend (o "servidor"), muitas vezes ainda não temos o frontend (a "tela"). Para testar se o servidor está respondendo corretamente, usamos ferramentas que simulam requisições de um navegador ou aplicativo.
🏆 Líderes de Mercado
A plataforma mais consolidada no mercado. É ideal para APIs maduras que necessitam de Workspaces compartilhados, Mocks e automação completa de coleções (com relatórios).
Foca no minimalismo, velocidade e segurança local. Por não sobrecarregar as abas com dezenas de features, é a escolha preferida de novos devs e projetos ágeis.
2. O Protocolo HTTP na Prática 🔄
Para conversar com uma API, precisamos seguir as regras do protocolo HTTP.
Métodos (Verbos) HTTP
- GET: Buscar informações (ex: listar produtos).
- POST: Criar algo novo (ex: cadastrar usuário).
- PUT: Atualizar algo existente (ex: mudar senha).
- DELETE: Remover algo (ex: excluir conta).
Status Codes (Retorno do Servidor)
- 200 OK: Deu tudo certo!
- 201 Created: Criado com sucesso.
- 400 Bad Request: Você enviou algo errado.
- 401 Unauthorized: Você não está logado.
- 404 Not Found: Não encontrei o que você pediu.
- 500 Internal Server Error: O servidor "quebrou" (erro do programador).
3. Fluxo de uma Requisição
```mermaid sequenceDiagram participant Dev as Postman/Insomnia participant API as Servidor API participant DB as Banco de Dados
Dev->>API: POST /usuarios (Dados do Usuário)
API->>DB: Salva no Banco
DB-->>API: Confirmado
API-->>Dev: 201 Created (JSON com ID)
```
4. Praticando no Terminal 💻
Embora o Postman seja visual, as APIs também podem ser testadas via terminal usando o comando curl:
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz"
}
5. Prática: Minha Primeira Collection 🚀
Sua missão é testar uma API pública e organizar os resultados:
- Baixe e instale o Postman ou o Insomnia.
- Crie uma nova Collection chamada "Teste Local".
- Crie uma requisição GET para:
https://jsonplaceholder.typicode.com/posts. - Verifique o Status Code. Foi 200?
- Desafio: Tente fazer um POST para a mesma URL enviando um JSON com
titleebody.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 10 - Qualidade de Código (Linters e Formatters) ✨
Objetivo
Objetivo: Entender como as ferramentas de análise estática garantem a padronização do código em equipe, evitando erros comuns e mantendo um estilo visual consistente.
1. O Código Além do Funcionamento 🧠
Não basta o código "funcionar". Para que um projeto dure anos e seja mantido por várias pessoas, ele precisa ser legível e seguir padrões.
🧩 Análise Estática
Ferramentas de análise estática são o primeiro filtro de qualidade de um time. Elas leem seu código antes mesmo de você tentar rodá-lo (sem executá-lo), detectando anomalias e code smells (códigos mal estruturados).
As regras são configuráveis. O time decide que "Toda função deve ter limite de 20 linhas" ou "Ninguém pode usar aspas duplas". O Linter se torna o policial automático que barra códigos fora do padrão no GitHub.
2. Linters vs Formatters: Qual a Diferença? ⚖️
Embora parecidos, eles resolvem problemas diferentes:
| Ferramenta | O que faz? | Exemplo |
|---|---|---|
| Linter (ESLint / Flake8) | Encontra erros de lógica e potenciais bugs. | Variável criada mas nunca utilizada. |
| Formatter (Prettier / Black) | Cuida do visual e do estilo do código. | Colocar ponto e vírgula, ajustar espaços. |
🛠️ Por que usar os dois?
O Formatter deixa o código bonito; o Linter garante que ele está correto e segue as boas práticas da linguagem.
3. O Fluxo de Correção de Código
mermaid
graph TD
Code([Escrever Código]) --> Lint([Executar Linter])
Lint -- Erro Encontrado --> Fix([Corrigir Lógica])
Fix --> Lint
Lint -- OK --> Format([Executar Formatter])
Format --> Clean([Código Limpo e Padronizado])
4. Praticando no Terminal 💻
Simulando o uso do ESLint para encontrar erros e do Prettier para formatar:
5. Prática: Configurando o Corretor Automático 🚀
Sua missão é ver a mágica da formatação automática no VS Code:
- Abra o VS Code e instale a extensão Prettier - Code Formatter.
- Vá em Settings (Ctrl + ,) e pesquise por
Format on Save. Ative essa opção. - Crie um arquivo chamado
bagunca.js. - Escreva um código propositalmente bagunçado (muitos espaços, aspas simples e duplas misturadas, sem identação).
- Salve o arquivo e observe o VS Code organizar tudo instantaneamente.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 11 - CI/CD Moderno (GitHub Actions) 🚀
Objetivo
Objetivo: Compreender o ciclo de integração e entrega contínua (CI/CD), aprender a criar workflows automatizados no GitHub e garantir que o código seja testado automaticamente a cada push.
1. O que é CI/CD? 🔄
Em vez de rodar testes e linters manualmente na sua máquina local, a nuvem assume a responsabilidade após cada interação no controle de versão.
Integrar e validar o código de dezenas de desenvolvedores repetidas vezes ao dia. O servidor "puxa" o código, roda os linters, compila (build) e dispara centenas de testes unitários. Se algo quebrar, o pull request é bloqueado.
Uma vez que os testes garantem que o software está estável (CI passou), o processo de CD empacota esse aplicativo e o instale automaticamente nos servidores hospedados de teste ou de produção, sem intervenção humana.
2. GitHub Actions: Automação na Nuvem 🤖
O GitHub Actions é a ferramenta de CI/CD integrada ao GitHub. Ele funciona através de arquivos de configuração no formato YAML.
Componentes do Actions:
- Workflow: O processo completo (ex: "Build e Teste").
- Event: O que dispara o processo (ex: um
pushou umpull_request). - Job: Uma tarefa específica dentro do workflow (ex: "rodar testes unitários").
- Steps: Os comandos passo a passo dentro de um Job.
3. Visualização da Pipeline
mermaid
graph LR
Push([Git Push]) --> Trigger{GitHub Event}
Trigger --> VM([Spin up Virtual Machine])
VM --> Install([npm install])
Install --> Lint([npx eslint .])
Lint --> Test([npm test])
Test -- Success --> Deploy([Auto Deploy])
Test -- Failure --> Notify([Notificar Developer])
4. O Arquivo de Configuração (.yml) 📄
Abaixo, um exemplo de como é um arquivo de workflow real:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
5. Praticando no Terminal (Simulação) 💻
Imagine o terminal do servidor do GitHub executando seu workflow:
Step 1: Checking out code... OK
Step 2: Installing Node 18... OK
Step 3: Running npm install... OK
Step 4: Running npm test...
PASS test/auth.test.js
PASS test/db.test.js
Step 5: All tests passed! Pipeline completed.
6. Prática: Monitorando um Workflow 🚀
- Vá até um repositório seu no GitHub.
- Clique na aba Actions.
- O GitHub sugerirá "Workflows" baseados na sua linguagem.
- Escolha um simples (como Node.js ou Python) e clique em Set up this workflow.
- Clique em Commit changes.
- Veja o workflow rodar em tempo real e verifique se ele fica "Verde" (Sucesso).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 12 - Automação e IaC (Ansible e Terraform) ⚙️
Objetivo
Objetivo: Entender o conceito de Infraestrutura como Código (IaC), descobrir como o Terraform cria recursos na nuvem e como o Ansible gerencia e configura servidores automaticamente.
1. O Problema da Configuração Manual 😫
No passado, para criar um servidor, um técnico precisava configurar tudo manualmente: instalar o Linux, o banco de dados, as senhas, etc. Se precisasse de 10 servidores, ele repetia o processo 10 vezes.
🧠 Conceito: Infraestrutura como Código (IaC)
O provisionamento manual envolve dezenas de cliques em painéis como AWS ou Azure. Quando a empresa cresce e precisa de 100 servidores idênticos, a chance de erro humano (configuração esquecida, porta aberta, versão errada) beira os 100%.
Com IaC, a infraestrutura vira um script de texto versionado no Git. Se um servidor queimar, basta apertar "Run" novamente e um gêmeo idêntico subirá em minutos. Do mesmo modo, se um desenvolvedor injetar uma falha na infra, o time poderá simplesmente revogar (reverter) o commit no código de infraestrutura.
2. Terraform: O Arquiteto da Nuvem 🏗️
O Terraform serve para provisionar a infraestrutura. Ele "telefona" para a AWS, Google Cloud ou Azure e diz: "Crie para mim 3 servidores e 1 banco de dados".
- Linguagem: HCL (HashiCorp Configuration Language).
- Estado (State): O Terraform lembra o que ele criou, para que ele possa atualizar ou destruir depois sem se perder.
3. Ansible: O Mestre de Obras 👷♂️
Enquanto o Terraform "constrói o prédio" (servidor), o Ansible entra para "pintar as paredes e instalar os móveis" (configurar o software).
- Sem Agente: O Ansible não precisa ser instalado no servidor destino, ele usa apenas o acesso SSH.
- Playbooks: Arquivos YAML que descrevem o que deve ser instalado e configurado.
Fluxo Combinado de Provisionamento
mermaid
graph TD
Code([Arquivo de Definição]) --> TF([Terraform: Cria o Servidor])
TF --> Server([Servidor Vazio])
Server --> ANS([Ansible: Instala Node/Nginx])
ANS --> Prod([Servidor Pronto para Uso])
4. O Arquivo Ansible (Exemplo) 📄
Mesmo sem rodar, veja como é simples descrever uma instalação de servidor:
---
- name: Instalar Nginx no Servidor Web
hosts: webservers
tasks:
- name: Garantir que o Nginx esteja instalado
apt:
name: nginx
state: present
- name: Iniciar o serviço do Nginx
service:
name: nginx
state: started
5. Prática: Lógica de Automação 🚀
- Imagine que você tem 50 computadores em um laboratório.
- Todos precisam ter o Google Chrome e o VS Code instalados hoje.
- No seu bloco de notas, escreva a sequência de passos que o Ansible faria:
- Passo 1: Baixar instalador do Chrome.
- Passo 2: Executar arquivo de instalação do Chrome.
- Passo 3: Baixar instalador do VS Code...
- Perceba que, com o Ansible, você escreveria isso uma única vez e o comando rodaria nos 50 PCs simultaneamente.
6. Exercício de Fixação 📝
- Básico: O que significa o termo "Infraestrutura como Código"?
- Básico: Qual a diferença principal entre o que o Terraform faz e o que o Ansible faz?
- Intermediário: Por que é mais seguro usar o Terraform do que criar servidores clicando em botões no painel da AWS?
- Intermediário: Explique o que é "Idempotência" (pesquise este termo no contexto de Ansible).
- Desafio: Pesquise o que é "Cloud agnosticism" e por que o Terraform é considerado uma ferramenta que ajuda com isso.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 13 - Contêineres com Docker 📦
Objetivo
Objetivo: Compreender o conceito de conteinerização, aprender a criar imagens Docker e orquestrar múltiplos serviços usando o Docker Compose.
1. O Problema: "Na minha máquina funciona!" 🤷♂️
Este é o pesadelo de todo desenvolvedor. Um código que funciona no seu computador, mas quebra quando vai para o servidor porque a versão do banco de dados ou do Node.js é diferente.
🧠 Conceito: Contêineres
Antigamente, para isolar um sistema, criava-se uma Máquina Virtual (VM) pesada, com seu próprio Sistema Operacional completo (Linux/Windows), sugando dezenas de Gigabytes e minutos de RAM apenas para ligar.
Contêineres empacotam apenas o código e bibliotecas essenciais, compartilhando de forma inteligente o "kernel" do sistema operacional hospedeiro. Isso garante inicialização instantânea e economia brutal de recursos.
2. Docker: A Baleia Azul 🐳
O Docker é a plataforma líder mundial em contêineres.
- Imagem: É o "molde" ou a "receita". Contém tudo o que é necessário para rodar o app (SO, bibliotecas, código).
- Contêiner: É a instância da imagem em execução (o "bolo" pronto).
Diferença para Máquinas Virtuais
mermaid
graph TD
subgraph "Máquina Virtual (Lenta)"
App1([App 1]) --- GuestSO1([SO Completo])
GuestSO1 --- Hyper([Hypervisor])
end
subgraph "Docker (Rápido)"
App2([App 2]) --- Engine([Docker Engine])
Engine --- HostSO([Host SO Kernel])
end
3. Docker Compose: Multi-Serviços 🎼
Raramente um app vive sozinho. Ele precisa de um Banco de Dados, um Cache e uma API. O Docker Compose permite subir todos eles com um único comando.
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: root
4. Praticando no Terminal 💻
a1b2c3d4e5f6 meu-app Up 5 minutes 0.0.0.0:8080->80/tcp
5. Prática: Meu Primeiro Dockerfile 🚀
Vamos criar a "receita" de um servidor simples:
- No VS Code, crie um arquivo chamado
Dockerfile(sem extensão). - Escreva a lógica básica:
- Pense neste arquivo como um conjunto de instruções para o Docker criar sua máquina virtual leve.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 14 - Orquestração com Kubernetes e Runners ☸️
Objetivo
Objetivo: Compreender a necessidade de orquestração de contêineres, conhecer os conceitos básicos de Kubernetes (K8s) e entender como os Runners executam nossas tarefas de automação em larga escala.
1. O que fazer com 1000 Contêineres? 🤯
O Docker é ótimo para rodar um ou dez contêineres. Mas e se você tiver um sistema gigante com milhares de contêineres que precisam escalar conforme o número de usuários sobe e desce?
🧠 Conceito: Orquestração
Sem orquestração, se um dos 1000 contêineres Docker travar, um humano precisaria rodar docker restart. Se o servidor ficar sem memória no meio da madrugada, alguém precisaria comprar outro servidor.
A Orquestração automatiza o gerenciamento. O K8s (Kubernetes) atua como um maestro: ele monitora a saúde das aplicações, reinicia as que falharam ou travaram e aumenta os servidores (Scale Out) quando identificam picos de acessos.
2. Conceitos Chave do Kubernetes 🏗️
O K8s não fala "contêiner", ele fala Pod.
- Pod: A menor unidade (pode conter um ou mais contêineres).
- Node: Uma máquina física ou virtual (o "trabalhador") onde os Pods rodam.
- Cluster: O conjunto de todos os Nodes gerenciados pelo Kubernetes.
- Deployment: A definição de como o seu app deve rodar (ex: "quero sempre 3 cópias deste Pod ligadas").
Visualização de um Cluster
mermaid
graph TD
Control([Control Plane - O Cérebro]) --> Node1([Node 1])
Control --> Node2([Node 2])
subgraph "Node 1"
Pod1([Pod A])
Pod2([Pod B])
end
subgraph "Node 2"
Pod3([Pod A])
Pod4([Pod C])
end
3. Auto-Cura e Escala Automática 🦾
A grande mágica do Kubernetes é a Auto-Cura: se um contêiner travar ou um servidor desligar, o K8s percebe e sobe um novo contêiner em outra máquina automaticamente.
Conceito
Horizontal Pod Autoscaler (HPA): O K8s pode aumentar o número de Pods se o CPU da sua aplicação estiver muito alto e diminuir quando o tráfego baixar.
4. O Papel dos Runners 🏃♂️
No mundo do CI/CD (que vimos na Aula 11), os Runners são os contêineres que "correm" para executar o seu código. No GitHub Actions, o GitHub fornece runners, mas grandes empresas criam seus próprios Self-hosted Runners em clusters Kubernetes para ter mais controle e velocidade.
5. Prática: Lógica de Orquestração 🚀
- Imagine que você tem uma loja virtual.
- Normalmente, 3 servidores dão conta do recado.
- Chega a Black Friday e os acessos aumentam 10x.
- No seu bloco de notas, desenhe como o Kubernetes deveria agir:
- Passo 1: Perceber aumento de tráfego.
- Passo 2: Criar mais 27 cópias dos servidores (totalizando 30).
- Passo 3: Quando a Black Friday acabar, destruir 27 cópias para economizar dinheiro.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 15 - Comunicação e Colaboração em Equipe 💬
Objetivo
Objetivo: Entender a importância da comunicação eficaz em projetos de software, conhecer as ferramentas líderes de colaboração e aprender as melhores práticas de comunicação assíncrona.
1. O Código não é Tudo 🗣️
O sucesso de um projeto depende 50% da qualidade do código e 50% de quão bem a equipe se comunica. Mal-entendidos geram bugs, atrasos e frustração.
🧠 Conceito: Comunicação Assíncrona
É a comunicação que não exige que ambas as pessoas estejam presentes ao mesmo tempo (ex: mensagens de chat, e-mails, comentários no Git). É essencial para desenvolvedores, pois permite manter o "estado de fluxo" (concentração total).
2. Ferramentas de Mercado 🏢
🟦 Slack
A ferramenta favorita das startups e empresas de tecnologia. * Destaque: Integrações potentes (você pode receber alertas do GitHub ou do Jenkins direto no Slack). * Recurso: Canais organizados por projeto ou assunto.
🟪 Microsoft Teams
Muito comum em grandes corporações que já utilizam o ecossistema Office. * Destaque: Excelente integração para chamadas de vídeo e edição de documentos em tempo real.
3. Integração: ChatOps 🤖
Imagine que um teste falhou na sua pipeline (Aula 11). Em vez de você ter que abrir o GitHub para descobrir, um "bot" avisa a equipe no Slack imediatamente.
Fluxo de Notificação
mermaid
graph LR
CI[GitHub Actions] -- Falha no Teste --> BOT[Slack Bot]
BOT -- Alerta --> Channel[#projeto-ads]
Channel -- Dev vê --> Fix[Correção Imediata]
4. Etiqueta Digital para Devs 📜
- Evite o "Olá" vazio: Não mande apenas "Oi" e espere a resposta. Mande sua dúvida completa de uma vez.
- Use Threads: Responda a uma mensagem criando uma linha de conversa (thread) para não poluir o canal principal.
- Emojis: Use para confirmar recebimento (ex:
para "entendido") e economizar mensagens.
5. Prática: Configurando um Webhook (Lógica) 🚀
Webhooks são a forma como ferramentas "conversam" com o Slack:
- Imagine que você quer receber um aviso toda vez que um novo aluno entrar no curso.
- No seu bloco de notas, desenhe a lógica:
- Trigger: Cadastro de Aluno no Site.
- Ação: Enviar um JSON para a URL secreta do Slack.
- Resultado: Mensagem "Novo aluno registrado!" no canal #geral.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 16 - Design, Prototipagem e Handoff (Figma) 🎨
Objetivo
Objetivo: Compreender o papel do designer de interface (UI/UX), aprender a navegar no Figma para extrair informações técnicas e entender o processo de "Handoff" — a entrega do design para o desenvolvimento.
1. O que é o Figma? 🎨
O Figma é a ferramenta líder de mercado para design de interfaces. Diferente de softwares antigos, ele é baseado na nuvem e permite que designers e desenvolvedores trabalhem no mesmo arquivo simultaneamente.
🧠 Conceito: Design System
Muitas empresas utilizam um "Design System" no Figma. É uma biblioteca de componentes (botões, cores, fontes) padronizados que garantem que o aplicativo tenha a mesma cara em todas as telas.
2. Dev Mode: O Paraíso do Desenvolvedor 💻
Recentemente, o Figma lançou o Dev Mode, uma interface pensada exclusivamente para programadores. Ao clicar em um elemento, você pode ver: * CSS / Código: Largura, altura, cores em Hexadecimal/RGB. * Assets: Exportar imagens e ícones diretamente em SVG ou PNG. * Spacing: Ver a distância exata entre um botão e um texto.
3. O Processo de Handoff 🤝
Handoff é o momento em que o designer termina o protótipo e o entrega para o desenvolvedor começar a codificar.
Fluxo de Trabalho
mermaid
graph LR
Ideas[Ideias/UX] --> Wireframe[Protótipo de Baixa Fidelidade]
Wireframe --> HighFi[Design de Alta Fidelidade - Figma]
HighFi -- Handoff --> Dev[Desenvolvimento/Código]
Dev -- Feedback --> HighFi
4. Praticando a Inspeção 🔍
Mesmo sem o Figma aberto, imagine que você está inspecionando um botão no "Dev Mode":
/* Propriedades extraídas do Figma */
.botao-primario {
width: 200px;
height: 48px;
background-color: #6200EE;
border-radius: 8px;
color: #FFFFFF;
font-family: 'Inter', sans-serif;
font-weight: 600;
}
5. Prática: Explorando um Protótipo 🚀
Sua missão final é entrar no mundo do design:
- Crie uma conta gratuita no Figma.
- Busque na "Community" do Figma por um arquivo chamado "Material 3 Design Kit".
- Abra o arquivo e tente encontrar a seção de Buttons.
- Use a ferramenta de "Inspeção" para descobrir qual a cor hexadecimal do botão principal.
- Tente alterar o texto de um botão apenas para entender como a ferramenta funciona.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Parabéns!
Você concluiu todas as aulas deste curso!
Exercícios
Exercícios Práticos 🏋️
Pratique o que aprendeu com desafios graduais para cada aula.
Módulo 1 – Ecossistema e Gestão
- Ex 01 - Intro ao Ecossistema
- Ex 02 - Gestão de Projetos
- Ex 03 - Ambiente de Dev
- Ex 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
Módulo 3 – API e Qualidade
- Ex 09 - Ferramentas de API
- Ex 10 - Qualidade de Código
- Ex 11 - CI/CD Moderno
- Ex 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Exercícios 01 - Intro ao Empreendedorismo 🧩
🟢 Fáceis
- Defina o que é ser um empreendedor com suas palavras.
- Quais são as diferenças marcantes entre o empreendedor por necessidade e o por oportunidade?
🟡 Médios
- Um funcionário otimiza um setor interno reduzindo custos em 30%. Ele pode ser considerado empreendedor? Justifique baseado nos tipos de perfis.
- Explique a importância da característica 'Correr Riscos Calculados' na visão empreendedora.
🔴 Desafio
- Como a mentalidade 'Lean Startup' e o uso de MVP revolucionam a validação de um empreendimento, diferenciando da abertura clássica de empresas de décadas atrás?
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 02 - Identificação de Oportunidades 🧩
🟢 Fáceis
- Diferencie uma Ideia de uma Oportunidade real.
- Qual o papel das 'dores de clientes' na criação de oportunidades de negócios?
🟡 Médios
- De que forma o avanço tecnológico cria oportunidades para nichos até então ignorados? Dê um exemplo.
- Descreva como a segmentação ajuda a validar e penetrar no mercado com mais precisão.
🔴 Desafio
- Construa uma Matriz CSD para a ideia de um 'Aplicativo de Lavagem de Carros a Seco em Domicílio' e explique a estratégia de buscar o Oceano Azul para esse mercado.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 03 - Análise de Valor 🧩
🟢 Fáceis
- O que significa 'Percepção de Valor' pelo cliente?
- Qual é a relação entre preço, custo e valor na confecção de um produto?
🟡 Médios
- Se uma empresa inova mas o cliente não percebe melhoria na usabilidade, houve entrega de valor? Por quê?
- Apresente os três pilares que sustentam uma Proposta de Valor imbatível.
🔴 Desafio
- Explique a dinâmica do CAC e do LTV. Demonstre matematicamente por que um negócio cujo LTV seja 3x maior que o CAC tem uma análise de valor robusta.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 04 - Processo de Inovação 🧩
🟢 Fáceis
- Quais são as diferenças conceituais entre Inovação Incremental e Inovação Disruptiva?
- Defina sustentabilidade na inovação. Por que inovar é vital para a longevidade?
🟡 Médios
- Inovar sempre significa criar tecnologia do zero? Forneça um exemplo base.
- De que maneiras a Cultura Organizacional afeta as taxas de inovação na empresa?
🔴 Desafio
- Dado o nível de TRL (Technology Readiness Level), descreva como a inovação flui do ambiente acadêmico até o teste validado, e o que é o 'Vale da Morte' da Inovação neste percurso.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 05 - Estratégias e Ideação 🧩
🟢 Fáceis
- Qual a finalidade de realizar uma sessão de Brainstorming focada?
- O Design Thinking coloca o humano no centro. O que isso significa na prática da ideação?
🟡 Médios
- Como o processo de divergência (criar escolhas) e convergência (fazer escolhas) estrutura as dinâmicas?
- Cite dois mitigadores importantes na estratégia visual ou mind-mapping para resolução.
🔴 Desafio
- Descreva o modelo do 'Duplo Diamante' no contexto avançado e discuta como focar no Espaço do Problema é diferencial antes de pular para o Espaço da Solução.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 06 - Plano de Negócios 🧩
🟢 Fáceis
- Por que estruturamos um Plano de Negócios clássico perante investidores bancários?
- Destaque os principais componentes do Sumário Executivo.
🟡 Médios
- Como validar uma Projeção de Caixa sem conhecer o futuro? Que medidas usar?
- O Plano Operacional ajuda a prever a logística, os insumos essenciais e a real viabilidade do esforço. Qual a essência fundamental nele?
🔴 Desafio
- Para modelos ágeis em incerteza, como conciliar o Plano de Negócios Tradicional com a análise de Break-Even dinâmico em cenários desfavoráveis e incertos? Justifique em relação ao cálculo de OPEX e fixos contínuos.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 07 - Modelagem Canvas 🧩
🟢 Fáceis
- Qual a grande diferença e grande proposta revolucionária do Canvas sobre o Plano clássico (Seapa/Sebrae)?
- Quantos e quais são os blocos lógicos essenciais do Business Model Canvas (BMC)?
🟡 Médios
- Se uma alteração radical for feita na Segmentação de Clientes, que blocos do Canvas sofreriam abalo em cadeia direto?
- Descreva o papel lógico e semântico dos Canais versus a área de Relacionamento no Canvas.
🔴 Desafio
- O Canvas não é estático. Use o conceito de Padronização e Business Model Patterns, aplique isso definindo a configuração atípica de um Business Canvas na vertente Freemium Digital e Long Tail de produtos físicos nichados.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 08 - Segmentação de Clientes 🧩
🟢 Fáceis
- O que significa nichar um mercado e as vantagens desta restrição?
- Tratar características demográficas sozinhas atesta resultados plenos para startups? Por quê?
🟡 Médios
- Construa e diferencie a essência de Público-alvo versus da Persona Analítica Ideal.
- Exemplifique B2B e B2C determinando quem efetua a ação vital de compra corporativa.
🔴 Desafio
- O framework Intermediário 'Job To Be Done (JTBD)' inverte as lógicas do marketing e as personas engessadas e cegas faturadas globalmente pelo sistema demográfico. Desenvolva através da explicação com uma furadeira qual seria na realidade a tarefa subjacente.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 09 - Proposta de Valor 🧩
🟢 Fáceis
- Defina Proposta de Valor.
- O Valor sempre deve girar em torno apenas de vantagens tangíveis das especificações métricas? Justifique no design.
🟡 Médios
- Um diferencial muito fácil de ser copiado pela vasta concorrência assegura sustentabilidade da Proposta ao tempo? Explique com métricas simples.
- Como inovar perante mercados hiper superlotados provando que a Promessa Mútua de Valor perdura.
🔴 Desafio
- Utilizando o framework Value Proposition Canvas na complexidade intermediária dita acima do Value Proposition Canvas (VPC), descreva como Aliviadores da Dor e os Ganhadores criam correspondência fatal perante dores agudas, explicando a barreira e o 'FIT problem-solution'.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 10 - Canais de Comunicação 🧩
🟢 Fáceis
- O que definem os Canais de forma teórica em relação orgânica às vendas no modelo lido?
- Canal primariamente tem apenas e unicamente intuito de venda transacional? Cite um contraponto do marketing.
🟡 Médios
- Qual a disparidade de viabilidade e de impacto comparando canais Diretos com canais Indiretos parceirizados.
- Defina o viés moderno entre atuar num Multicanal perante um Omnichannel onde marcas modernas aportam.
🔴 Desafio
- Canais se comunicam matematicamente de forma contígua a taxas de funil perante CAC. Demonstre o racional intermediário estratégico que fundamenta em cancelar certas bases para manter a taxa de conversão final escalável nas estratégias focadas do Omnichannel.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 11 - Relacionamento com Cliente 🧩
🟢 Fáceis
- Como é percebida uma relação Autoatendimento e que benefício tem para startups iniciais do cenário SAAS?
- No extremo adverso, para mercados Ultra High Tickets ou B2B Complexos que relacionamento se opera?
🟡 Médios
- A cocriação vem a fortalecer bases. Exemplifique cocriações.
- Fidelidade e Retenção custam muito mais do que Captação agressiva? Expresse o racional comum vital do Marketing.
🔴 Desafio
- No nível profundo analítico como Cohort Analysis e a mensuração ativa de Churn Rate (Evasões) protegem os ativos contábeis antes das falências irrevesíveis dos Modelos de Negócios e qual atuação é empregada por analistas CS (Customer Success) e Onboardings baseados nas matrizes do software de relacionamento reativo intermediário SaaS.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 12 - Atividades-chave 🧩
🟢 Fáceis
- Resuma a premissa de que o modelo de negócio baseia e direciona o foco do Empreendedor e não as macro gerências irrelevantes.
- Qual seria uma Atividade-chave focada em startups puras de software versus logística atestadas?
🟡 Médios
- Como as atividades principais protegem o núcleo da corporação perante concorrentes que agem focados lateralmente.
- Defina plataforma ativa e Resolução de dores interligadas a um núcleo matricial de serviço corporativo consultivo ativo vital nos fluxos diários gerenciais propostos no mercado global ativo do Canvas padrão ideal testado e validado e escalonado interativamente na gestão do time matricial base ativa do mercado corporativo clássico vital pleno moderno no cenário global atual.
🔴 Desafio
- Elucide na profundidade da Teoria das Restrições (TOC) explanando gargalos orgânicos e justifique por que 'Otimizar um setor ou atividades irrelevante só prejudica as ineficiências latentes do modelo' perante um núcleo produtivo empresarial que subordina perdas.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 13 - Recursos Essenciais 🧩
🟢 Fáceis
- Qual é a base e elo lógico de intersecção existencial do Bloco de Recursos e das macro atividades correlatas ativas no canvas interativo?
- Distância de bases de recursos vitais como Patrimônio vs Finanças nas óticas modernas de empreendimentos ativos globais nascidos recém saídos dos Berços base da web 4.0 atuais perenes.
🟡 Médios
- Qual importância de capital Intelectual? Exemplifique no setor tech atual da bolsa ou de bases modernas.
- Cite formas e caminhos lógicos puros utilizados pelos ecossistemas orgânicos dos modelos físicos para amarrar recursos atestadamente sem incorrer falências antecipadas passivas brutais.
🔴 Desafio
- Gestão ágil do 'Asset-Light' tem salvo Unicórnios no mercado global interligado? Explique o fenômeno tangível vital sob as siglas CAPEX (ativos fixos) a e como as sublocações dinâmicas OPEX (operacionais fluidos e variáveis lógicos) aceleraram perante incertezas do mercado atrelado passivo oscilante global.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 14 - Parcerias Estratégicas 🧩
🟢 Fáceis
- Quais os motivos base de mitigar e partilhar esforços na criação das redes puras passivas orgânicas conjuntas aos pares e redes perenes atreladas?
- O termo Coopetição é a base dos negócios híbridos de pares? Forneça contexto lúdico onde englobam pares puros das bases do conceito ativo fluído.
🟡 Médios
- Risco fatiado no Joint Venturing interseciona lucros também ou age a título benevolente das premissas conjuntas dos acordos base?
- Com a nova era atestada interligada pautada nos Ecossistemas base tech fluídos puros os Parceiros perderam o contato? Elucide no marketplace nativo fluído ou intersecção nas gigantes redes perenes vitais globais.
🔴 Desafio
- O mercado avançado aponta 'Alianças API/Economy' substituindo elos braçais orgânicos inertes puros vitais dos moldes corporativos dos parceiros na era passada. Debata por que programar a roda inteira internamente beira ou flerta no suícidio logístico perante a aliança imediata nas APIs pautadas puras atestadamente robustas externas interlaçadas de gigantes fluídos escalonáveis mundiais.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 15 - Estrutura de Custos 🧩
🟢 Fáceis
- Discirna de modo fluído Custos e viabilidade entre modelo Direcionado ao Valor versus Direcionados na base bruta dos Custos focados intersecionados ativos perenes lógicos puros inatos ao planejamento.
- Qual pilar atesta Custo Fixo de um Custo estritamente Variável nas dinâmicas tangíveis operacionais lógicas?
🟡 Médios
- Qual tática ou margem atestável a franquia Fast-Food ou corporação escalonada atestada perante bases ganham ao comprar matéria em margens fluídas exponenciadas de bases massificadas intersecionadas globais?
- Expanda no fenômeno das Economias atreladas nas bases do Escopo puro onde logística fluí em fluxos paralelos orgânicos perenes aos conglomerados nativos passivos das estruturas de pontes de distribuição de base sólida logística imbuída globais.
🔴 Desafio
- Explicite O Efeito Burn Rate implacável que as Startups sofrem base nas projeções atestadas de viés intermediário e defina 'Runway' atrelado de métricas pautadas nos modelos base tech desprovidos puramente nativamente natos da margem atrelada fluída de ganhos iniciais interativos transacionais das massificações lógicas inatas garantidas fluídas ao percurso dos trilhos dos ecossistemas de risco e capital nativos da era tech.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Exercícios 16 - Fontes de Receita 🧩
🟢 Fáceis
- Separe nos vieses puramente simples o abismo entre Transação Base Pontual e Assinatura Recorrente fluída inata orgânica. Dê os vieses e os preenchimentos lógicos perante a sustentabilidade das amarras.
- Qual pilar atesta como via fluída imbatível na taxação contínua de bases pleníssimas como os bancos, Uber, Booking passivos fluídos plenos nos setores modernos globais?
🟡 Médios
- Destaque e explane atestadamente como Franchising base fluí ou Franchisings e os Modelos puros fluídos e atestáveis Licenciamentos geram atuações fadigadas menores à frente da matriz dona nativa pura inata pleníssima.
- Expanda nas óticas de Fremium model da base dos streams e elucide na prática da isca e das ancoragens orgânicas interativas fluídas perenes do modelo de ancoragens virtuais inatas nos SAAS básicos vitais globais fluídos ativos puristas das inovações das receitas da Era.
🔴 Desafio
- Explicite o abalo atrelado na maestria em fontes de receitas e as correntes interligáveis baseadas amplificadamente e exponenciais gerando ativas fluídas plenas o massivo absoluto e bilionário 'Efeito de Rede' apoiando e sustentando tramas puramente fidedignas nativas e perenes engessando concorrências em MRR vitais pautadamente inatos ao passo global de domínio fidedigno mercadológico pautado fluido ativamente de blindagens imponentes absolutas gigantes.
📚 Correção
Após tentar responder e pesquisar, verifique a resolução oficial e o gabarito para consolidar o aprendizado:
Projetos
Projetos Práticos 🚀
Transforme teoria em prática com desafios progressivos que compõem seu portfólio.
Módulo 1 – Ecossistema e Gestão
- Projeto 01 - Diagnóstico Cinto Dev
- Projeto 02 - Fluxo Kanban (Jira/Trello)
- Projeto 03 - Meu Setup Profissional
- Projeto 04 - Primeiro Repo Git
Módulo 2 – Colaboração e Dados
- Projeto 05 - Pull Request Perfeito
- Projeto 06 - Modelagem RM (Relacional)
- Projeto 07 - Cache com Redis
- Projeto 08 - Testes Automatizados
Módulo 3 – API e Qualidade
- Projeto 09 - Documentação Postman
- Projeto 10 - Linting e Formatação
- Projeto 11 - Primeira Action CI
- Projeto 12 - Automação Shell
Módulo 4 – Infra e Docker
- Projeto 13 - Hello World Docker
- Projeto 14 - Compose Multi-Serviço
- Projeto 15 - Monitoramento Simples
Módulo 5 – Design e UI
Projeto 01 - Diagnóstico do Ambiente 🚀
🎯 Objetivo
Verificar a saúde do seu cinto de ferramentas atual e identificar o que falta para começar sua jornada como desenvolvedor profissional.
📋 Passo a Passo
- Terminal Check: Abra o terminal do seu sistema operacional.
- Execução de Comandos: Digite os seguintes comandos um por um e anote a versão que aparece:
- Relatório de Faltas: Se algum comando retornou
comando não encontrado, anote esse item em uma lista de "Instalações Pendentes". - Conta GitHub: Se ainda não possui, acesse github.com e crie sua conta. Customize seu perfil com uma foto e uma breve bio.
- Print de Sucesso: Salve um print do seu terminal com pelo menos dois comandos funcionando.
Entrega: Um arquivo .txt ou .md com a lista de versões encontradas e o print do terminal.
Projeto 02 - Criando seu Primeiro Quadro Ágil 📊
🎯 Objetivo
Organizar um fluxo de trabalho utilizando o método Kanban para um projeto fictício de desenvolvimento.
📋 Passo a Passo
- Escolha da Ferramenta: Acesse o Trello ou utilize as GitHub Issues do repositório criado no Projeto 01.
- Criação das Colunas: Configure seu quadro com as colunas:
Backlog,To Do,Doing,Done. - Criação de Cards: Adicione 5 tarefas necessárias para criar um site simples (ex: "Criar HTML", "Estilizar com CSS", "Testar no Chrome").
- Atribuição e Prazo: Em pelo menos 2 cards, adicione uma data de entrega (Due Date) e uma etiqueta de prioridade (ex: "Alta", "Baixa").
- Movimentação: Mova 2 tarefas para
Doingpara simular o início do trabalho.
Entrega: O link público do seu quadro no Trello ou o link das Issues no seu GitHub.
Projeto 03 - Customização do Ambiente Dev 💻
🎯 Objetivo
Deixar o Visual Studio Code pronto para o trabalho profissional, com as extensões e temas que aumentam a produtividade.
📋 Passo a Passo
- Instalação de Extensões: No VS Code, instale:
- Prettier - Code Formatter
- Portuguese (Brazil) Language Pack
- Material Icon Theme
- Configuração de User Settings: Abra o
settings.json(Ctrl+Shift+P > Open User Settings JSON) e adicione (ou verifique) a linha: - Teste de Terminal: Use o terminal integrado (Ctrl + `) para criar a pasta do curso:
- Tema do Editor: Mude o tema de cores para um de sua preferência (File > Preferences > Theme > Color Theme).
Entrega: Um print do seu VS Code aberto com a barra lateral de extensões visível e o terminal integrado aberto na pasta criada.
Projeto 04 - Inicializando a Máquina do Tempo 🛠️
🎯 Objetivo
Praticar o fluxo local do Git, desde a inicialização de um repositório até o salvamento permanente das alterações.
📋 Passo a Passo
- Pasta do Projeto: Crie uma pasta chamada
meu-legacy-projeto. - Início do Git: Via terminal, dentro da pasta, execute:
- Configuração de Identidade: Garanta que seu nome e e-mail estão configurados (
git config --list). - Primeiro Arquivo: Crie um arquivo
index.htmlbásico. - Commit Inicial: Adicione o arquivo à Staging Area e faça o commit:
- Verificação de Histórico: Execute
git loge verifique se o seu commit aparece com o código (hash) único.
Entrega: Um print da tela do terminal mostrando o resultado do comando git log.
Projeto 05 - Meu Código na Nuvem ☁️
🎯 Objetivo
Aprender a sincronizar um repositório local com o GitHub e entender a importância do backup e colaboração online.
📋 Passo a Passo
- Novo Repo no GitHub: No seu GitHub, crie um repositório Público chamado
git-hands-on-ads. - Conexão Remota: No terminal, dentro da pasta do Projeto 04, execute:
- Envio de Código: Envie seu commit local para a nuvem:
- Verificação: Recarregue a página do GitHub e veja seu arquivo
index.htmllá. - Edição Online: Edite o arquivo diretamente no site do GitHub (usando o botão de lápis) e faça o commit por lá.
- Sincronização Inversa: Volte ao terminal e traga essa mudança para sua máquina:
Entrega: O link do seu repositório público no GitHub.
Projeto 06 - Minha Primeira Tabela SQL 💾
🎯 Objetivo
Aprender a criar e gerenciar um banco de dados relacional (SQL) usando uma interface universal e comandos básicos.
📋 Passo a Passo
- DBeaver Setup: Abra o DBeaver (instalado na Aula 06).
- Conexão SQLite: Clique em "New Database Connection" e escolha SQLite. Crie um arquivo de banco chamado
meu_banco_ads.db. - Criação de Tabela: Abra o Editor SQL e execute o comando:
- Inserção de Dados: Use a interface visual (Grid) para adicionar 3 ferramentas que você aprendeu até agora (ex: VS Code, Git, Jira).
- Consulta Final: Execute
SELECT * FROM Ferramentas;e verifique se as 3 linhas aparecem corretamente.
Entrega: Um print do DBeaver mostrando a tabela Ferramentas preenchida com os 3 dados.
Projeto 07 - Modelagem de Documentos JSON ⚡
🎯 Objetivo
Entender como os dados são estruturados no mundo NoSQL, utilizando o formato JSON para representar informações complexas de forma flexível.
📋 Passo a Passo
- Novo Arquivo JSON: No VS Code, crie um arquivo chamado
portfolio.json. - Estrutura de Dados: Crie um objeto JSON que contenha:
- Seu nome e curso.
- Uma lista (
array) de projetos. - Dentro de cada projeto, uma lista das ferramentas utilizadas.
- Exemplo de Formato:
- Validação: Verifique se todas as chaves estão entre aspas duplas e se não faltam vírgulas.
- Mini-Desafio: Adicione um campo de data no formato ISO (ex:
"2025-02-19") para cada projeto.
Entrega: O conteúdo do seu arquivo portfolio.json.
Projeto 08 - Planejando Casos de Teste 🧪
🎯 Objetivo
Desenvolver a mentalidade de QA (Quality Assurance) ao planejar o que deve ser testado em um software antes mesmo de ele estar pronto.
📋 Passo a Passo
- Cenário: Você foi contratado para testar um Sistema de Login.
- Identificação de Casos: Liste 5 cenários que você deve testar. Exemplos:
- Sucesso: Usuário e senha corretos.
- Falha: Usuário correto, senha errada.
- Email Inválido: Digitar um e-mail sem o "@".
- Formato do Relatório: Para cada caso, anote: Ação, Resultado Esperado e Prioridade (Alta, Média ou Baixa).
- Escolha do Framework: Com base no que vimos na Aula 08, escreva qual framework você usaria se esse site fosse feito em JavaScript e qual usaria se fosse feito em Python.
Entrega: Um documento .md com sua lista de 5 casos de teste estruturados.
Projeto 09 - Testando uma API Pública 📡
🎯 Objetivo
Praticar o uso de clients HTTP para fazer requisições a uma API real, entender os Status Codes e analisar a estrutura de resposta JSON.
📋 Passo a Passo
- Ferramenta: Abra o Postman ou Insomnia.
- Requisição GET: Configure uma requisição para a URL:
https://jsonplaceholder.typicode.com/posts/1. - Análise de Resposta:
- Verifique se o Status Code foi
200 OK. - Identifique os campos
userId,id,titleebody.
- Verifique se o Status Code foi
- Parâmetros de Query: Tente filtrar os posts por usuário adicionando um parâmetro:
https://jsonplaceholder.typicode.com/posts?userId=1. Quantos posts retornaram? - Requisição POST: Tente criar um post fictício enviando um JSON no Body (formato raw > JSON) com um título e um corpo. Verifique se o retorno é
201 Created.
Entrega: Um print do Postman mostrando o resultado da sua requisição POST com sucesso.
Projeto 10 - Limpeza Automática de Código ✨
🎯 Objetivo
Configurar e utilizar ferramentas de análise estática e formatação para garantir que o código siga padrões profissionais automaticamente.
📋 Passo a Passo
- Ambiente: Abra o VS Code em uma pasta vazia.
- Arquivo Bagunçado: Crie um arquivo
app.jse cole o seguinte código (exatamente com essa má indentação): - Formatação Manual: Pressione
Shift + Alt + F. Veja o Prettier organizar os espaços e parênteses. - Automação: Verifique se a opção "Format on Save" está ativa (Aula 10). Mude algo no código, salve e veja a mágica acontecer.
- Desafio Linter: Apague a linha
const x = 10;mas mantenha a chamadasoma(5, x). Observe o VS Code sublinhar o erro em vermelho. Passe o mouse sobre o erro e leia a mensagem do Linter.
Entrega: Um print do seu VS Code com o código formatado e o erro do Linter visível.
Projeto 11 - Minha Primeira Pipeline 🚀
🎯 Objetivo
Criar e disparar seu primeiro fluxo de automação (Workflow) no GitHub para entender como as ferramentas de CI/CD funcionam na nuvem.
📋 Passo a Passo
- Pasta de Configuração: No seu repositório do GitHub (criado no Projeto 05), crie uma pasta chamada
.githube, dentro dela, uma pasta chamadaworkflows. - Arquivo de Workflow: Crie um arquivo chamado
hello-ci.ymldentro deworkflows. - Conteúdo do YAML: Cole o código abaixo:
- Commit e Push: Envie essa alteração para o GitHub.
- Monitoramento: Vá na aba Actions do seu repositório e clique no workflow "Teste de Automacao". Veja ele sendo executado e verifique se o log mostra a mensagem do comando
echo.
Entrega: O link da aba "Actions" do seu repositório mostrando o workflow com sucesso (verde).
Projeto 12 - Infraestrutura no Papel ⚙️
🎯 Objetivo
Praticar a escrita de arquivos de configuração YAML para automação de servidores, focando na lógica de Infraestrutura como Código.
📋 Passo a Passo
- Novo Arquivo: No VS Code, crie um arquivo chamado
instalar_servidor.yml. - Lógica do Ansible: Escreva um Playbook simples que descreva a instalação de um servidor web. O arquivo deve conter:
- Um nome para a jogada (
name). - Onde será executado (
hosts: localhost). - Uma lista de tarefas (
tasks).
- Um nome para a jogada (
- Tarefas Necessárias:
- Instalar o pacote
nginx. - Copiar um arquivo
index.html. - Garantir que o
nginxesteja iniciado.
- Instalar o pacote
- Exemplo de Sintaxe:
- Verificação: Use o VS Code para garantir que não há erros de indentação no seu arquivo YAML.
Entrega: O conteúdo do seu arquivo instalar_servidor.yml.
Projeto 13 - Empacotando com Docker 📦
🎯 Objetivo
Aprender a criar uma imagem personalizada no Docker para garantir que o seu projeto rode da mesma forma em qualquer servidor.
📋 Passo a Passo
- Ambiente: Abra a pasta do seu Projeto 04 (
meu-legacy-projeto). - Criação do Dockerfile: Crie um arquivo chamado
Dockerfile(sem extensão). - Configuração da Imagem:
- Criação da Imagem (Terminal): Execute o comando:
- Execução do Contêiner: Rode seu site dentro do Docker:
- Teste: Acesse
localhost:8080no seu navegador e veja se o seuindex.htmlaparece.
Entrega: Um print do navegador acessando o localhost:8080 e um print do comando docker ps no terminal.
Projeto 14 - Mapa de um Cluster K8s ☸️
🎯 Objetivo
Visualizar a estrutura lógica de um orquestrador de contêineres e entender como as peças se encaixam para garantir a alta disponibilidade.
📋 Passo a Passo
- Cenário: Você precisa hospedar uma API que deve ter sempre 3 cópias rodando para aguentar o tráfego.
- Desenho Lógico (Mermaid): No VS Code, use a sintaxe Mermaid para desenhar a estrutura:
- 1 Control Plane (Cérebro).
- 2 Nodes (Trabalhadores).
- 3 Pods (Onde seu app mora), distribuídos entre os Nodes.
- Exemplo de Mapa:
mermaid graph TD C[Control Plane] --> N1[Node 1] C --> N2[Node 2] N1 --> P1[Pod API - v1] N1 --> P2[Pod API - v1] N2 --> P3[Pod API - v1] - Simulação de Falha: Escreva um parágrafo descrevendo o que o Control Plane faria se o Node 1 desligasse subitamente.
Entrega: O código Mermaid do seu mapa e o parágrafo explicativo da simulação de falha.
Projeto 15 - Etiqueta no Slack 💬
🎯 Objetivo
Praticar a comunicação assíncrona eficaz e profissional, essencial para o trabalho em equipes remotas e ágeis.
📋 Passo a Passo
- Cenário: Você está com um erro no código (o banco de dados não conecta) e precisa de ajuda do seu colega "Sênior".
- Redação de Mensagem (Ruim): Escreva como NÃO se deve pedir ajuda (ex: apenas "Oi, tudo bem?").
- Redação de Mensagem (Boa): Escreva uma mensagem seguindo as regras da Aula 15:
- Vá direto ao ponto.
- Anexe o erro que aparece no terminal.
- Diga o que você já tentou fazer.
- Simulação de Resposta: Imagine que o colega respondeu e você resolveu o problema. Qual emoji você usaria na mensagem dele para confirmar que está tudo ok sem precisar mandar uma nova mensagem de texto?
Entrega: As duas versões da mensagem (Ruim e Boa) e a explicação da sua escolha de emoji.
Projeto 16 - Inspecionando no Figma 🎨
🎯 Objetivo
Aprender a extrair informações técnicas de um protótipo visual, transformando o design em propriedades CSS prontas para o código.
📋 Passo a Passo
- Acesso: Entre no site do Figma (ou use a conta criada na Aula 16).
- Protótipo Exemplo: Procure por um "UI Kit" gratuito na comunidade.
- Extração de Estilos: Escolha um "Card" ou um "Botão" e anote as seguintes informações técnicas:
- A cor principal (Hexadecimal: ex:
#000000). - A fonte utilizada (ex:
Inter,Roboto). - O
border-radius(arredondamento das bordas). - O
padding(espaçamento interno).
- A cor principal (Hexadecimal: ex:
- Tradução para Código: Escreva um bloco de CSS que represente exatamente o elemento que você inspecionou.
Entrega: Um print do elemento selecionado no Figma e o código CSS que você escreveu com base nele.
Quizzes
Quizzes Interativos 🧠
Teste seus conhecimentos rapidamente ao final de cada lição.
Módulo 1 – Ecossistema e Gestão
- Quiz 01 - Intro ao Ecossistema
- Quiz 02 - Gestão de Projetos
- Quiz 03 - Ambiente de Dev
- Quiz 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
- Quiz 05 - Plataformas Git
- Quiz 06 - DB Relacional
- Quiz 07 - NoSQL e Cache
- Quiz 08 - Frameworks de Teste
Módulo 3 – API e Qualidade
- Quiz 09 - Ferramentas de API
- Quiz 10 - Qualidade de Código
- Quiz 11 - CI/CD Moderno
- Quiz 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Quiz 01
Quiz 02
Quiz 03
Quiz 04
Quiz 05
Quiz 06
Quiz 07
Quiz 08
Quiz 09
Quiz 10
Quiz 11
Quiz 12
Quiz 13
Quiz 14
Quiz 15
Quiz 16
Slides
Slides 📺
Material visual para acompanhamento das vídeo-aulas.
-
Módulo 1: Fundamentos e Gestão ---
-
Módulo 2: Colaboração e Dados ---
-
Módulo 3: Qualidade e Automação ---
-
Módulo 4: Infraestrutura e Integração ---
Aula 01: Introdução ao Ecossistema de Ferramentas 🌐
🎯 Nosso Objetivo Hoje
- Entender o ecossistema do desenvolvedor moderno.
- Diferenciar as categorias de ferramentas.
- Conhecer o poder da automação.
- Primeiros passos no Terminal.
🚀 Por que ferramentas importam?
- Economia de Tempo ⏳
- Padronização 📏
- Qualidade do Código 💎
- Trabalho em Equipe 🤝
🧩 O "Cinto de Utilidades" do Dev
Um desenvolvedor profissional não vive apenas de escrever código. Ele gerencia: * Tarefas * Versões * Ambientes * Qualidade
🛠️ Categorias de Ferramentas
- Gestão de Projetos (Jira, Trello)
- Ambiente de Dev (VS Code, Terminal)
- Controle de Versão (Git, GitHub)
- Banco de Dados (Postgres, DBeaver)
🛠️ Categorias de Ferramentas (Cont.)
- Qualidade e Testes (Jest, Sonar)
- Infraestrutura e CI/CD (Docker, Actions)
- Comunicação (Slack, Teams)
- Design (Figma)
🧠 Conceito: Automação
"Se você faz a mesma coisa mais de 3 vezes, você deve automatizá-la."
📈 O Ciclo de Vida do Software
mermaid
graph LR
P[Planejar] --> C[Codar]
C --> T[Testar]
T --> D[Deploy]
D --> O[Operar]
O --> P
💻 IDE vs Editor de Código
- Editor: Leve, rápido, extensível (ex: VS Code).
- IDE: Completa, "pesada", ferramentas nativas (ex: IntelliJ).
🖥️ O Poder do Terminal (CLI)
A interface de linha de comando é a casa do desenvolvedor. * Rapidez: Sem cliques infinitos. * Scripts: Repetir tarefas complexas. * Controle: Acesso total ao sistema.
⌨️ Comandos Básicos (Terminal)
ls: Listar arquivos.cd: Entrar em pasta.mkdir: Criar pasta.pwd: Onde eu estou?
📂 Organização de Pastas
Mantenha seus projetos organizados!
* Ex: ~/SourceCode/REPOS/github/
* Evite espaços nos nomes de pastas.
* Use hifen-ou-underscore.
🦀 Ferramentas de Gestão
- Jira: O padrão corporativo.
- Trello: Visual e simples (Kanban).
- GitHub Issues: Integrado ao código.
🐙 O Ecossistema Git
- Git: O software local.
- GitHub: A rede social do código.
- GitLab: Foco em CI/CD e empresas.
📦 O Mundo dos Contêineres
O que é Docker? * Empacota o app. * Funciona igual em todo lugar. * "Na minha máquina funciona" acabou!
💎 Qualidade de Código
- Linters: Corretor ortográfico de código.
- Formatters: Deixa o código padronizado.
- Testes: Garante que nada quebra.
📡 Ferramentas de API
Testando a comunicação entre sistemas. * Postman * Insomnia
🎨 O Elo com o Design
- Figma: Onde o app nasce visualmente.
- Handoff: A entrega para o desenvolvedor.
🏆 Conclusão da Intro
Você não precisa dominar todas hoje. * Escolha uma de cada categoria. * Pratique a linha de comando. * Mantenha a curiosidade ativa.
📝 Próximos Passos
- Instalar o VS Code.
- Configurar o Git.
- Criar conta no GitHub.
🏁 Dúvidas?
Vamos para a prática! 🚀
Aula 02: Gestão de Projetos e Tarefas 📊
🎯 O que vamos ver hoje?
- A importância da organização.
- Metodologias Ágeis (Kanban).
- Ferramentas: Trello, Jira, GitHub Issues.
- Conceitos: Backlog, Sprints, Prioridade.
😫 O Caos Sem Ferramentas
- Esquecer tarefas importantes.
- Dois devs fazendo a mesma coisa.
- Não saber o que entregar amanhã.
- Perder o histórico de decisões.
🧠 Metodologia Ágil
Não é sobre trabalhar mais, é sobre trabalhar melhor. * Entregas constantes. * Flexibilidade a mudanças. * Transparência total no time.
🛹 O quadro Kanban
Uma forma visual de ver o fluxo de trabalho. * To Do: O que precisa ser feito. * Doing: O que está sendo feito. * Done: O que já terminou.
📊 Visualização do Kanban
mermaid
kanban
Todo
[Tarefa 1: Criar Header]
[Tarefa 2: Validar API]
InProgress
[Tarefa 3: Ajustar CSS]
Done
[Tarefa 4: Configurar Git]
📂 O Backlog
O "estoque" de ideias e necessidades. * Sugestões de usuários. * Bugs encontrados. * Melhorias técnicas. * Nada é perdido!
🏆 Priorização
Nem tudo é urgente. * Crítico: Site fora do ar. * Alto: Cadastro não funciona. * Médio: Botão com cor errada. * Baixo: Mudar ícone do rodapé.
🟦 Trello: A Simplicidade Visual
- Baseado em Cartões e Listas.
- Fácil para times pequenos.
- Extensões (Power-Ups).
- Gratuito e intuitivo.
🏗️ Jira: O Poder Corporativo
- Feito para Software (Agile).
- Relatórios avançados (Burndown).
- Fluxos de trabalho customizáveis.
- Integração profunda com código.
🐙 GitHub Issues
- Gestão dentro do repositório.
- Links diretos com commits.
- Suporte a Checklists e Milestones.
- Ideal para Open Source.
🔄 Status de uma Tarefa (Exemplo)
mermaid
stateDiagram-v2
[*] --> Backlog
Backlog --> ToDo: Triagem
ToDo --> Doing: Desenvolvimento
Doing --> Review: Code Review
Review --> Doing: Ajustes
Review --> Done: Merge
Done --> [*]
⏰ Sprints e Ciclos
Organizando o tempo. * Sprint: Ciclo de 1 a 4 semanas. * Planning: O que faremos agora? * Review: O que entregamos?
🛑 Impedimentos (Blockers)
"Não consigo avançar porque..." * Dependência de outro time. * Falta de acesso a um servidor. * Dúvida no requisito. * Identifique rápido!
🏷️ O Uso de Labels
Categorize suas tarefas:
* bug 🔴
* feature 🟢
* documentation 🔵
* blocker ⚠️
🤝 Colaboração no Card
- Comentários para histórico.
- Menções (@usuario).
- Anexo de prints e logs.
- Evite conversas importantes fora do card!
📈 Estimativas (Story Points)
Quanto esforço essa tarefa exige? * 1: Simples (mudar texto). * 5: Média (criar página). * 13: Complexa (nova feature).
🤖 Integração: Chat + Gestão
- Bot do Jira no Slack.
- Notificação quando PR é aberto.
- Transparência sem esforço.
🏆 Checklist de Sucesso
- Kanban atualizado diariamente.
- Tarefas pequenas e claras.
- Prioridades bem definidas.
- Ninguém com 5 tarefas "Doing".
📝 Prática de Hoje
- Criar um quadro no Trello/Jira.
- Adicionar 5 tarefas reais do seu semestre.
- Priorizar e colocar prazos.
🏁 Dúvidas?
Organização é metade do caminho! 🚀
Aula 03: Ambiente de Desenvolvimento 💻
🎯 Nosso Foco
- Dominar o VS Code.
- Configurar extensões essenciais.
- Navegar pelo Terminal com confiança.
- Customizar seu workflow.
🏗️ Por que investir no ambiente?
- Menos tempo configurando, mais tempo criando.
- Erros capturados antes de rodar o código.
- Saúde ocular e mental (Temas e Fontes).
- Seu computador é sua oficina!
🟦 VS Code: O Rei dos Editores
- Lançado pela Microsoft em 2015.
- Escrito em TypeScript/Electron.
- Arquitetura de plugins leve.
- Standard de mercado.
🎨 Personalização Visual
- Temas: Dracula, One Dark Pro, Night Owl.
- Ícones: Material Icon Theme, vscode-icons.
- Fontes: Fira Code, JetBrains Mono (Ligatures).
🔌 Extensões: Produtividade Pura
- Prettier: Formatação automática.
- ESLint: Análise de código em tempo real.
- GitLens: Quem escreveu essa linha?
- Error Lens: Erros destacados na linha.
🔌 Extensões: Utilidades
- Path Intellisense: Auto-completar caminhos de arquivos.
- Auto Close/Rename Tag: Agilidade no HTML.
- Thunder Client: Testar APIs dentro do editor.
⌨️ Atalhos do VS Code (Ninja Mode)
Ctrl + P: Abrir arquivo rapidamente.Ctrl + Shift + P: Paleta de comandos.Alt + Up/Down: Mover linha de lugar.Ctrl + D: Selecionar próxima ocorrência.
⌨️ Atalhos do VS Code (Edição)
Ctrl + /: Comentar bloco de código.Ctrl + B: Esconder barra lateral.Ctrl + ': Abrir/Fechar Terminal.Ctrl + \: Dividir o editor (Split View).
🖥️ O Terminal Integrado
mermaid
graph TD
Editor[Editor de Texto] -- Atalho Ctrl + ' --> Term[Terminal Integrado]
Term -- Executa --> Node[Node.js / Python]
Term -- Comanda --> Git[Git / Docker]
🏠 Navegação de Diretórios
pwd: Print Working Directory (Onde estou?).ls -la: Listar tudo (inclusive ocultos).cd ..: Voltar uma pasta.cd ~: Ir para a Home.
🔨 Manipulação de Arquivos
touch index.js: Criar arquivo vazio.mkdir src: Criar pasta "src".mv velho.js novo.js: Renomear.rm -rf pasta: Deletar recursivamente (CUIDADO!).
🔍 Gerenciamento de Conteúdo
cat file.txt: Ver conteúdo no terminal.grep "erro" log.txt: Buscar texto dentro do arquivo.echo "olá" > file.txt: Escrever no arquivo.
💡 Dica de Ouro: Alias
Você pode criar apelidos para comandos longos!
* gs -> git status
* ga -> git add .
* gc -> git commit -m
🐚 Alternativas de Terminal
- Windows: WSL2 (Linux no Windows), PowerShell 7.
- Mac/Linux: Zsh (Oh My Zsh), Fish Shell.
🛠️ Configurando o settings.json
Tudo no VS Code é texto!
* Acesse com Ctrl + Shift + P > Open User Settings (JSON).
* Sincronize suas configurações com o GitHub.
📈 Autocomplete (IntelliSense)
- Sugestões baseadas no contexto.
- Documentação rápida ao passar o mouse.
- Snippets: Pedaços de código prontos.
🦁 Debugging Diferenciado
- Pare de usar
console.logpara tudo! - Use Breakpoints (pontos de parada).
- Inspecione variáveis em tempo real no editor.
🏆 Checklist do Ambiente Pro
- Tema escuro configurado.
- Extensões de linting e format instaladas.
- Atalhos básicos memorizados.
- Terminal configurado com
zshoupwsh.
📝 Prática de Hoje
- Customizar seu VS Code.
- Criar uma estrutura de 3 pastas via Terminal.
- Configurar o Auto-Format ao Salvar.
🏁 Dúvidas?
Seu ambiente, suas regras! 🚀
Aula 04: Controle de Versão com Git 🛠️
🎯 Nossa Missão
- Entender por que usar Git.
- Dominar o fluxo local (Add/Commit).
- Configurar sua identidade de desenvolvedor.
- Aprender a "viajar no tempo" com o histórico.
😫 O Problema do "Final_v2_Revise.zip"
- Qual arquivo é o último?
- Como voltar se eu apagar tudo sem querer?
- Como saber quem mudou o quê?
- O Git resolve tudo isso.
🧠 O que é o Git?
- Sistema de Controle de Versão Distribuído.
- Criado por Linus Torvalds (o pai do Linux).
- Rápido, leve e focado na integridade dos dados.
⚙️ Configuração Inicial
Antes de começar, o Git precisa saber quem você é.
* Configura apenas uma vez por computador.🏗️ As Três Áreas do Git
mermaid
graph LR
WD[Working Directory] -- git add --> SA[Staging Area]
SA -- git commit --> LR[Local Repository]
1. Working Directory 📂
É a pasta onde seus arquivos estão agora. * Onde você edita, cria e deleta. * O Git está observando as mudanças "em aberto".
2. Staging Area (ou Index) 🎟️
É a "sala de espera" para os arquivos que você quer salvar.
* Você escolhe o que entra no palco.
* Permite selecionar apenas alguns arquivos alterados.
* Comando: git add <arquivo>.
3. Local Repository (Histórico) 📜
É onde as versões são salvas permanentemente na sua máquina.
* Após o commit, a versão ganha um código (Hash).
* Imutável e seguro.
* Comando: git commit -m "mensagem".
🚀 Inicializando um Repositório
* Isso cria a pasta mágica.git.
🔍 Verificando o Estado
git status
* Arquivos Vermelhos: Mudanças não preparadas.
* Arquivos Verdes: Mudanças no Staging (prontas para commit).
* Nada para comitar: Tudo limpo!
📝 A Arte da Mensagem de Commit
❌ Má prática: ajustes, fix, commmit, v1
✅ Boa prática (Conventional Commits):
* feat: adicionar tela de login
* fix: corrigir erro no calculo de frete
* docs: atualizar cronograma da aula
📖 Consultando o Passado: git log
- Lista todos os commits.
- Mostra Autor, Data e Mensagem.
- Exibe o HASH (ex:
a1b2c3d). - Use
git log --onelinepara uma lista curta.
🕵️♂️ Ocultando o que não importa: .gitignore
Existem arquivos que NÃO devem ir para o Git:
* Senhas e Chaves de API.
* Pastas de bibliotecas (node_modules).
* Arquivos temporários do Sistema (.DS_Store).
* Configurações pessoais do editor.
💡 Como funciona o .gitignore?
Crie um arquivo chamado .gitignore e escreva os nomes das pastas/arquivos lá.
🔄 Fluxo Completo na Prática
- Edita o arquivo.
git status(Ver o que mudou).git add .(Levar tudo para o palco).git commit -m "feat: x"(Salvar!).
🛳️ Diferença entre Git e GitHub
- Git: O motor local. Funciona sem internet.
- GitHub: O estacionamento de nuvem. Ferramenta social.
- O Git envia para o GitHub (veremos na próxima aula!).
⚠️ Atenção aos Erros Comuns
- Esquecer de fazer o
git addantes docommit. - Tentar fazer
commitsem mensagem. - Sair comitando arquivos de 1GB (use .gitignore!).
🏆 Checklist de Fundamentos
- Repositório inicializado com
git init. - Usuário e Email configurados.
- Entende a diferença entre Add e Commit.
- Sabe ler o
git status.
📝 Prática de Hoje
- Criar uma pasta e iniciar o Git.
- Fazer 3 commits com mensagens diferentes.
- Criar um
.gitignoree testar se funciona.
🏁 Dúvidas?
O Git é seu melhor amigo de agora em diante! 🚀
Aula 05: Plataformas de Colaboração 🤝
🎯 Nossa Missão
- Levar o código local para a nuvem.
- Trabalhar em equipe sem sobrescrever o colega.
- Dominar Pull Requests e Code Review.
- Conhecer GitHub, GitLab e Bitbucket.
☁️ Por que usar repositórios remotos?
- Backup Seguro: Se o PC pifar, o código está na nuvem.
- Colaboração: Várias pessoas no mesmo projeto.
- Deploy: Servidores buscam o código de lá.
- Portfólio: Mostrar seu trabalho para o mundo.
🏢 O Big Three das Plataformas
- GitHub: A maior e mais social.
- GitLab: Foco em empresas e CI/CD integrado.
- Bitbucket: Integração nativa com Jira.
🔗 Conectando Local com Remoto
git remote add origin <url-do-servidor>
* origin: É o apelido padrão do seu servidor remoto.
* Você pode ter mais de um remoto (ex: upstream).
🚀 Enviando Código: git push
O ato de "empurrar" seus commits para a nuvem.
*-u: Salva a preferência (upstream), depois basta usar git push.
📥 Trazendo Código: git pull
Sincronizando as mudanças que outros fizeram.
* Executa um fetch (busca) + merge (une).
* Mantenha seu código local sempre atualizado!
👯♀️ Clonando um Projeto: git clone
Baixando um repositório que já existe online. * Cria a pasta, inicia o git e baixa todos os arquivos. * Baixa todo o histórico de commits.
🌳 Trabalhando com Branches
O segredo da colaboração segura.
mermaid
graph LR
M((Main)) --- A((Fix A))
M --- B((Feature B))
A -.-> M
B -.-> M
* Main: Sempre código funcional e testado.
* Features: Branches para cada tarefa nova.
🏗️ O Ciclo de Vida de uma Alteração
```mermaid sequenceDiagram participant D as Desenvolvedor participant G as GitHub (Cloud) participant T as Time (Equipe)
D->>D: Cria Branch & Commits
D->>G: git push branch
D->>G: Abre Pull Request (PR)
G->>T: Notifica Time
T->>G: Faz Code Review & Sugestões
D->>G: Ajusta Código
G->>G: Merge para Main
```
📝 O Pull Request (PR)
Não é apenas código, é uma conversa. * Título Claro: O que isso resolve? * Descrição: Explique as mudanças complexas. * Prints/Vídeos: Se houver mudança visual.
🔍 Code Review: A Etapa de Ouro
Por que revisar código alheio? * Encontrar bugs que o autor não viu. * Aprender novas técnicas. * Garantir a padronização do time. * Seja gentil nas críticas!
👯♂️ Fork: Colaboração Externa
Muito comum em Open Source. * Você cria uma cópia do projeto de outra pessoa na sua conta. * Faz as mudanças e envia um PR de volta para o autor original.
🐙 GitHub: Recursos Sociais
- Stars: Curtir um projeto.
- Watch: Receber notificações de mudanças.
- Profile: Seu currículo visual como dev.
🛑 Cuidados com a Segurança
- NUNCA envie senhas (
.env) para o GitHub. - Use Chaves SSH para conexão segura sem senha.
- Ative o Double Factor Authentication (2FA).
⚠️ Lidando com Conflitos (Remoto)
Se você e um colega mudam a mesma linha:
1. O push será rejeitado.
2. Você deve fazer git pull.
3. Resolver o conflito localmente.
4. Fazer novo add/commit/push.
📊 Insights do GitHub
- Network Graph: Visualizar as branches.
- Contributors: Quem mais trabalhou no projeto?
- Dependency Graph: Quais bibliotecas seu código usa?
🏆 Checklist Pro do Dia
- Repositório remoto configurado.
-
git pushrealizado com sucesso. - Entende o papel de uma Branch de Feature.
- Sabe abrir um Pull Request descritivo.
📝 Prática de Hoje
- Criar um Repo Público no GitHub.
- Conectar seu projeto local e fazer Push.
- Editar online, fazer Pull local.
- Simular um PR com um colega.
🏁 Dúvidas?
O código agora é global! 🌎🚀
Aula 06: Bancos de Dados Relacionais 💾
🎯 Nossa Missão
- Entender o modelo relacional.
- Dominar a linguagem SQL básica.
- Conhecer os principais SGBDs (Postgres, MySQL).
- Usar ferramentas visuais (DBeaver).
🤔 O que é um Banco de Dados?
É um sistema organizado para armazenar, gerenciar e recuperar informações. * Persistent: Os dados ficam lá mesmo se desligar. * Seguro: Controle de quem pode ver ou mudar. * Escalável: Suporta de 10 a milhões de linhas.
🧩 O Modelo Relacional
Imagine uma coleção de planilhas Excel que se conversam. * Tabelas: Categorias de dados (ex: Usuarios). * Colunas: Atributos (ex: Nome, Email). * Linhas: Registros individuais (ex: O usuário João).
🏗️ Conceitos: Chaves
O segredo da organização. * Primary Key (PK): O RG da linha. Único e obrigatório. * Foreign Key (FK): O link para outra tabela. Cria a relação.
🗺️ Exemplo de Tabela
Tabela: Ferramentas | id (PK) | nome | categoria | | :--- | :--- | :--- | | 1 | VS Code | Editor | | 2 | Git | Versionador | | 3 | Postgres | Banco |
🗣️ SQL: Structured Query Language
A língua oficial dos bancos relacionais. * Não é uma linguagem de programação, é uma linguagem de consulta. * Padronizada, mas cada banco tem seu "sotaque".
🔍 SELECT: Buscando Dados
* O* (asterisco) busca todas as colunas.
* Sempre filtre o que você precisa para não pesar o banco!
🎯 WHERE: Filtrando Resultados
* Operadores:=, >, <, <>, LIKE, IN.
➕ INSERT: Inserindo Dados
* Lembre-se de respeitar os tipos de dados (Texto vs Número).🔄 UPDATE: Alterando Dados
* Atenção: Sempre use oWHERE ou você vai alterar a tabela inteira! 😱
❌ DELETE: Removendo Dados
* Atenção: SemWHERE, você apaga tudo! Cuidado redobrado.
🐘 PostgreSQL: O Elefante Poderoso
- Open Source e extremamente robusto.
- Foco em conformidade com padrões e integridade.
- Suporta tipos complexos (JSON, Geometria).
- Queridinho das grandes empresas.
🐬 MySQL: A Rapidez da Web
- Muito popular em sites e blogs (WordPress).
- Simples de usar e configurar.
- Atualmente pertence à Oracle, mas tem o fork livre MariaDB.
🦫 DBeaver: A Interface Universal
Por que usar um GUI Client? * Visualizar tabelas como se fossem planilhas. * Autocompletar comandos SQL. * Gerar diagramas (DER) automaticamente. * Exportar dados para Excel/CSV facilmente.
📐 Modelagem: Normalização
Organizar para não repetir.
* Evite salvar o nome do país em cada usuário.
* Crie uma tabela Paises e use uma ID (FK).
* Isso economiza espaço e evita erros de digitação.
📉 Índices: Velocidade de Busca
- Como o índice de um livro.
- Acelera muito a busca em tabelas com milhões de linhas.
- Custo: Deixa a inserção um pouco mais lenta.
🛡️ Transações: Tudo ou Nada (ACID)
Imagine uma transferência bancária: 1. Tira dinheiro da conta A. 2. Coloca dinheiro na conta B. * Se o passo 2 falhar, o passo 1 deve ser desfeito automaticamente.
🏆 Checklist de Banco Pro
- Entende a diferença entre PK e FK.
- Consegue fazer um SELECT com filtro.
- Instalou e conectou o DBeaver.
- Sabe que rodar DELETE sem WHERE é perigoso.
📝 Prática de Hoje
- Conectar ao banco via DBeaver.
- Criar uma tabela
Ferramentas. - Inserir 3 linhas e fazer um SELECT filtrado.
🏁 Dúvidas?
O banco de dados é o coração da aplicação! ❤️🚀
Aula 07: NoSQL e Cache ⚡
🎯 Nossa Missão
- Entender quando o SQL não é suficiente.
- Conhecer o modelo de Documentos (MongoDB).
- Dominar o conceito de Cache (Redis).
- Escalabilidade Horizontal: Pensando grande.
🦖 O limite do Relacional
Bancos SQL são incríveis, mas: * Esquema rígido (alterar tabela é lento). * Dificuldade em escalar para bilhões de linhas. * Lentidão em requisições repetitivas. * O NoSQL resolve esses gargalos.
🧠 O que é NoSQL?
- Not Only SQL.
- Não usa obrigatoriamente tabelas e colunas.
- Foco em performance e flexibilidade.
- Padrão para Big Data e Redes Sociais.
📂 Tipos de NoSQL
- Documentos: MongoDB (tipo JSON).
- Chave-Valor: Redis (ultra rápido).
- Grafos: Neo4j (relacionamentos complexos).
- Colunares: Cassandra (dados massivos).
🍃 MongoDB: O Rei dos Documentos
Em vez de Linhas, usamos Documentos. Em vez de Tabelas, usamos Collections.
📐 Por que usar Documentos?
- Flexibilidade: Um documento pode ser diferente do outro.
- Agilidade: Ótimo para MVPs e dados desestruturados.
- Hierarquia: Você pode anular objetos dentro de objetos.
⚡ Redis: Velocidade Extrema
- In-Memory: Os dados ficam na RAM, não no HD.
- Latência: Respostas em milissegundos.
- Estrutura: Chave-Valor simples.
🧊 O Conceito de Cache
mermaid
graph TD
User[Usuário] --> App[Aplicação]
App -- 1. Tem no Cache? --> Redis{Redis}
Redis -- Sim --> User
Redis -- Não --> DB[(Banco Postgres)]
DB --> App
App -- 2. Salva no Cache --> Redis
🕑 Expiração de Dados (TTL)
No cache, os dados não vivem para sempre.
* SET token "abc" EX 3600 (Valido por 1 hora).
* Evita que o cache fique lotado de lixo antigo.
* Ideal para sessões de login e tokens.
🪜 Escalabilidade: Vertical vs Horizontal
mermaid
graph TD
V[Vertical: Aumentar o Servidor]
H[Horizontal: Adicionar + Servidores]
V --- Cost[Custo Exponencial]
H --- Scale[Escala Infinita]
* NoSQL é mestre na escalabilidade Horizontal.
🌐 Onde usar cada um?
- E-commerce (Carrinho): Redis.
- Rede Social (Posts/Feeds): MongoDB.
- Financeiro (Transações): Postgres (SQL).
- Logs: ElasticSearch.
🔄 Consistência Eventual
O "problema" do NoSQL. * Em sistemas gigantes, pode levar milissegundos para o dado sincronizar em todos os servidores. * Exemplo: O número de likes de uma foto pode variar um pouco entre usuários por instantes.
🪟 Ferramentas Visuais
- MongoDB Compass: Explorar documentos visualmente.
- Beekeeper Studio: Client moderno para NoSQL e SQL.
- Redis Insight: Monitorar o uso de memória.
🚀 Performance na Prática
Imagine buscar o perfil de um usuário famoso: * No SQL: 50ms (muitos joins). * No NoSQL: 10ms (objeto pronto). * No Cache: 1ms (direto da RAM).
📦 Modelagem no MongoDB
"Embed" (Embutir) vs "Link" (Referenciar). * Se os dados mudam pouco, salve dentro do documento. * Se os dados são gigantes, use a ID (referência).
🛡️ Quando NÃO usar NoSQL?
- Quando a integridade dos dados e relações complexas são críticas.
- Sistemas contábeis e ERPs tradicionais.
- Quando você não tem volume de dados que justifique a troca.
📈 O Futuro: Multi-Model
Bancos modernos (como Postgres) já suportam campos JSON. * A linha entre SQL e NoSQL está ficando cada vez mais tênue!
🏆 Checklist NoSQL Pro
- Entende o formato JSON/Documento.
- Sabe explicar para que serve o Cache.
- Reconhece que Redis vive na Memória RAM.
- Diferencia escala vertical de horizontal.
📝 Prática de Hoje
- Criar um documento JSON de perfil.
- Instalar o MongoDB localmente.
- Simular um cenário de cache para uma notícia famosa.
🏁 Dúvidas?
Otimize seu app para milhões de usuários! 🚀⚡
Aula 08: Frameworks de Teste e Qualidade 🧪
🎯 Nossa Missão
- Entender a importância dos testes automatizados.
- Conhecer a Pirâmide de Testes.
- Descobrir frameworks (Jest, PyTest, JUnit).
- Introdução ao TDD (Test Driven Development).
😱 O Medo de Mudar o Código
- "Se eu mexer aqui, o que será que quebra?"
- "No meu PC funcionava, no servidor parou."
- "O bug que eu corrigi ontem voltou hoje."
- Testes são a sua rede de segurança!
🏗️ A Pirâmide de Testes
mermaid
graph TD
U[Testes Unitários - MUITOS]
I[Integração - ALGUNS]
E[E2E / Interface - POUCOS]
U ---|Rápido/Barato| I
I ---|Lento/Caro| E
1. Testes Unitários 🧩
Testam a menor parte possível do código (funções isoladas). * Vantagem: Execução instantânea. * Foco: Lógica pura, cálculos, pequenas regras. * Ferramentas: Jest, PyTest.
2. Testes de Integração 🔗
Verificam se dois ou mais componentes funcionam bem juntos. * Ex: Aplicação + Banco de Dados. * Ex: Serviço A + API externa. * Buscam erros na comunicação entre partes.
3. Testes End-to-End (E2E) 🌐
Simulam o usuário real usando o sistema completo. * Abre o navegador, clica em botões, preenche forms. * Custo: São lentos e "frágeis" (quebram se o layout muda). * Ferramentas: Cypress, Playwright, Selenium.
🔴 Ciclo TDD (Red, Green, Refactor)
Uma nova forma de pensar o desenvolvimento: 1. Red: Escreva um teste que falha (o código não existe). 2. Green: Escreva o mínimo de código para o teste passar. 3. Refactor: Melhore o código sem quebrar o teste.
🤡 O que são Mocks?
Simulando o mundo real. * Você não quer enviar um e-mail de verdade toda vez que rodar o teste. * Você cria um "objeto dublê" que finge ser o serviço de e-mail. * Isso isola o teste e o deixa muito mais rápido.
📦 Framework: Jest (JavaScript)
- Simples:
expect(soma(2,2)).toBe(4). - Extremamente rápido (paralelismo).
- Inclui ferramentas de Cobertura de Código.
🐍 Framework: PyTest (Python)
- Sintaxe limpa:
assert soma(2,2) == 4. - Poderoso sistema de Fixtures (preparação de dados).
- Ecossistema de plugins gigante.
☕ Framework: JUnit (Java)
- O avô dos frameworks modernos.
- Robusto e integrado nativamente com IDEs.
- Padrão absoluto no mundo corporativo Java.
📊 Cobertura de Código (Coverage)
"Quanto do meu projeto está sendo testado?" * Gera relatórios mostrando quais linhas foram executadas pelos testes. * Meta: 80% a 90% (100% é quase impossível e caro).
💎 Qualidade de Código (Linting)
Diferente de testes, o Linter foca na "estética" e "segurança estática". * ESLint (JS), Flake8 (Python). * Evita variáveis não usadas. * Garante estilos uniformes.
🔄 Testes na Pipeline (CI)
Nunca confie apenas no teste local!
* A pipeline roda os testes a cada git push.
* Impede que código "quebrado" chegue na produção.
* Feedback automático para o time.
🧪 Anatomia de um Teste
test('deve somar dois números corretamente', () => {
// 1. Arrange (Preparar)
const a = 10;
const b = 5;
// 2. Act (Agir)
const resultado = soma(a, b);
// 3. Assert (Verificar)
expect(resultado).toBe(15);
});
🏆 Checklist de Qualidade Pro
- Entende os níveis da pirâmide.
- Sabe o que é um Mock e por que usar.
- Instalou um framework de teste no seu projeto.
- Entende o ciclo básico do TDD.
📝 Prática de Hoje
- Criar uma função simples de cálculo.
- Escrever um teste unitário para ela usando Jest ou PyTest.
- Ver o teste passar e o teste falhar (mudando a expectativa).
🏁 Dúvidas?
Dormir tranquilo = Ter uma boa suite de testes! 🚀💤
Aula 09: Ferramentas de API (Postman / Insomnia) 📡
🎯 Nossa Missão
- Entender o que é uma API e como ela se comunica.
- Dominar os métodos HTTP (GET, POST, etc.).
- Decifrar os códigos de status (200, 404, 500).
- Usar Clients HTTP como Postman e Insomnia.
🔌 O que é uma API?
Application Programming Interface. * O "garçom" que leva seu pedido ao servidor e traz a resposta. * Permite que sistemas diferentes falem a mesma língua. * Exemplo: Seu app de clima buscando dados do satélite.
🏗️ Anatomia de uma Requisição
mermaid
graph LR
U[URL / EndPoint] --- M[Metodo HTTP]
M --- H[Headers]
H --- B[Body / JSON]
🛤️ Endpoints: O Caminho
https://api.loja.com/v1/produtoshttps://api.loja.com/v1/usuarios/123- É o endereço específico onde o recurso mora.
🛠️ Métodos HTTP: Os Verbos
O que você quer fazer com o dado? * GET: Buscar informações. * POST: Criar algo novo. * PUT: Atualizar algo existente (completo). * PATCH: Atualizar algo existente (parcial). * DELETE: Remover algo.
📦 O Request Body (JSON)
Em métodos como POST e PUT, enviamos dados.
* JSON é o padrão de ouro da web moderna.🆔 Headers: Informações Extras
Content-Type: application/jsonAuthorization: Bearer <TOKEN>- Dizem ao servidor quem você é e o que está enviando.
🚦 Status Codes: A Resposta
Como saber se deu certo? * 2xx (Sucesso): 200 OK, 201 Created. * 3xx (Redirecionamento): 301 Moved. * 4xx (Erro do Cliente): 404 Not Found, 401 Unauthorized. * 5xx (Erro do Servidor): 500 Internal Error.
🟠 Postman / 🟣 Insomnia
Clients HTTP que facilitam a vida. * Não precisa de frontend para testar o backend. * Organize requisições em Collections. * Automatize testes de resposta. * Gere documentação automática.
🌍 O Fluxo da Requisição
```mermaid sequenceDiagram participant C as Cliente (Postman) participant S as Servidor (API) participant B as Banco de Dados
C->>S: GET /produtos (Request)
S->>B: SELECT * FROM produtos
B->>S: Dados dos produtos
S->>C: 200 OK + JSON (Response)
```
🛡️ Autenticação em APIs
Sua API não pode ser aberta para qualquer um! * API Keys: Chaves simples. * OAuth2: Padrão de apps grandes (Google/GitHub). * JWT (JSON Web Token): O token que viaja no Header.
📂 Organização em Coleções
- Agrupe por projeto ou por funcionalidade.
- Use Variáveis de Ambiente (
{{ url }}). - Mude de "Localhost" para "Produção" com um clique!
📝 Documentação: Swagger e Open API
- Seu colega de frontend precisa saber como usar sua API.
- O Swagger gera uma página interativa para testes.
- O Postman também permite publicar documentação.
🔍 Query Parameters
Filtrando o que você busca via URL.
* api.com/v1/produtos?categoria=livros&ordem=preco
* Tudo após o ? são parâmetros de consulta.
🗃️ Path Parameters
Identificando um recurso específico.
* api.com/v1/usuarios/42
* O 42 é o ID dinâmico do usuário buscado.
🦁 Scripts e Testes no Postman
Você pode validar se o retorno foi correto automaticamente!
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Resposta deve ser JSON", function () {
pm.response.to.be.json;
});
📉 Mock Servers: Agilidade
- O backend ainda não está pronto?
- O Postman cria um servidor "mentira" (Mock).
- O frontend já pode começar a trabalhar com dados fakes!
🏆 Checklist de API Pro
- Conhece os significados de 200, 201, 400, 404 e 500.
- Sabe a diferença entre GET, POST, PUT e DELETE.
- Criou sua primeira Collection no Postman/Insomnia.
- Entende o papel do JSON no Request Body.
📝 Prática de Hoje
- Abrir o Postman ou Insomnia.
- Testar o endpoint da PokeAPI ou JSONPlaceholder.
- Analisar o JSON retornado e o Status Code.
🏁 Dúvidas?
Conectar sistemas é o que move a internet! 🚀📡
Aula 10: Qualidade de Código (Linters e Formatters) ✨
🎯 Nossa Missão
- Entender a análise estática de código.
- Dominar o ESLint (Linter).
- Dominar o Prettier (Formatter).
- Padronizar o ambiente de desenvolvimento do time.
🤔 Por que a qualidade importa?
- Legibilidade: Código é mais lido do que escrito.
- Manutenibilidade: Mais fácil de consertar no futuro.
- Conformidade: Todo o time escreve do mesmo jeito.
- Menos Bugs: Erros bobos são pegos na hora.
📖 O que é Análise Estática?
Analisar o código sem executá-lo. * Procura por padrões perigosos. * Verifica se regras de estilo estão sendo seguidas. * Informa o desenvolvedor instantaneamente no editor.
🛑 Erros Comuns que Linters Pegam
- Variáveis declaradas mas nunca usadas.
- Chamar funções que não foram definidas.
- Uso de
varem vez deconst/letno JS. - Falta de ponto e vírgula (onde é obrigatório).
🕵️♂️ ESLint: O Detetive do Código
- O Linter mais popular do mundo JavaScript.
- Extremamente configurável.
- Possui conjuntos de regras prontos (ex: Airbnb, Google).
🎨 Prettier: O Artista do Código
- A única preocupação dele é o estilo visual.
- Onde colocar o espaço? Onde quebrar a linha?
- O Prettier é "opinativo": ele decide o melhor visual para você não perder tempo discutindo.
⚖️ Linter vs Formatter
mermaid
graph LR
L[Linter - ESLint] --- Rules1[Qualidade/Logica]
F[Formatter - Prettier] --- Rules2[Estilo/Aparencia]
L --- Ex1(Variaveis nao usadas)
F --- Ex2(Uso de Aspas Simples)
⚙️ Configurando o ESLint
Arquivo .eslintrc.json
💎 Configurando o Prettier
Arquivo .prettierrc
⌨️ Integração com VS Code
- Instala as extensões oficiais.
- Ativa o "Format on Save".
- Mágica: Você escreve o código bagunçado, aperta
Ctrl + Se ele se organiza sozinho!
🏗️ Extensões de Regras
Muitos frameworks trazem suas próprias regras de lint:
* eslint-plugin-react
* eslint-plugin-vue
* eslint-plugin-security
🛠️ Comando fix
O ESLint pode consertar os erros para você!
* Resolve automaticamente problemas de indentação e erros simples de sintaxe.🤫 Por que não usar console.log em produção?
- Exibe dados sensíveis no navegador.
- Diminui a performance do app.
- O Linter nos ajuda a lembrar de remover logs de teste.
🧠 Dívida Técnica
Cada regra ignorada hoje é um problema amanhã. * O Linter ajuda a manter a dívida sob controle. * Evita o "Código Espaguete".
🤝 EditorConfig: O Irmão do Meio
O arquivo .editorconfig ajuda a manter a indentação correta mesmo em editores diferentes.
* indent_style = space
* indent_size = 2
🛡️ Linting no CI (GitHub Actions)
- A build só passa se o Linter der "OK".
- Ninguém consegue enviar código "sujo" para a branch principal.
🏆 Checklist de Qualidade Pro
- ESLint e Prettier configurados no projeto.
- "Format on Save" ativado no VS Code.
- Entende a diferença entre aviso e erro.
- Arquivos de configuração versionados no Git.
📝 Prática de Hoje
- Instalar o ESLint e Prettier via npm.
- Criar os arquivos de configuração.
- Bagunçar um código e deixar o editor consertar sozinho.
🏁 Dúvidas?
Código limpo é código profissional! 🚀✨
Aula 11: CI/CD Moderno (GitHub Actions) 🚀
🎯 Nossa Missão
- Entender o que é CI e CD.
- Conhecer o GitHub Actions.
- Aprender a sintaxe YAML de workflows.
- Automatizar o ciclo de vida do código.
🏗️ O que é CI (Continuous Integration)?
Integrar o código com frequência.
* Testes automáticos rodam a cada push.
* Erros de integração são pegos cedo.
* Garante que a main nunca quebre.
🚚 O que é CD (Continuous Delivery/Deployment)?
Entregar o código pronto para o usuário. * Delivery: Build pronto para ser lançado (clique manual). * Deployment: Lançamento 100% automático em produção.
♾️ O Infinito do DevOps
mermaid
graph TD
Plan --> Code --> Build --> Test
Test --> Release --> Deploy --> Operate
Operate --> Monitor --> Plan
🐙 Por que GitHub Actions?
- Integrado ao repositório.
- Nativamente grátis para repos públicos.
- Ecossistema gigante de ações prontas.
- Suporta Linux, Mac e Windows.
🗂️ A Anatomia do GitHub Actions
- Workflow: O processo completo (arquivo
.yml). - Event (Trigger): O que dispara o processo (push, pr).
- Job: Um conjunto de tarefas em um servidor.
- Step: Uma tarefa individual (comando ou script).
- Runner: O servidor virtual que executa tudo.
📄 O Formato YAML
Yet Another Markup Language. * Baseado em indentação (espaços). * Muito fácil de ler para humanos. * Padrão para ferramentas de DevOps.
🎯 Gatilhos (Triggers)
Quando a mágica acontece?
🏗️ Definindo o Ambiente (Runner)
Onde seu código vai rodar?
* O GitHub cria uma máquina virtual limpa para você.🔨 Passos (Steps)
A lista de tarefas.
*uses: Usa uma ação pronta da comunidade.
* run: Roda um comando de terminal.
🤫 Gerenciando Segredos (Secrets)
NUNCA escreva senhas no arquivo YAML.
* Use as Settings > Secrets do GitHub.
* Acesse via: ${{ secrets.MINHA_SENHA }}.
* O log do GitHub esconde o valor automaticamente!
📉 Visualizando a Pipeline
```mermaid sequenceDiagram participant D as Dev participant G as GitHub participant R as Runner (Ubuntu)
D->>G: git push
G->>G: Detecta Push na main
G->>R: Inicia Workflow
R->>R: Checkout Código
R->>R: Instala Dependências
R->>R: Roda Testes
R->>G: Relata Sucesso (CHECK VERDE)
```
🧩 Actions Marketplace
Não reinvente a roda! Existem ações prontas para: * Enviar mensagem no Slack. * Fazer deploy na Amazon (AWS). * Escritar código no Docker Hub. * Login no Firebase.
🔄 Cache em Pipelines
Economizando tempo (e dinheiro).
* Você não precisa baixar as bibliotecas (node_modules) do zero a cada vez.
* O Actions pode guardar o cache e acelerar a build em 50%!
🛡️ Proteção de Branch
Combine Actions com regras de repositório.
* Impeça o merge se a pipeline falhar.
* Exija pelo menos 1 aprovação de colega (Code Review).
📉 Artefatos
Onde fica o arquivo final?
* Você pode salvar o resultado da build (ex: um .zip ou um .apk) como artefato para download no final do workflow.
💰 Custos e Limites
- Gratuito para Open Source.
- Minutos limitados para repos privados (2000 min/mês no plano free).
🏆 Checklist de CI/CD Pro
- Entende a diferença entre Workflow, Job e Step.
- Sabe criar um arquivo
.ymlbásico. - Entende o conceito de Secrets.
- Consegue visualizar o log de erro no GitHub.
📝 Prática de Hoje
- Criar a pasta
.github/workflows. - Criar um workflow de "Hello World".
- Ver ele rodar na aba "Actions" após o push.
🏁 Dúvidas?
Automação é o que separa amadores de profissionais! 🚀🚀
Aula 12: Automação e IaC (Ansible e Terraform) ⚙️
🎯 Nossa Missão
- Entender o conceito de Infraestrutura como Código (IaC).
- Provisionamento vs Configuração.
- Conhecer o Terraform (Estatura).
- Conhecer o Ansible (Recheio).
😫 O Mundo Antes do IaC
- Configuração manual de servidores via SSH.
- "Qual era a senha mesmo?"
- "Por que o servidor 1 está diferente do servidor 2?"
- Impossível de escalar ou repetir com precisão.
🧠 O que é IaC?
Infraestrutura tratada como software. * Versionada no Git. * Testável. * Repetível (Idempotência). * Documentação viva do ambiente.
🏗️ Provisionar vs Configurar
Uma analogia com culinária: * Provisionar (Terraform): É comprar a cozinha, o fogão e as panelas. * Configurar (Ansible): É ligar o fogo, colocar os ingredientes e cozinhar.
🌍 Terraform: O Orquestrador de Nuvem
- Focado em criar os recursos (VMs, Redes, Bancos).
- Declarativo: Você diz "O que" quer, não "Como" fazer.
- Multicloud: AWS, Azure, Google Cloud, DigitalOcean.
📄 Sintaxe HCL (Terraform)
* Fácil de ler e gerenciar.🔄 O Ciclo do Terraform
- Write: Escreve o arquivo
.tf. - Plan: Vê o que vai mudar antes de aplicar.
- Apply: Executa as mudanças na nuvem.
- Destroy: Remove tudo de uma vez.
🍳 Ansible: Automação Simples
- Agentless: Não precisa instalar nada no servidor alvo (usa SSH).
- Focado em instalar apps e configurar arquivos.
- Usa Playbooks em YAML.
📜 Exemplo de Playbook (Ansible)
- name: Instalar Nginx
hosts: servidores_web
tasks:
- name: Garantir que Nginx está instalado
apt:
name: nginx
state: present
🔄 Idempotência: A Regra de Ouro
"Se eu rodar 10 vezes, o resultado final é o mesmo." * Se o software já está instalado, o Ansible não faz nada. * Garante consistência e evita duplicidade de erros.
🏗️ Estrutura de Infraestrutura Moderna
mermaid
graph TD
Code[Codigo no Git] --> Pipeline[GitHub Actions]
Pipeline --> TF[Terraform: Cria VM]
TF --> ANS[Ansible: Instala App]
ANS --> App[Servidor pronto para uso]
🛡️ Benefícios da Automação
- Velocidade: Criar 100 servidores em minutos.
- Consistência: Todos os ambientes (Dev/Prod) são idênticos.
- Disaster Recovery: Recriar tudo do zero após um erro grave.
🐚 O Papel do YAML e SSH
- YAML: A língua franca da configuração.
- SSH: A porta de entrada segura para a automação.
📈 Automação além da Infra
- Backup de bancos de dados.
- Limpeza de logs.
- Atualização de patches de segurança de uma só vez.
💰 Cloud Computing e IaC
- Pay-as-you-go: Pague só pelo que usa.
- O IaC ajuda a desligar recursos que não estão sendo usados e economizar dinheiro!
🕵️♂️ Verificação de Conformidade
- Ferramentas que verificam se a infraestrutura real é igual ao que está no código.
- Evita o "Desvio de Configuração" (Config Drift).
🏆 Checklist de Automação Pro
- Entende a diferença entre Terraform e Ansible.
- Sabe que IaC deve estar no Git.
- Entende o conceito de Idempotência.
- Conhece o básico da sintaxe YAML.
📝 Prática de Hoje
- Escrever um Playbook Ansible fictício.
- Analisar um arquivo de configuração Terraform.
- Desenhar o fluxo de criação de um servidor.
🏁 Dúvidas?
A infraestrutura agora é código! 🚀⚙️
Aula 13: Contêineres com Docker 📦
🎯 Nossa Missão
- Resolver o problema "na minha máquina funciona".
- Entender a tecnologia de contêineres.
- Dominar Dockerfiles e Imagens.
- Orquestração local com Docker Compose.
😫 O Conflito de Versões
- Projeto A precisa de Node 14.
- Projeto B precisa de Node 18.
- Seu computador vira uma bagunça de versões conflitantes.
- O Docker isola tudo isso.
🐳 O que é o Docker?
Não é uma máquina virtual! * Contêiner: Um processo isolado que compartilha o kernel do S.O. * Imagem: O "molde" ou fotografia do sistema pronto. * Docker Hub: Onde baixamos as imagens prontas.
⚖️ VM vs Contêiner
mermaid
graph TD
subgraph VM [Maquina Virtual]
OS1[OS Hospedeiro] --- Hyp[Hypervisor]
Hyp --- GOS[Guest OS]
GOS --- App1[App + Libs]
end
subgraph CT [Conteiner]
OS2[OS Hospedeiro] --- DE[Docker Engine]
DE --- App2[App + Libs]
end
* Contêineres são muito mais leves e rápidos.
📜 O Dockerfile: A Receita
# 1. Base (Qual S.O.?)
FROM node:20-alpine
# 2. Pasta de trabalho
WORKDIR /app
# 3. Copiar arquivos
COPY . .
# 4. Instalar dependencias
RUN npm install
# 5. Comando de inicio
CMD ["npm", "start"]
🛠️ Comandos Essenciais (Build)
docker build -t meu-app .: Criar a imagem.docker images: Listar imagens no PC.docker rmi <id>: Deletar imagem.
🚀 Comandos Essenciais (Run)
docker run -p 8080:80 meu-app: Rodar o app.docker ps: Ver o que está rodando.docker stop <id>: Parar o contêiner.docker exec -it <id> sh: Entrar no contêiner.
🔗 Mapeamento de Portas
8080:80
* 8080: Porta do seu computador (Host).
* 80: Porta dentro do Docker (Container).
* Permite acessar o serviço via browser no seu PC.
📂 Volumes: Persistência de Dados
Contêineres são efêmeros (se deletar, os dados somem). * Volumes conectam uma pasta do seu HD à pasta do Docker. * Os dados sobrevivem mesmo se o contêiner for destruído.
🗺️ Docker Compose: O Maestro Local
E se eu precisar de uma API + Banco de Dados?
* Arquivo docker-compose.yml.
* Define todos os serviços e suas redes.
* Comando: docker-compose up.
🏗️ Exemplo de Docker Compose
services:
web:
build: .
ports: ["3000:3000"]
db:
image: postgres:alpine
environment:
POSTGRES_PASSWORD: root
🌐 Redes no Docker (Networks)
- Contêineres podem falar uns com os outros pelo nome.
- Isolamento de tráfego para maior segurança.
🦁 Otimizando Imagens
- Use imagens
alpine(ultra leves). - Evite instalar ferramentas desnecessárias na imagem.
- Use
.dockerignorepara não copiar onode_moduleslocal.
🛡️ Segurança no Docker
- Não rode o app como usuário
rootdentro do Docker. - Mantenha suas imagens base sempre atualizadas.
- Use ferramentas de scan de vulnerabilidades.
📉 Ciclo de Desenvolvimento Docker
mermaid
graph LR
C[Código] --> B[Build Image]
B --> R[Run Container]
R --> T[Test]
T --> P[Push to Hub]
🌟 O Futuro: DevContainers
- Use o Docker para configurar seu ambiente de VS Code.
- Todo o time usa exatamente as mesmas extensões e ferramentas.
🏆 Checklist de Docker Pro
- Entende a diferença entre Imagem e Contêiner.
- Sabe escrever um Dockerfile básico.
- Consegue rodar um banco de dados via Docker.
- Entende para que serve o Docker Compose.
📝 Prática de Hoje
- Criar um Dockerfile para um site estático.
- Fazer o Build e conferir o tamanho da imagem.
- Rodar o contêiner e acessar via navegador.
🏁 Dúvidas?
Contêineres mudaram o mundo do software! 🚀📦
Aula 14: Orquestração com Kubernetes e Runners ☸️
🎯 Nossa Missão
- Entender a necessidade da orquestração.
- Conhecer a arquitetura do Kubernetes (K8s).
- Descobrir o que são Pods, Nodes e Clusters.
- Compreender o papel dos Runners em CI/CD.
🤔 Por que Kubernetes?
O Docker é ótimo para 1 servidor. E para 1000? * Quem reinicia o contêiner se ele cair? * Como dividir o tráfego entre 10 cópias do app? * Como atualizar o sistema sem tirar ninguém do ar? * O Kubernetes é o maestro dessa orquestra.
🏗️ Arquitetura do Cluster
mermaid
graph TD
CP[Control Plane - Cerebro] --> N1[Worker Node 1]
CP --> N2[Worker Node 2]
N1 --> P1[Pod]
N1 --> P2[Pod]
N2 --> P3[Pod]
🧠 Control Plane vs Worker Nodes
- Control Plane: Toma decisões (agendamento, detecção de falhas).
- Worker Nodes: Os servidores que carregam o peso (onde o app roda).
📦 O que é um Pod?
A menor peça do quebra-cabeça. * Um Pod pode ter um ou mais contêineres colados. * Eles compartilham o mesmo IP e o mesmo volume. * O Kubernetes gerencia Pods, não contêineres isolados.
🛠️ Objetos Essenciais
- Deployment: Define como seu app deve rodar (quantas cópias).
- Service: Cria um IP fixo para acessar seus Pods.
- Ingress: A porta de entrada do cluster (o que o mundo vê).
🩹 Auto-Cura (Self-Healing)
- Se um contêiner morre, o K8s reinicia.
- Se um servidor morre, o K8s move os Pods para outro servidor disponível.
- Seu sistema fica sempre online (High Availability).
🪜 Auto-Escala (Scaling)
- HPA: Aumenta o número de Pods se o tráfego subir.
- VPA: Dá mais CPU/RAM se o processo estiver pesado.
- Cluster Autoscaler: Compra mais servidores reais na Amazon/Google se precisar de mais espaço.
🚀 Deployment Estratégico
Como atualizar o código sem erros? * Rolling Update: Troca um por um, sem downtime. * Canary Deployment: Libera a versão nova apenas para 5% dos usuários primeiro. * Blue/Green: Sobe o novo app ao lado do antigo e vira a chave.
📄 Manifestos YAML
Tudo no K8s é declarado em arquivos.
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app
spec:
replicas: 3
template:
spec:
containers:
- name: web
image: meu-app:v2
🐚 kubectl: O Controle Remoto
A ferramenta de linha de comando para falar com o K8s.
* kubectl get pods: Ver quem está vivo.
* kubectl logs <pod>: Ver os erros.
* kubectl apply -f arquivo.yml: Enviar ordens para o cluster.
🏃♂️ O que são Runners?
Conectando a Orquestração com o CI/CD. * Runners são as máquinas que executam seus testes. * Eles podem ser contêineres rodando dentro do seu próprio Kubernetes! * Self-hosted Runners: Mais segurança e controle de custos.
🏢 K8s Gerenciado (Cloud)
Instalar o K8s do zero é muito difícil! * AWS EKS * Google GKE * Azure AKS * A nuvem cuida do Control Plane pra você.
🌐 Networking e DNS
No K8s, um serviço pode achar outro apenas pelo nome:
* api-service consegue falar com db-service sem saber o IP real!
🛡️ RBAC: Segurança no Cluster
- Quem pode criar Pods?
- Quem pode ver os logs?
- O Kubernetes permite controle total de permissões por usuário.
🏆 Checklist de Orquestração Pro
- Entende o papel do Control Plane.
- Sabe que um Pod é a unidade mínima.
- Compreende o conceito de Réplicas e Auto-Cura.
- Sabe para que serve o
kubectl.
📝 Prática de Hoje
- Explorar a arquitetura visual de um cluster K8s.
- Analisar um manifesto YAML de Deployment.
- Diferenciar o papel do Runner no GitHub Actions.
🏁 Dúvidas?
Bem-vindo ao mundo da alta disponibilidade! ☸️🚀
Aula 15: Comunicação e Colaboração em Equipe 💬
🎯 Nossa Missão
- Desenvolver Soft Skills essenciais.
- Dominar a comunicação assíncrona.
- Aprender a etiqueta no Slack e Teams.
- Entender a cultura de documentação.
🗣️ Por que falar é tão importante quanto codar?
- Software é feito por pessoas para pessoas.
- Falhas de comunicação custam caro (retrabalho).
- O bom desenvolvedor sabe explicar o que fez.
🔄 Síncrono vs Assíncrono
- Síncrono: Reuniões, ligações, conversa no café. (Resposta na hora).
- Assíncrono: Slack, E-mail, PRs, Docs. (Resposta quando possível).
- Dica: Proteja seu tempo de foco usando o assíncrono!
🟣 Slack / Teams: O Hub do Time
Não é apenas um chat. É onde tudo acontece. * Canais por assunto. * Integração com ferramentas. * Threads para organização.
📜 Regras de Etiqueta (Slack)
- Vá direto ao ponto: Evite apenas "Oi".
- Use Threads: Não polua o canal principal.
- Status: Mantenha atualizado (Foco, Almoço, Férias).
- Reações: Use emojis para confirmar leitura.
🤖 ChatOps: Automação no Chat
Lidando com o sistema via texto.
* O bot processa a ordem e avisa a todos. * Transparência total no que está acontecendo.🤝 Pair Programming (Programação em Par)
Dois desenvolvedores, um código. * Piloto: Escreve o código. * Co-piloto: Revisa, pensa na lógica, busca documentação. * Melhor forma de compartilhar conhecimento sênior/júnior.
⏰ Reuniões Eficazes: Stand-up
A reunião diária de 15 minutos. * O que eu fiz ontem? * O que farei hoje? * Tenho algum impedimento? * Foco total em sincronizar o time.
📖 Cultura de Documentação
"Se não está escrito, não existe." * README: O cartão de visitas do projeto. * Wiki / Notion: Regras de negócio e guias. * Changelog: O que mudou em cada versão?
🔍 Feedback Construtivo
Como falar do erro do colega? * Foque no código, não na pessoa. * Sugira soluções em vez de apenas criticar. * Reconheça o que está bom também!
🏠 Trabalho Remoto: Desafios
- Isolamento social.
- Dificuldade em separar casa de trabalho.
- Solução: Comunicação excessiva e transparente (Overcommunication).
📉 Gerenciamento de Conflitos
- Conflitos técnicos são normais (e bons!).
- Busque consenso ouvindo todos os lados.
- Se não houver acordo, o time concorda em seguir um caminho e testar.
🛡️ Segurança Psicológica
Um time onde as pessoas não têm medo de: * Perguntar o que parece "óbvio". * Admitir erros. * Sugerir ideias malucas. * Times seguros performam 2x mais.
📊 Ferramentas de Documentação Modernas
- Notion: O canivete suíço.
- Confluence: O padrão para grandes empresas.
- Obsidian / Logseq: Gestão de conhecimento pessoal.
🏆 Checklist de Colaboração Pro
- Sabe usar Threads no Slack.
- Sabe explicar suas tarefas na Stand-up.
- Escreve READMEs claros.
- Pratica a empatia no Code Review.
📝 Prática de Hoje
- Simular uma Stand-up com seu grupo.
- Redigir uma mensagem assíncrona de ajuda.
- Criticar um código fictício de forma construtiva.
🏁 Dúvidas?
O código é feito por humanos! 🤝🚀
Aula 16: Design, Prototipagem e Handoff 🎨
🎯 Nossa Missão
- Entender o papel do Design no desenvolvimento.
- Conhecer o Figma e suas ferramentas.
- Dominar o processo de Handoff (passagem de bastão).
- Aprender a inspecionar elementos para codar.
🧠 Por que desenvolvedores precisam entender design?
- Para evitar o "Efeito Telefone Sem Fio".
- Para saber o que é possível (ou não) implementar.
- Para garantir que o produto final seja fiel ao planejado.
- Designers e Devs devem ser melhores amigos!
🟦 O que é o Figma?
- Ferramenta de design baseada em navegador.
- Colaboração em tempo real (multi-player).
- Foco em UI (Interface) e UX (Experiência).
- Gratuito para estudantes!
🏗️ Conceitos: UI vs UX
mermaid
graph LR
UI[User Interface] --- A(Visual: Cores, Icones, Fontes)
UX[User Experience] --- B(Sensacao: Fluxo, Rapidez, Facilidade)
📐 Prototipagem: Dando Vida ao Desenho
- Conectar telas com cliques.
- Testar o fluxo do usuário sem escrever uma linha de código.
- Validar ideias com clientes rapidamente.
🤝 O Processo de Handoff
"A entrega do design para a engenharia." * O Designer termina o visual. * O Desenvolvedor recebe o acesso ao arquivo. * O arquivo deve conter as especificações técnicas.
🛠️ Figma Dev Mode
A visão "Matrix" do desenvolvedor. * Gera propriedades CSS automaticamente. * Mostra espaçamentos exatos (padding/margin). * Permite exportar ícones e imagens com um clique.
🎨 Cores e Tipografia
- Hexadecimal: O padrão das cores (#FF5500).
- Font-Family: Qual fonte usar?
- Font-Weight: Qual o peso (negrito/leve)?
📦 Componentes e Design Systems
Não desenhamos telas, desenhamos peças. * Atômico: Botões, Inputs, Ícones. * Moléculas: Barra de buscas, Cards. * Organismos: Header, Footer. * No código, isso vira Componentes Reutilizáveis.
📐 Inspecionando Espaçamentos
- Segure a tecla
Altpara ver a distância entre elementos. - Evite o "olhômetro". Use os números do design!
🖼️ Exportando Assets
- SVG: Para ícones e logos (vetorial, não perde qualidade).
- PNG/JPG: Para fotos pesadas.
- O Figma permite exportar em várias escalas (1x, 2x, 3x).
📱 Responsividade (Auto-Layout)
- Como o design se comporta em telas pequenas?
- O Auto-Layout do Figma simula o Flexbox do CSS.
- Entender isso facilita muito a vida do dev frontend.
🦁 Bibliotecas de UI Reais
Empresas têm seus próprios padrões: * Material Design (Google). * Human Interface Guidelines (Apple). * Fluent (Microsoft).
🛡️ Acessibilidade (a11y) no Design
- Contraste de cores (texto legível).
- Tamanho de clique adequado para dedos no mobile.
- O designer planeja, o dev implementa o código semântico.
🔄 Ferramentas de Handoff Alternativas
- Zeplin.
- InVision.
- (O Figma hoje domina o mercado quase sozinho).
🏆 Checklist de Design Pro
- Sabe navegar pelo arquivo Figma.
- Entende como usar o Dev Mode.
- Diferencia SVG de PNG.
- Consegue extrair cores e fontes sem ajuda.
📝 Prática de Hoje
- Acessar um projeto público no Figma.
- Inspecionar um botão e copiar seu CSS.
- Exportar um ícone em formato SVG.
🏁 Dúvidas?
O design é o mapa, você é o construtor! 🚀🎨
Configuração
Ambientes de Desenvolvimento 🛠️
Guias para configurar seu computador para o desenvolvimento mobile.
-
Android --- Instalação do Android Studio, SDK e emuladores.
-
iOS (Opcional/Referência) --- Configuração básica de Xcode e ferramentas Mac.
-
Ferramentas de Apoio --- Git, Terminais e Postman/Insomnia para testes de API.
Setup 01: Android Studio 🤖
O Android Studio é a IDE oficial para o desenvolvimento Android.
1. Requisitos de Sistema
- RAM: Mínimo 8GB (Sugerido 16GB+).
- Espaço: Mínimo 10GB para IDE + SDKs.
- Processador: Intel Core i5 ou equivalente.
2. Instalação
- Acesse o site oficial: developer.android.com/studio.
- Baixe a versão mais recente para o seu Sistema Operacional.
- Execute o instalador e escolha a opção "Standard" na configuração inicial.
3. Configurando o SDK
- Após a instalação, vá em Settings > Languages & Frameworks > Android SDK.
- Certifique-se de que a versão mais recente do Android (estável) esteja instalada.
- Na aba SDK Tools, instale o "Android Emulator" e o "Intel x86 Emulator Accelerator (HAXM)" se estiver no Windows com Intel.
4. Criando um Emulador (AVD)
- Abra o Device Manager.
- Clique em Create Device.
- Escolha um dispositivo (ex: Pixel 7).
- Selecione uma imagem de sistema (ex: Level 34 - Android 14).
- Finalize e clique no "Play" para iniciar o celular virtual.
5. Solução de Problemas ⚠️
- VT-x is disabled: Você precisa habilitar a virtualização na BIOS do seu computador.
- Studio muito lento: Adicione a pasta do projeto e as pastas do Android SDK nas exclusões do seu Antivírus.
Setup 02: Xcode Foundation 🍎
O Xcode é o ambiente de desenvolvimento essencial para criar aplicativos para ecossistemas Apple (iOS, macOS).
Important
O Xcode está disponível apenas para computadores Mac. Caso você use Windows ou Linux, este guia serve apenas como referência técnica.
1. Requisitos de Sistema
- Hardware: Mac com processador Intel ou Apple Silicon (M1/M2/M3).
- Sistema: macOS Sonoma ou superior (recomendado).
- Espaço: Pelo menos 40GB livres (o Xcode é pesado!).
2. Instalação
- Abra a App Store no seu Mac.
- Pesquise por Xcode.
- Clique em "Obter" e aguarde o download (pode demorar bastante).
3. Configurando Componentes
- Ao abrir o Xcode pela primeira vez, ele solicitará a instalação de componentes adicionais. Aceite todos.
- Nas configurações do Xcode (Settings > Platforms), certifique-se de que o simulador de iOS esteja baixado.
4. Xcode Command Line Tools
Acesse o terminal e execute:
Isso instalará ferramentas essenciais como o compilador gcc, make e outros utilitários de linha de comando.
⬅️ Voltar para o Início do Setup
5. Opcional: CocoaPods
Muitos projetos iOS antigos ainda usam CocoaPods para dependências:
5. Solução de Problemas ⚠️
- Espaço em Disco: O Xcode é muito grande. Garanta pelo menos 40GB de espaço livre para ele e os simuladores.
- Build Lento: Use simuladores de modelos mais simples (ex: iPhone SE) para poupar memória RAM se necessário.
Setup 03: Ferramentas de Apoio ⚙️
Além da IDE, um desenvolvedor precisa de um conjunto de utilitários para gerenciar código e testar comunicações.
1. Git (Controle de Versão)
O Git é obrigatório para qualquer projeto moderno.
- Windows: Baixe em git-scm.com.
- Mac: Já vem com o Xcode Command Line Tools.
- Linux:
sudo apt install git.
Configure seu nome e e-mail no terminal:
2. Postman ou Insomnia
Essenciais para testar APIs sem precisar de um frontend.
- Baixe o Postman em postman.com/downloads.
- Crie uma conta gratuita para sincronizar suas Collections (Aula 09).
3. Node.js e NPM
Muitos utilitários de automação dependem do ambiente Node.
- Baixe a versão LTS (Long Term Support) em nodejs.org.
- Verifique a instalação no terminal:
4. DBeaver (Banco de Dados)
Excelente para visualizar seus dados (Aula 06).
- Baixe em dbeaver.io.
- A versão "Community" é gratuita e atende perfeitamente.
Sobre
Sobre o Guia de Ferramentas 🚀
O Guia de Ferramentas da ADS Extra nasceu para preencher a lacuna entre o conhecimento teórico de programação e as ferramentas reais utilizadas no dia a dia das empresas de tecnologia.
🎯 Por que este curso?
No mercado atual, saber codificar em uma linguagem (como JavaScript, Java ou Python) é apenas o primeiro passo. O diferencial competitivo de um desenvolvedor está em sua capacidade de:
- Gerenciar seu tempo e tarefas de forma ágil (Jira, GitHub Issues).
- Colaborar efetivamente com outros desenvolvedores (Git, GitHub, PRs).
- Garantir a qualidade do que entrega (Testes, Linters, API Testing).
- Automação de ambientes e processos (Docker, CI/CD, Terraform).
- Comunicar-se e entender as interfaces de design (Slack, Figma).
🛠️ Metodologia
Nosso foco é 100% aplicado: - Termynal: Exemplos interativos de linha de comando. - Diagramas: Visualização clara de fluxos e arquiteturas. - Projetos Progressivos: Cada aula resulta em uma configuração ou cinto de ferramentas útil para sua carreira.
🎓 Público-Alvo
- Estudantes de Análise e Desenvolvimento de Sistemas.
- Desenvolvedores juniores buscando maturidade profissional.
- Entusiastas de tecnologia que querem entender o "como as coisas funcionam" nos bastidores das grandes Big Techs.
📚 O Que Você Vai Aprender
Módulo 1 – Fundamentos e Gestão
- Organização profissional com Jira, Trello e Asana
- Domínio do Ambiente de Dev (VS Code, Extensões e Terminal)
- Máquina do Tempo com Git: Fundamentos e snapshots
Módulo 2 – Colaboração e Dados
- O Ciclo PR: GitHub, GitLab e Code Review
- Manipulação Visual de Dados (PostgreSQL, MongoDB, Redis)
- Frameworks de Qualidade e Testes (Jest, PyTest)
Módulo 3 – Qualidade e Automação
- Testes de API profissionais com Postman e Insomnia
- Qualidade de Código estática (ESLint, Prettier)
- CI/CD Moderno com GitHub Actions
Módulo 4 – Infraestrutura e Integração
- Automação de Servidores e IaC (Ansible, Terraform)
- Contêineres com Docker e Orquestração K8s
- Ferramentas de Comunicação (Slack/Teams) e Design (Figma)
🛠️ Metodologia
Foco 100% prático e orientado a projetos. Cada aula resulta em uma peça funcional do seu ambiente de trabalho ou em uma competência técnica validada por mini-projetos e quizzes, garantindo que ao final do curso você domine as ferramentas padrão da indústria.
Pronto para dominar as ferramentas? Começar Agora
Materiais de Apoio 📚
Bem-vindo à seção de materiais complementares do curso. Aqui você encontra recursos individuais organizados por categoria.
-
Material visual das aulas com diagramas e conceitos principais.
-
Testes interativos de 10 questões para validar seu conhecimento.
-
Listas progressivas (básico, intermediário e desafio) por aula.
-
Aplicações práticas para consolidar os temas de cada módulo.
-
Guias passo a passo para configurar seu ambiente de desenvolvimento.
Versão para Impressão
Esta página foi gerada automaticamente para impressão.