UniMarket

ہم نے UniMarket کیسے بنایا: ایک ہی سرور پر تیز، دو زبانوں والا مارکیٹ پلیس

UniMarket کے پیچھے فیصلے: بنگلہ فونٹس اور ایک کوڈ بیس کے ڈھانچے سے لے کر کئی دکانوں کے آرڈرز، مکمل پیسوں (poisha) میں رقم کا ذخیرہ، ای میل کی ڈیلیوری اور ایک کمانڈ سے ڈیپلائے تک۔

UniMarket بنگلہ دیش کے لیے بنگلہ اور انگریزی میں ایک ملٹی سیلر مارکیٹ پلیس ہے۔ ہم نے اسٹور، سیلر سینٹر، ایڈمن پینل اور انسٹال ہونے والی ایپ کو ایک ہی TypeScript پروجیکٹ کے طور پر بنایا اور اپنے ہی سرور پر چلایا۔ یہ ان فیصلوں کی سیر ہے جو سب سے اہم تھے، اور ان کی وجوہات۔

ڈارک تھیم میں UniMarket کا کیٹیگری پیج، جس میں مصنوعات کی ایک قطار ہے اور ہر ایک پر قیمت، رعایت کا بیج اور Add بٹن ہے۔
ڈیسک ٹاپ پر کیٹیگری پیج۔

اسٹیک اور اس کی وجوہات

پرتانتخابوجہ
ایپNext.js 16، React 19 اور TypeScriptسرور پر بننے والے صفحات براؤزر کی JavaScript کو چھوٹا رکھتے ہیں، اور ایک ہی زبان اسٹور، سیلر سینٹر، ایڈمن اور API سب کو سنبھالتی ہے۔
اسٹائلنگڈیزائن ٹوکنز کے ساتھ Tailwind CSS 4چھوٹی CSS، اور انہی ٹوکنز سے لائٹ اور ڈارک دونوں تھیمز۔
ڈیٹااپنے الگ انسٹینس کے ساتھ MongoDBلچکدار ڈاکیومنٹس مختلف آپشنز والی مصنوعات کے لیے موزوں ہیں، اور الگ انسٹینس سرور کی دوسری سروسز کو متاثر نہیں کرتا۔
سائن انون ٹائم کوڈ، Google اور Apple، فون کوڈ کے لیے Firebase Authبنگلہ دیش کے خریدار فون نمبر سے سائن ان کرتے ہیں، اور کوڈ میں بھولنے کے لیے کوئی پاس ورڈ ہی نہیں ہوتا۔
ہوسٹنگہمارا اپنا VPS، nginx، Cloudflare اور Let’s Encryptمتوقع لاگت، اور بیک اپ، میل اور حدود پر مکمل اختیار۔

تیز صفحات، بنگلہ میں بھی

زائرین کو نظر آنے والے زیادہ تر صفحات عوامی ہوتے ہیں، اس لیے انہیں کیش ہونے کے لیے بنایا گیا ہے۔ جو چیز ذاتی ہو، جیسے کارٹ کی تعداد یا سائن ان شدہ صارف کا نام، وہ الگ سے بھری جاتی ہے اور صفحے کو روکتی نہیں۔ تصاویر اپ لوڈ ہوتے ہی مقررہ سائزوں میں جدید فارمیٹس میں بدل دی جاتی ہیں۔

فونٹس نے ہمیں حیران کیا۔ بنگلہ ویب فونٹ بڑا ہوتا ہے: جو ہم نے آزمایا وہ تقریباً 200 KB کا تھا۔ ہمارے ٹیسٹ میں اس نے موبائل Lighthouse پرفارمنس اسکور سے دس سے زیادہ پوائنٹ گھٹا دیے۔ چنانچہ بنگلہ متن اسی فونٹ میں دکھایا جاتا ہے جو فون یا کمپیوٹر پر پہلے سے موجود ہے، اور ایک چھوٹا سیلف ہوسٹڈ فونٹ صرف لاطینی حروف اور اعداد کے لیے ہے۔ قارئین وہی فونٹ دیکھتے ہیں جو وہ روز پڑھتے ہیں، اور کچھ اضافی ڈاؤن لوڈ نہیں ہوتا۔

ہمارے مقامی پروڈکشن بلڈ میں جانچے گئے ہر صفحے پر Accessibility، Best Practices اور SEO کا اسکور 100 رہا، اور موبائل Performance 93 سے 98 کے درمیان رہی۔ یہ مقامی بلڈ پر ہماری اپنی پیمائشیں ہیں، اور بعد میں تھرڈ پارٹی اسکرپٹس شامل کرنے سے یہ کم ہو جائیں گی۔

دو زبانیں جو واقعی دو زبانیں ہیں

