UniMarket बांग्लादेश के लिए बांग्ला और अंग्रेज़ी में बना मल्टी-सेलर मार्केटप्लेस है। स्टोर, Seller Center, एडमिन पैनल और इंस्टॉल होने वाला ऐप, सब हमने एक ही TypeScript प्रोजेक्ट के रूप में बनाया है और अपने सर्वर पर चलाते हैं। यह उन फ़ैसलों का ब्योरा है जो सबसे ज़्यादा मायने रखते थे, और बताता है कि हमने वे क्यों लिए।

स्टैक और उसके कारण
| लेयर | चुनाव | कारण |
|---|---|---|
| ऐप | Next.js 16, React 19 और TypeScript | सर्वर पर रेंडर हुए पेज ब्राउज़र का JavaScript छोटा रखते हैं, और एक ही भाषा स्टोर, Seller Center, एडमिन और 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 लिंक हैं ताकि सर्च इंजन सही भाषा दिखाएँ। इंटरफ़ेस की हर स्ट्रिंग एक टाइप्ड डिक्शनरी में रहती है, और बांग्ला स्ट्रिंग छूट जाए तो बिल्ड फ़ेल हो जाता है, इसलिए आधा अनुवादित पेज कभी रिलीज़ नहीं हो सकता। क़ीमतें बांग्ला में बांग्ला अंकों में और अंग्रेज़ी में लैटिन अंकों में दिखती हैं।
एक चेकआउट, कई सेलर
एक कार्ट में कई दुकानों के आइटम हो सकते हैं। जब ग्राहक ऑर्डर देता है, तो चेकआउट ब्राउज़र पर भरोसा करने की जगह हर क़ीमत डेटाबेस से दोबारा निकालता है, स्टॉक को एक ही अविभाज्य चरण में रिज़र्व करता है, ऑर्डर को हर दुकान के लिए एक शिपमेंट में बाँटता है और हर दुकान का एक डिलीवरी शुल्क लगाता है। दो बार सबमिट करने से दो ऑर्डर नहीं बनते, और रद्द करने पर स्टॉक वापस जुड़ जाता है।
रकम पूरे पोइशा में सहेजी जाती है, जहाँ एक टका 100 पोइशा का होता है, इसलिए किसी भी जोड़-घटाव में दशमलव की वजह से पूर्णांकन नहीं होता।
डिफ़ॉल्ट रूप से सुरक्षित
- सेलर केवल अपने ही ऑर्डर और प्रोडक्ट पढ़ सकते हैं, और स्टाफ़ को सिर्फ़ उनकी भूमिका की अनुमतियाँ मिलती हैं। स्टाफ़ पासवर्ड और ऑथेंटिकेटर कोड से साइन इन करता है, और उनके किए बदलाव ऑडिट लॉग में दर्ज होते हैं।
- वेब सर्वर साइन-इन और API अनुरोधों की सीमा तय करता है, और ऐप अपनी तरफ़ से हर उपयोगकर्ता की अलग सीमा लगाता है।
- अपलोड की गई फ़ाइलें दोबारा एन्कोड की जाती हैं, जिससे फ़ोटो में छिपा लोकेशन डेटा हट जाता है, और पहचान के दस्तावेज़ सार्वजनिक फ़ोल्डर के बाहर रखे जाते हैं।
- सुरक्षा समीक्षा के बाद हमने पहले अकाउंट टेकओवर से जुड़ी दो खामियाँ ठीक कीं, फिर मध्यम स्तर की खामियाँ।
ऐसा ईमेल जो पहुँचता है
UniMarket ऑर्डर के हर चरण पर ईमेल भेजता है, इसलिए डिलीवरेबिलिटी प्रोडक्ट का हिस्सा है। मेल हमारे अपने मेल सर्वर से DKIM सिग्नेचर के साथ जाता है, और डोमेन SPF तथा DMARC रिकॉर्ड प्रकाशित करता है। हमारे टेस्ट में ऑर्डर के ईमेल तीनों जाँचों में पास हुए और स्पैम में नहीं, इनबॉक्स में पहुँचे।
खुले टैब को तोड़े बिना डिप्लॉय
डिप्लॉय सर्वर पर बिल्ड करता है, नई रिलीज़ पर स्विच करता है और जाँचता है कि वह ठीक चल रही है। दूसरी कमांड पिछली रिलीज़ पर लौटा देती है। हर रिलीज़ की अपनी डिप्लॉयमेंट आईडी होती है, इसलिए अगर कोई ग्राहक डिप्लॉय के दौरान टैब खुला छोड़ दे, तो पेज पहचान लेता है कि उसके बटन पुरानी रिलीज़ के हैं और एरर दिखाने की जगह ख़ुद रीलोड हो जाता है।
डेटाबेस का बैकअप हर रात लिया जाता है और पिछले 14 बैकअप रखे जाते हैं।
UniMarket अर्ली एक्सेस में है और इसका कैटलॉग डेमो है। मार्केटप्लेस लाइव है और काम कर रहा है, और unimarket.bd डोमेन की योजना है।
22Softwares टीम ने ये तथ्य लाइव UniMarket ऐप और उसकी Seller Center गाइड से मिलाकर जाँचे हैं।