Laravel वापरून मल्टी-व्हेंडर मार्केटप्लेस कसे तयार करावे

मार्केटप्लेस तयार करणे ही एक डेटाची समस्या आहे.

बहुतेक डेव्हलपर्सना वाटते की कठीण भाग म्हणजे 'सेलर डॅशबोर्ड' (seller dashboard). तसे नाहीये. खरी आव्हाने 'मल्टी-टेनन्सी' (multi-tenancy) मध्ये आहेत. प्रत्येक क्वेरी (query) एका प्रश्नाचे उत्तर देते याची तुम्ही खात्री केली पाहिजे: हा डेटा कोणाचा आहे?

जर तुम्ही एक सामान्य दुकान तयार केले आणि नंतर त्यात व्हेंडर्स (vendors) जोडण्याचा प्रयत्न केला, तर तुम्हाला संपूर्ण कोड पुन्हा लिहावा लागेल. तुम्हाला प्रत्येक मॉडेल, प्रत्येक क्वेरी आणि प्रत्येक कार्टमध्ये 'व्हेंडर आयडी' (vendor ID) गुंफून न्यावा लागेल. जर तुम्ही एक फिल्टरही विसरलात, तर एका विक्रेत्याला दुसऱ्या विक्रेत्याचे ऑर्डर्स दिसू शकतात. ही एक 'डेटा लीक' (data leak) आहे.

तुमच्याकडे तीन पर्याय आहेत:

  • स्वतः तयार करा: तुम्हाला प्रत्येक 'स्कोपिंग क्लॉज' (scoping clause) स्वतः लिहावा लागेल. हे खर्चिक आणि जोखमीचे आहे.
  • ॲड-ऑन्ससह सिंगल-टेनंट दुकान वापरा: तुम्ही अशा स्कीमावर (schema) व्हेंडर कॉलम्स जोडता जो त्यांच्यासाठी डिझाइन केलेला नाही. यामुळे डेटाचे विलगीकरण (isolation) कमकुवत राहते.
  • मल्टी-टेनंट फाउंडेशन वापरा: Aimeos सारखे पॅकेज वापरा जे पहिल्या दिवसापासून डेटा मॉडेलमध्येच विलगीकरण (isolation) तयार करते.

Aimeos वापरून एका साध्या दुकानाला मार्केटप्लेसमध्ये कसे रूपांतरित करायचे ते खालीलप्रमाणे आहे:

  1. फाउंडेशन इन्स्टॉल करा सुरुवात करण्यासाठी ही कमांड चालवा: composer create-project aimeos/aimeos myshop

  2. मल्टी-व्हेंडर मोड सक्षम करा तुम्हाला तुमचा डेटाबेस पुन्हा लिहिण्याची गरज नाही. फक्त तुमच्या .env फाईलमध्ये एक ओळ बदला: SHOP_MULTISHOP=true

हा फ्लॅग (flag) प्रत्येक रूट (route), API आणि ॲडमिन पॅनेलला आपोआप एका विशिष्ट साइटशी जोडतो. सिस्टम तुमच्यासाठी डेटाचे विलगीकरण हाताळते.

  1. सेल्फ-सर्व्हिस ऑनबोर्डिंग सक्षम करा व्यवसाय वाढवण्यासाठी, विक्रेत्यांना स्वतःची नोंदणी करू द्या. तुमच्या .env मध्ये हे जोडा: SHOP_REGISTRATION=true

नवीन विक्रेत्यांना फक्त त्यांच्या स्वतःच्या कॅटलॉग, ऑर्डर्स आणि ग्राहकांचा प्रवेश मिळतो. ते इतर काहीही पाहू शकत नाहीत.

हे का काम करते: Aimeos सर्व काही "site" च्या भोवती आयोजित करते. प्रत्येक उत्पादन, किंमत आणि ऑर्डरसोबत 'site ID' असतो. डेटा लेयर हे आपोआप फिल्टर करते. तुम्हाला "where site_id = ?" असे लिहिण्याची गरज नाही कारण सिस्टम ते तुमच्यासाठी करते.

हा दृष्टिकोन तीन मुख्य समस्या सोडवतो:

  • सुरक्षा: डेटा विलगीकरण (Data isolation) हा डेटाबेसचा एक गुणधर्म आहे, तो कोडचा असा भाग नाही जो तुम्ही विसरू शकता.
  • जटिलता: तुम्ही स्कीमा न बदलता विक्रेते सबस्क्रिप्शन किंवा बंडल सारखी जटिल उत्पादने व्यवस्थापित करू शकतात.
  • पेमेंट्स: तुम्ही पेमेंट त्वरित विभागण्यासाठी Stripe सारखे एक्स्टेंशन वापरू शकता. प्लॅटफॉर्म कमिशन घेते आणि उर्वरित रक्कम विक्रेत्याला मिळते.

प्लंबिंग (plumbing) बनवणे थांबवा. तुमचे मार्केटप्लेस तयार करण्यास सुरुवात करा.

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