بنگلہ اور انگریزی میں سے ہر ایک کا اپنا ایڈریس ہے، اور ان کے درمیان hreflang لنکس ہیں تاکہ سرچ انجن صحیح زبان دکھائے۔ انٹرفیس کی ہر عبارت ایک ٹائپ شدہ ڈکشنری میں رہتی ہے، اور اگر کوئی بنگلہ عبارت غائب ہو تو بلڈ ناکام ہو جاتا ہے، اس لیے ادھورا ترجمہ شدہ صفحہ کبھی جاری نہیں ہو سکتا۔ قیمتیں بنگلہ میں بنگلہ ہندسوں میں اور انگریزی میں لاطینی ہندسوں میں دکھائی جاتی ہیں۔

ایک چیک آؤٹ، کئی سیلرز

ایک کارٹ میں کئی دکانوں کی اشیا ہو سکتی ہیں۔ جب خریدار آرڈر دیتا ہے تو چیک آؤٹ براؤزر پر بھروسا کرنے کے بجائے ہر قیمت ڈیٹا بیس سے دوبارہ نکالتا ہے، اسٹاک ایک ہی اٹامک مرحلے میں ریزرو کرتا ہے، آرڈر کو ہر دکان کے حساب سے ایک شپمنٹ میں بانٹتا ہے اور ہر دکان کا ایک ڈیلیوری چارج لگاتا ہے۔ دو بار سبمٹ کرنے سے دو آرڈر نہیں بنتے، اور منسوخی پر اسٹاک واپس آ جاتا ہے۔

رقم مکمل پیسوں (poisha) میں محفوظ کی جاتی ہے، جہاں ایک ٹکا 100 پیسے کا ہوتا ہے، اس لیے کوئی بھی حساب کسی اعشاریے کی وجہ سے راؤنڈ نہیں ہوتا۔

پہلے سے محفوظ

  • سیلرز صرف اپنے ہی آرڈرز اور مصنوعات پڑھ سکتے ہیں، اور اسٹاف کو صرف اپنے کردار کی اجازتیں ملتی ہیں۔ اسٹاف پاس ورڈ اور آتھینٹیکیٹر کوڈ کے ساتھ سائن ان کرتا ہے، اور ان کی تبدیلیاں آڈٹ لاگ میں درج ہوتی ہیں۔
  • ویب سرور سائن ان اور API درخواستوں کی حد مقرر کرتا ہے، اور ایپ اپنی فی صارف حدیں الگ سے لگاتی ہے۔
  • اپ لوڈ کی گئی فائلیں دوبارہ انکوڈ کی جاتی ہیں، جس سے تصاویر میں چھپا مقام کا ڈیٹا ہٹ جاتا ہے، اور شناختی دستاویزات عوامی فولڈر سے باہر محفوظ ہوتی ہیں۔
  • سکیورٹی ریویو کے بعد ہم نے اکاؤنٹ ہائی جیک ہونے کے دونوں مسائل پہلے ٹھیک کیے اور درمیانے درجے کے مسائل اس کے بعد۔

ای میل جو پہنچتی ہے

UniMarket آرڈر کے ہر مرحلے پر ای میل بھیجتا ہے، اس لیے ای میل کا منزل تک پہنچنا پروڈکٹ کا حصہ ہے۔ میل ہمارے اپنے میل سرور سے DKIM دستخط کے ساتھ جاتی ہے، اور ڈومین SPF اور DMARC ریکارڈ شائع کرتا ہے۔ ہمارے ٹیسٹوں میں آرڈر کی ای میلز نے تینوں جانچیں پاس کیں اور اسپام میں نہیں بلکہ ان باکس میں پہنچیں۔

کھلے ٹیبز کو توڑے بغیر ڈیپلائے

ڈیپلائے سرور پر بلڈ ہوتا ہے، نئی ریلیز پر سوئچ کرتا ہے اور جانچتا ہے کہ وہ ٹھیک چل رہی ہے۔ دوسری کمانڈ پچھلی ریلیز پر واپس لے جاتی ہے۔ ہر ریلیز کا اپنا ڈیپلائمنٹ آئی ڈی ہوتا ہے، اس لیے اگر کوئی خریدار ڈیپلائے کے دوران ٹیب کھلا چھوڑ دے تو صفحہ پہچان لیتا ہے کہ اس کے بٹن پرانی ریلیز کے ہیں اور خود کو ریلوڈ کر لیتا ہے، ایرر دکھانے کے بجائے۔

ڈیٹا بیس کا ہر رات بیک اپ لیا جاتا ہے اور آخری 14 بیک اپ رکھے جاتے ہیں۔

UniMarket ابتدائی رسائی (early access) میں ہے اور اس کا کیٹلاگ ڈیمو ہے۔ مارکیٹ پلیس لائیو اور کام کر رہا ہے، اور unimarket.bd ڈومین کا منصوبہ ہے۔

22Softwares ٹیم نے ان تمام باتوں کو لائیو UniMarket ایپ اور اس کی سیلر سینٹر گائیڈ سے جانچ لیا ہے۔

سوالات