Blog

Cum construiesc Baby Monitor Timmy cu GitHub Copilot

AI mă ajută să mă mișc mai repede. Responsabilitatea pentru Timmy rămâne tot la mine.

Baby Monitor Timmy a pornit de la o idee simplă: un monitor pentru bebeluși care respectă viața privată în locuință. Fără înregistrări în cloud și fără transferuri inutile de date în afara camerei copilului. Ceea ce mulți nu știu este că dezvolt Timmy singur, în Zurich, iar GitHub Copilot este partenerul meu de programare foarte rapid.

Fluxul de lucru om–AI

Împărțirea e clară: eu definesc funcționalitățile, stabilesc prioritățile și iau deciziile de arhitectură. Copilot ajută la implementare: scrie cod, adaugă teste, ajută la identificarea cauzelor erorilor și pregătește pașii pentru lansare.

Un sprint tipic arată, în linii mari, așa pentru mine:

  1. Descrierea funcționalității: Descriu ce trebuie să facă funcționalitatea, inclusiv cazurile-limită și constrângerile.
  2. Implementare: Copilot propune cod și respectă convențiile deja existente în proiect.
  3. Testare: Testele automate end-to-end rulează pe două emulatoare și verifică legătura reală dintre dispozitivul copilului și cel al părintelui.
  4. Distribuție: Când testele trec, versiunile Android și iOS sunt pregătite pentru magazinele și canalele de testare potrivite.

Acest ciclu se repetă pentru funcționalități și remedieri de erori. Nu scriu fiecare linie singur, dar decid ce se construiește, de ce se construiește și dacă o sugestie se potrivește pentru Timmy.

De la concept la WebRTC

Sarcina tehnică centrală a fost clară de la început: transmisii audio și video în timp real între două telefoane. WebRTC a fost alegerea evidentă, însă integrarea lui cu Flutter nu e simplă: candidații ICE, negocierea SDP, soluția de rezervă TURN și canalele de date trebuie să funcționeze împreună în ordinea corectă.

Copilot m-a ajutat să combin aceste componente pas cu pas: să configurez conexiunea dintre dispozitive, să păstrez ordinea critică corectă (DataChannel înainte de ofertă, onTrack înainte de setRemoteDescription) și să implementez semnalizarea prin Firebase Firestore. Fiecare componentă trebuia să funcționeze pe două emulatoare înainte să merg mai departe.

Asociere sigură cu ECDH

Una dintre cele mai critice funcționalități a fost sistemul de asociere sigură. Două dispozitive trebuie să stabilească încredere reciprocă fără să se bazeze pe un server central care să le confirme identitatea. Soluția: un schimb de chei ECDH P-256 prin Firebase, combinat cu un număr de verificare vizuală (SAS) care detectează atacurile de tip man-in-the-middle.

Copilot m-a ajutat să implementez lanțul criptografic: generarea cheilor, schimbul de chei publice, derivarea secretului partajat, calcularea SAS și criptarea AES-256-GCM pentru toate datele de semnalizare ulterioare. Nu trimit cheia de asociere către backend; doar hash-ul ei SHA-256 este folosit ca identificator al documentului Firestore.

Audit de securitate: găsirea și remedierea vulnerabilităților

Dezvoltarea asistată de AI nu înseamnă pentru mine doar tastare mai rapidă. Mă ajută și la căutarea sistematică a erorilor. Într-un sprint dedicat auditului de securitate, Copilot a analizat baza de cod și a găsit șase probleme pe care trebuia să le rezolv:

Toate cele șase au fost rezolvate în același sprint. Aici Copilot este foarte util: citește multe fișiere, compară tipare și semnalează zonele pe care trebuie să le verific mai atent.

Sprinturi iterative: cum a evoluat aplicația

Timmy a crescut prin sprinturi rapide, dar cu limite clare. Câteva etape importante:

Fiecare sprint urmează același tipar de bază: descriu obiectivul, revizuiesc sugestiile, testez automat, apoi trimit versiunea către testeri.

Testare E2E pe dispozitive

Nu poți testa corect un monitor pentru bebeluși pe un singur dispozitiv. Am nevoie de un dispozitiv pentru copil și unul pentru părinte. Proiectul a început cu două emulatoare Android care rulau simultan, iar acum acest flux este completat de verificări locale pe simulatorul iOS și pe dispozitive reale. Scriptul automat de testare pentru Android continuă să:

  1. Instalează aplicația pe ambele emulatoare
  2. Parcurge asocierea pe ambele dispozitive
  3. Verifică stabilirea conexiunilor audio și video
  4. Testează push-to-talk, controlul camerei și alte funcționalități

Deoarece ambele emulatoare au aceeași adresă IP (10.0.2.15), o conexiune directă peer-to-peer prin STUN este imposibilă. Fiecare rulare de test trebuie să treacă prin releul TURN de la Cloudflare. Este enervant, dar util: cea mai complicată cale de conectare este testată de fiecare dată.

Ce am învățat

Dezvoltarea unei aplicații complete cu un partener de programare bazat pe AI m-a învățat câteva lucruri:

Ce urmează

Baby Monitor Timmy continuă să evolueze. Lansarea pentru iOS este aproape; după aceea urmează funcții suplimentare pentru senzori și consolidarea continuă a securității. Fluxul de lucru rămâne similar: eu stabilesc direcția și limitele, iar Copilot ajută la implementare și verificare rapidă.

Componentele importante pentru securitate sunt acum organizate în zone clar delimitate în depozitul public de cod baby-monitor-timmy-core. Acolo sunt documentate și deciziile de arhitectură privind asocierea, semnalizarea și interfețele backendului.


Mai multe articole