Laravel के साथ मल्टी-वेंडर मार्केटप्लेस कैसे बनाएं

मार्केटप्लेस बनाना एक डेटा की समस्या है।

अधिकांश डेवलपर्स को लगता है कि सबसे कठिन हिस्सा सेलर डैशबोर्ड है। ऐसा नहीं है। असली चुनौती मल्टी-टेनेंसी (multi-tenancy) है। आपको यह सुनिश्चित करना होगा कि हर क्वेरी एक ही सवाल का जवाब दे: इस डेटा का मालिक कौन है?

यदि आप एक मानक दुकान बनाते हैं और बाद में वेंडर्स जोड़ने की कोशिश करते हैं, तो आपको उसे फिर से लिखना पड़ेगा। आपको हर मॉडल, हर क्वेरी और हर कार्ट में वेंडर आईडी (vendor ID) को शामिल करना होगा। यदि आप एक भी फ़िल्टर भूल जाते हैं, तो एक विक्रेता दूसरे विक्रेता के ऑर्डर देख सकता है। यह एक डेटा लीक है।

आपके पास तीन विकल्प हैं:

  • खुद बनाएं: आपको हर स्कोपिंग क्लॉज (scoping clause) खुद लिखना होगा। यह महंगा और जोखिम भरा है।
  • ऐड-ऑन्स के साथ सिंगल-टेनेंट शॉप का उपयोग करें: आप वेंडर कॉलम को ऐसे स्कीमा पर लगाते हैं जो उनके लिए डिज़ाइन नहीं किया गया है। आइसोलेशन (isolation) कमजोर बना रहता है।
  • मल्टी-टेनेंट फाउंडेशन का उपयोग करें: Aimeos जैसे पैकेज का उपयोग करें जो पहले दिन से ही डेटा मॉडल में आइसोलेशन को शामिल करता है।

यहाँ बताया गया है कि Aimeos का उपयोग करके एक सिंगल शॉप को मार्केटप्लेस में कैसे बदलें:

1. फाउंडेशन इंस्टॉल करें

शुरू करने के लिए इस कमांड को चलाएं: composer create-project aimeos/aimeos myshop

2. मल्टी-वेंडर मोड सक्षम करें

आपको अपना डेटाबेस फिर से लिखने की आवश्यकता नहीं है। बस अपनी .env फ़ाइल में एक लाइन बदलें: SHOP_MULTISHOP=true

यह फ्लैग स्वचालित रूप से हर रूट, API और एडमिन पैनल को एक विशिष्ट साइट तक सीमित (scope) कर देता है। सिस्टम आपके लिए डेटा का अलगाव (separation) संभाल लेता है।

3. सेल्फ-सर्विस ऑनबोर्डिंग सक्षम करें

स्केल करने के लिए, वेंडर्स को खुद साइन अप करने दें। अपनी .env में यह जोड़ें: SHOP_REGISTRATION=true

नए विक्रेताओं को केवल अपने स्वयं के कैटलॉग, ऑर्डर और ग्राहकों तक पहुंच मिलती है। वे कुछ और नहीं देख सकते।

यह क्यों काम करता है:

Aimeos सब कुछ "साइट" के इर्द-गिर्द व्यवस्थित करता है। हर उत्पाद, कीमत और ऑर्डर में एक साइट आईडी (site ID) होती है। डेटा लेयर इसे स्वचालित रूप से फ़िल्टर करती है। आपको "where site_id = ?" लिखने की आवश्यकता नहीं है क्योंकि सिस्टम यह आपके लिए कर देता है।

यह दृष्टिकोण तीन प्रमुख समस्याओं का समाधान करता है:

  • सुरक्षा (Security): डेटा आइसोलेशन डेटाबेस का एक गुण है, न कि कोड का कोई हिस्सा जिसे आप भूल सकते हैं।
  • जटिलता (Complexity): वेंडर बिना स्कीमा बदले सब्सक्रिप्शन या बंडल जैसे जटिल उत्पादों को प्रबंधित कर सकते हैं।
  • भुगतान (Payments): आप भुगतान को तुरंत विभाजित करने के लिए Stripe जैसे एक्सटेंशन का उपयोग कर सकते हैं। प्लेटफॉर्म कमीशन लेता है और विक्रेता को बाकी हिस्सा मिलता है।

प्लंबिंग बनाना बंद करें। अपना मार्केटप्लेस बनाना शुरू करें।

स्रोत: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a