Blog

Como desenvolvo o Baby Monitor Timmy com o GitHub Copilot

A IA me ajuda a avançar mais rápido. A responsabilidade pelo Timmy continua sendo minha.

O Baby Monitor Timmy começou com uma ideia simples: uma babá eletrônica que respeita a privacidade em casa. Sem gravações na nuvem, sem caminhos desnecessários para os dados saírem do quarto do bebê. O que muita gente não vê: eu desenvolvo o Timmy sozinho em Zurique, e GitHub Copilot é meu parceiro de programação, e muito rápido.

O fluxo de trabalho entre pessoa e IA

A divisão é clara: eu defino os recursos, estabeleço prioridades e tomo decisões de arquitetura. O Copilot ajuda na implementação: escrevendo código, adicionando testes, investigando bugs e preparando as etapas de lançamento.

Para mim, um sprint típico é mais ou menos assim:

  1. Descrição do recurso: Descrevo o que o recurso deve fazer, incluindo casos extremos e restrições.
  2. Implementação: O Copilot sugere código e segue as convenções já existentes no projeto.
  3. Testes: Testes automatizados de ponta a ponta rodam em dois emuladores e verificam a conexão real entre os dispositivos do bebê e dos pais.
  4. Distribuição: Quando os testes passam, as versões para Android e iOS são preparadas para as lojas e os canais de teste corretos.

Esse ciclo se repete para recursos e correções de bugs. Eu não escrevo cada linha sozinho, mas decido o que é desenvolvido, por que isso é desenvolvido e se uma sugestão faz sentido para o Timmy.

Do conceito ao WebRTC

A tarefa técnica central ficou clara desde o começo: áudio e vídeo em tempo real entre dois celulares. O WebRTC era a escolha óbvia, mas integrá-lo ao Flutter não é simples: candidatos ICE, negociação SDP, fallback com TURN e DataChannels precisam funcionar juntos na ordem certa.

O Copilot me ajudou a juntar essas partes passo a passo: configurar a conexão peer-to-peer, manter correta a ordem crítica (DataChannel antes da oferta, onTrack antes de setRemoteDescription) e colocar a sinalização no Firebase Firestore. Cada parte precisava funcionar em dois emuladores antes de eu seguir adiante.

Pareamento seguro com ECDH

Um dos recursos mais importantes foi o sistema de pareamento seguro. Dois dispositivos precisam estabelecer confiança mútua sem depender de um servidor central para confirmar a identidade um do outro. A solução: uma troca de chaves ECDH P-256 pelo Firebase, combinada com um número de verificação visual (SAS) que detecta ataques man-in-the-middle.

O Copilot ajudou a implementar a cadeia criptográfica: geração de chaves, troca de chaves públicas, derivação do segredo compartilhado, cálculo do SAS e criptografia AES-256-GCM para todos os dados de sinalização posteriores. Não envio a chave de pareamento ao backend; apenas seu hash SHA-256 é usado como identificador de documento no Firestore.

Auditoria de segurança: encontrando e corrigindo vulnerabilidades

Para mim, desenvolvimento com ajuda de IA não é só digitar mais rápido. Ele também ajuda a procurar bugs de forma sistemática. Em um sprint focado de auditoria de segurança, o Copilot analisou a base de código e encontrou seis problemas que eu precisava corrigir:

Os seis foram corrigidos no mesmo sprint. É aqui que o Copilot se destaca: ler muitos arquivos, comparar padrões e marcar pontos que preciso analisar mais de perto.

Sprints iterativos: como o app evoluiu

O Timmy cresceu por meio de sprints rápidos, mas com limites bem definidos. Alguns marcos:

Todo sprint segue o mesmo padrão básico: descrever o objetivo, revisar sugestões, testar automaticamente e então enviar para os testadores.

Testes E2E entre dispositivos

Não dá para testar uma babá eletrônica direito em um único dispositivo. Preciso de um dispositivo para o bebê e outro para os pais. O projeto começou com dois emuladores Android rodando ao mesmo tempo e agora complementa esse ciclo com verificações no simulador local do iOS e em dispositivos reais. O script automatizado de teste para Android ainda:

  1. Instala o app nos dois emuladores
  2. Conduz o pareamento nos dois dispositivos
  3. Verifica se as conexões de áudio e vídeo foram estabelecidas
  4. Testa a função de pressionar para falar (push-to-talk), o controle da câmera e outros recursos

Como os dois emuladores compartilham o mesmo endereço IP (10.0.2.15), uma conexão direta peer-to-peer por STUN é impossível. Cada execução de teste precisa passar pelo relay TURN da Cloudflare. É chato, mas útil: o caminho de conexão mais complicado é testado todas as vezes.

O que aprendi

Desenvolver um app completo com uma IA como parceira de programação me ensinou algumas coisas:

Olhando para frente

O Baby Monitor Timmy continua evoluindo. O lançamento para iOS está próximo; depois vêm recursos adicionais de sensores e o reforço contínuo da segurança. O fluxo de trabalho permanece parecido: eu defino a direção e os limites, e o Copilot ajuda a implementar e verificar com rapidez.

Os componentes relevantes para a segurança agora estão organizados com limites claros no repositório público baby-monitor-timmy-core. É lá também que estão documentadas as decisões de arquitetura sobre pareamento, sinalização e interfaces de backend.


Mais artigos