બ્લોગ

હું GitHub Copilot સાથે Baby Monitor Timmy કેવી રીતે બનાવું છું

AI મને વધુ ઝડપથી આગળ વધવામાં મદદ કરે છે. Timmy ની જવાબદારી હજી પણ મારી પાસે જ રહે છે.

Baby Monitor Timmy ની શરૂઆત એક સરળ વિચારથી થઈ: ઘરનું ખાનગીપણું જાળવે એવો બેબી મોનિટર. કોઈ ક્લાઉડ રેકોર્ડિંગ નહીં, નર્સરીમાંથી બહાર જતાં બિનજરૂરી ડેટા માર્ગો નહીં. ઘણા લોકોને ખબર નથી કે હું ઝ્યુરિખમાં Timmy ને એકલા પ્રોજેક્ટ તરીકે બનાવું છું, અને GitHub Copilot મારો ખૂબ ઝડપી પેર પ્રોગ્રામર છે.

માનવ-AI વર્કફ્લો

ભાગવટો સ્પષ્ટ છે: ફીચર્સ હું નક્કી કરું છું, પ્રાથમિકતાઓ ગોઠવું છું અને આર્કિટેક્ચર અંગેના નિર્ણયો લઉં છું. Copilot અમલીકરણમાં મદદ કરે છે: કોડ લખવામાં, ટેસ્ટ ઉમેરવામાં, બગ્સને ચોક્કસ કરવામાં અને રિલીઝના પગલાં તૈયાર કરવામાં.

મારા માટે સામાન્ય સ્પ્રિન્ટ અંદાજે આવું હોય છે:

  1. ફીચરનું વર્ણન: હું એ ફીચરે શું કરવું જોઈએ તે વર્ણવું છું, જેમાં એજ કેસ અને મર્યાદાઓ પણ સામેલ હોય છે.
  2. અમલીકરણ: Copilot કોડ સૂચવે છે અને પ્રોજેક્ટની હાલની રીત-રિવાજોનું પાલન કરે છે.
  3. ટેસ્ટિંગ: ઓટોમેટેડ એન્ડ-ટુ-એન્ડ ટેસ્ટ બે ઇમ્યુલેટર પર ચાલે છે અને બાળક/વાલી વચ્ચેનું સાચું કનેક્શન તપાસે છે.
  4. વિતરણ: ટેસ્ટ પાસ થાય પછી Android અને iOS બિલ્ડ યોગ્ય સ્ટોર અને ટેસ્ટિંગ ટ્રૅક માટે તૈયાર થાય છે.

ફીચર્સ અને બગફિક્સ માટે આ ચક્ર ફરી ફરી ચાલે છે. હું દરેક લાઇન જાતે લખતો નથી, પણ હું નક્કી કરું છું કે શું બનાવવું છે, શા માટે તે બનાવવું છે, અને કોઈ સૂચન Timmy માટે યોગ્ય છે કે નહીં.

વિચારથી WebRTC સુધી

કેન્દ્રિય ટેકનિકલ કામ શરૂઆતથી સ્પષ્ટ હતું: બે ફોન વચ્ચે રિયલ-ટાઇમ ઑડિયો અને વિડિયો. WebRTC સ્પષ્ટ પસંદગી હતી, પરંતુ તેને Flutter સાથે જોડવું સહેલું નથી: ICE candidates, SDP negotiation, TURN fallback અને DataChannels ને યોગ્ય ક્રમમાં સાથે કામ કરવું પડે છે.

Copilot એ મને આ ભાગો એક પછી એક ગોઠવવામાં મદદ કરી: peer connection સેટ કરવું, જરૂરી ક્રમ સાચો રાખવો (offer પહેલાં DataChannel, setRemoteDescription પહેલાં onTrack), અને Firebase Firestore પર signaling મૂકવું. આગળ વધતા પહેલાં દરેક ભાગ બે ઇમ્યુલેટર પર ચાલવો જરૂરી હતો.

ECDH સાથે સુરક્ષિત પેરિંગ

સૌથી મહત્વપૂર્ણ ફીચર્સમાંનું એક હતું સુરક્ષિત પેરિંગ સિસ્ટમ. બે ડિવાઇસે પોતાની ઓળખની ખાતરી માટે કેન્દ્રીય સર્વર પર આધાર રાખ્યા વગર પરસ્પર વિશ્વાસ સ્થાપિત કરવો પડે છે. તેનો ઉકેલ: Firebase મારફતે ECDH P-256 key exchange, સાથે visual verification number (SAS), જે man-in-the-middle હુમલા શોધે છે.

