بلاگ

میں 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)، اور signaling کو Firebase Firestore پر رکھنا۔ آگے بڑھنے سے پہلے ہر حصہ دو ایمولیٹرز پر چلنا ضروری تھا۔

ECDH کے ساتھ محفوظ پیئرنگ

سب سے اہم فیچرز میں سے ایک محفوظ پیئرنگ سسٹمتھا۔ دو ڈیوائسز کو اپنی شناخت کی تصدیق کے لیے کسی مرکزی سرور پر انحصار کیے بغیر باہمی اعتماد قائم کرنا ہوتا ہے۔ حل: Firebase کے ذریعے ECDH P-256 key exchange، جس کے ساتھ ایک بصری تصدیقی نمبر (SAS) ہے جو man-in-the-middle حملوں کو پکڑتا ہے۔

Copilot نے کرپٹوگرافک سلسلہ نافذ کرنے میں مدد کی: key generation، public key exchange، shared secret derivation، SAS computation، اور بعد کے تمام signaling ڈیٹا کے لیے AES-256-GCM encryption۔ میں pairing key بیک اینڈ کو نہیں بھیجتا؛ صرف اس کا SHA-256 hash ہی Firestore document identifier کے طور پر استعمال ہوتا ہے۔

سیکیورٹی آڈٹ: کمزوریاں تلاش کرنا اور درست کرنا

میرے لیے AI کی مدد سے ڈیویلپمنٹ صرف تیزی سے ٹائپ کرنا نہیں ہے۔ یہ منظم انداز میں بگز ڈھونڈنے میں بھی مدد دیتی ہے۔ سیکیورٹی آڈٹ کے ایک مرکوز اسپرنٹ میں Copilot نے کوڈ بیس کا تجزیہ کیا اور چھ مسائل تلاش کیے جنہیں مجھے ٹھیک کرنا تھا:

چھوں مسائل اسی اسپرنٹ میں درست کر دیے گئے۔ Copilot کی طاقت یہی ہے: بہت سی فائلیں پڑھنا، پیٹرنز کا موازنہ کرنا، اور ان جگہوں کو نشان زد کرنا جنہیں مجھے زیادہ غور سے دیکھنا ہو۔

بار بار کے اسپرنٹس: ایپ کیسے بہتر ہوئی

Timmy تیز لیکن واضح حدود والے اسپرنٹس کے ذریعے بڑھا۔ چند سنگِ میل:

ہر اسپرنٹ ایک ہی بنیادی انداز پر چلتا ہے: ہدف بیان کریں، تجاویز کا جائزہ لیں، خودکار ٹیسٹ کریں، پھر ٹیسٹرز کو بھیجیں۔

ڈیوائسز کے درمیان E2E ٹیسٹنگ

آپ ایک ڈیوائس پر بیبی مانیٹر کو صحیح طرح ٹیسٹ نہیں کر سکتے۔ مجھے ایک بچے کی ڈیوائس اور ایک والدین کی ڈیوائس درکار ہوتی ہے۔ پروجیکٹ کا آغاز بیک وقت چلنے والے دو Android ایمولیٹرز سے ہوا تھا، اور اب اس عمل میں مقامی iOS simulator اور حقیقی ڈیوائس کی جانچ بھی شامل ہے۔ خودکار Android test script اب بھی:

  1. دونوں ایمولیٹرز پر ایپ انسٹال کرتا ہے
  2. دونوں ڈیوائسز پر پیئرنگ کے مراحل سے گزرتا ہے
  3. تصدیق کرتا ہے کہ آڈیو اور ویڈیو کنکشن قائم ہو گئے ہیں
  4. push-to-talk، کیمرہ کنٹرول اور دیگر فیچرز ٹیسٹ کرتا ہے

چونکہ دونوں ایمولیٹرز ایک ہی IP address شیئر کرتے ہیں (10.0.2.15)، اس لیے STUN کے ذریعے براہِ راست peer-to-peer کنکشن ناممکن ہے۔ ہر ٹیسٹ رن کو Cloudflare TURN relay سے گزرنا ہوتا ہے۔ یہ پریشان کن ہے، مگر مفید بھی: ہر بار سب سے پیچیدہ کنکشن راستہ ٹیسٹ ہو جاتا ہے۔

میں نے کیا سیکھا

AI پیئر پروگرامر کے ساتھ ایک مکمل ایپ بنانے سے میں نے چند باتیں سیکھیں:

آگے کی طرف

Baby Monitor Timmy مسلسل بہتر ہو رہا ہے۔ iOS ریلیز قریب ہے؛ اس کے بعد مزید sensor features اور سیکیورٹی کو مسلسل مضبوط کرنا ہوگا۔ ورک فلو ویسا ہی رہے گا: سمت اور حدود میں طے کرتا ہوں، Copilot تیزی سے عمل درآمد اور جانچ میں مدد کرتا ہے۔

سیکیورٹی سے متعلق اہم building blocks اب واضح حدود کے تحت عوامی baby-monitor-timmy-core repositoryمیں موجود ہیں۔ پیئرنگ، signaling اور backend interfaces سے متعلق آرکیٹیکچر کے فیصلے بھی وہیں دستاویزی ہیں۔


مزید مضامین