Copilot એ ક્રિપ્ટોગ્રાફિક ક્રમ અમલમાં મૂકવામાં મદદ કરી: key generation, public key exchange, shared secret derivation, SAS computation અને પછીના તમામ signaling data માટે AES-256-GCM encryption. હું backend ને pairing key મોકલતો નથી; ફક્ત તેનો SHA-256 hash Firestore document identifier તરીકે વપરાય છે.

સિક્યુરિટી ઑડિટ: નબળાઈઓ શોધવી અને ઠીક કરવી

AI સહાયિત ડેવલપમેન્ટ મારા માટે માત્ર ઝડપથી ટાઇપિંગ નથી. તે વ્યવસ્થિત રીતે બગ્સ શોધવામાં પણ મદદ કરે છે. એક કેન્દ્રિત સિક્યુરિટી ઑડિટ સ્પ્રિન્ટમાં Copilot એ કોડબેઝનું વિશ્લેષણ કર્યું અને શોધ્યા છ મુદ્દા જે મને ઠીક કરવા જરૂરી હતા:

આ તમામ છ મુદ્દા એ જ સ્પ્રિન્ટમાં ઠીક થયા. Copilot અહીં મજબૂત છે: ઘણી ફાઇલો વાંચવી, પેટર્ન સરખાવવાં અને મને વધુ નજીકથી તપાસવાની જરૂર હોય એવી જગ્યાઓ બતાવવી.

ક્રમશઃ સ્પ્રિન્ટ્સ: ઍપ કેવી રીતે વિકસતી ગઈ

Timmy ઝડપભરી, પણ સ્પષ્ટ મર્યાદાવાળી સ્પ્રિન્ટ્સથી વિકસ્યો. કેટલાક મહત્વના તબક્કા:

દરેક સ્પ્રિન્ટ આ જ મૂળભૂત રીત અનુસરે છે: લક્ષ્ય વર્ણવો, સૂચનોની સમીક્ષા કરો, ઓટોમેટિક ટેસ્ટ કરો અને પછી ટેસ્ટર્સને મોકલો.

ડિવાઇસીસ વચ્ચે E2E ટેસ્ટિંગ

બેબી મોનિટરનું યોગ્ય ટેસ્ટિંગ એક ડિવાઇસ પર થઈ શકતું નથી. મને એક બાળકનું ડિવાઇસ અને એક વાલીનું ડિવાઇસ જોઈએ. પ્રોજેક્ટની શરૂઆત એક સાથે ચાલતા બે Android ઇમ્યુલેટરથી થઈ હતી અને હવે તેમાં local iOS simulator અને real-device checks પણ ઉમેરાયા છે. ઓટોમેટેડ Android ટેસ્ટ સ્ક્રિપ્ટ હજી પણ:

  1. બંને ઇમ્યુલેટર પર ઍપ ઇન્સ્ટોલ કરે છે
  2. બંને ડિવાઇસ પર પેરિંગની પ્રક્રિયામાંથી પસાર થાય છે
  3. ઑડિયો અને વિડિયો કનેક્શન બન્યાં છે તેની ચકાસણી કરે છે
  4. push-to-talk, કેમેરા કંટ્રોલ અને અન્ય ફીચર્સ ટેસ્ટ કરે છે

બંને ઇમ્યુલેટરનો IP address એકસરખો હોવાથી (10.0.2.15), STUN મારફતે સીધું પિયર-ટુ-પિયર કનેક્શન શક્ય નથી. દરેક ટેસ્ટ રન Cloudflare TURN રિલે મારફતે જ કરવો પડે છે. આ થોડું કંટાળાજનક છે, પણ ઉપયોગી પણ છે: દર વખતે સૌથી જટિલ કનેક્શન માર્ગનું ટેસ્ટિંગ થાય છે.

શું શીખ્યો

AI પેર પ્રોગ્રામર સાથે સંપૂર્ણ ઍપ બનાવતાં મને કેટલીક બાબતો શીખવા મળી:

આગળ શું

Baby Monitor Timmy સતત વિકસતું રહે છે. iOS રિલીઝ નજીક છે; ત્યારબાદ વધારાના sensor features અને સતત સિક્યુરિટી મજબૂતીકરણ આવશે. વર્કફ્લો સરખો જ રહે છે: હું દિશા અને મર્યાદાઓ નક્કી કરું છું, Copilot ઝડપથી અમલીકરણ અને તપાસમાં મદદ કરે છે.

સિક્યુરિટી સંબંધિત બિલ્ડિંગ બ્લોક્સ હવે સ્પષ્ટ મર્યાદાઓ માં જાહેર baby-monitor-timmy-core repository. ત્યાં પેરિંગ, signaling અને backend interfaces વિશેના આર્કિટેક્ચર નિર્ણયો પણ દસ્તાવેજિત છે.


વધુ લેખો