مسئله
فروش آنلاین داروخانه صبا به کنترل دقیقتری روی محصول، موجودی، قیمت، سفارش و اتصال به سیستم تامین موجودی نیاز داشت؛ چیزی که در ساختار WooCommerce قبلی با هزینه نگهداری و محدودیتهای زیاد همراه بود.
/case study
یک پلتفرم فروش آنلاین برای داروخانه صبا که از محدودیتهای یک ساختار WooCommerce قدیمی به سمت معماری اختصاصی، API محور و قابل نگهداری حرکت میکند.
Commerce Platform
فروش آنلاین داروخانه صبا به کنترل دقیقتری روی محصول، موجودی، قیمت، سفارش و اتصال به سیستم تامین موجودی نیاز داشت؛ چیزی که در ساختار WooCommerce قبلی با هزینه نگهداری و محدودیتهای زیاد همراه بود.
مسیر پروژه به سمت یک پلتفرم اختصاصی با فرانتاند Nuxt، بکاند Laravel، دیتابیس PostgreSQL و استقرار کانتینری رفت تا منطق محصول، سفارش، جستوجو و همگامسازی موجودی قابل توضیح و قابل توسعه باشد.
معماری پروژه به صورت فرانتاند و بکاند جدا، API محور، با دامنههای مشخص برای محصول، موجودی، سفارش، پرداخت، ارسال، گزارشگیری و مدیریت تعریف شده است.
نتیجه فعلی، مالکیت روشنتر روی منطق تجاری فروشگاه، مرزهای فنی تمیزتر، امکان اتصال بهتر به منابع موجودی و زیرساخت مناسبتر برای انتشار کنترلشده است. نتایج عددی باید بعد از اندازهگیری واقعی تکمیل شوند.
/system map
این دیاگرام ساختار مفهومی پروژه را نشان میدهد، نه جزئیات محرمانه زیرساخت.
Connected services
Infrastructure
/commerce domain
/what I worked on
داروخانه صبا یک کسبوکار داروخانهای با فروش حضوری و آنلاین است. فروشگاه آنلاین آن روی محصولات داروخانهای، بهویژه مکملهای ورزشی و کالاهای مرتبط، تمرکز دارد و برای ادامه رشد به کنترل دقیقتری روی دامنه تجارت الکترونیک نیاز پیدا کرد.
هدف پروژه، ساخت یک پلتفرم اختصاصی بود که منطق محصول، قیمت، موجودی، سفارش، پرداخت و زیرساخت را از حالت وابسته به افزونهها خارج کند و به ساختاری قابل نگهداریتر برساند.
ساختار قدیمی WooCommerce برای شروع فروش آنلاین مفید بود، اما با بزرگتر شدن نیازها، بخشی از تصمیمهای فنی به محدودیت تبدیل شد. محصول ساده و متغیر، موجودی مبتنی بر SKU، اتصال به تامینکننده موجودی و قیمت، گزارشگیری و کنترل دقیق جریان سفارش نیاز به دامنه اختصاصی داشت.
مسئله اصلی فقط بازنویسی نبود. تصمیم مهم این بود که کدام بخشها باید از نو طراحی شوند، داده موجود چطور مهاجرت کند، و مسیر توسعه بدون ادعای بیپایه درباره مقیاسپذیری حفظ شود.
معماری پروژه به صورت یک فرانتاند Nuxt و بکاند Laravel طراحی شده است. بکاند مسئول منطق دامنه، API، ارتباط با PostgreSQL، همگامسازی موجودی و قیمت، جریان سفارش، پرداخت، گزارشگیری و بخشهای مدیریتی است.
فرانتاند روی تجربه خرید، مشاهده محصول، فیلترها، حساب کاربری و جریان سفارش تمرکز دارد. این جداسازی باعث میشود تغییرات تجربه کاربری و تغییرات دامنه بکاند با مرز روشنتری انجام شوند.
بخش محصول فقط یک لیست ساده نیست. مدل داده باید برند، دستهبندی تو در تو، ویژگیهای پویا، محصول ساده، محصول متغیر، قیمت و موجودی هر واریانت و قوانین نمایشپذیری را پشتیبانی کند.
در سمت سفارش، جریان مهم شامل سبد خرید، خرید مهمان، اتصال سفارش یا سبد خرید مهمان به حساب کاربری در صورت ورود، پرداخت، ثبت موجودی بعد از موفقیت پرداخت، ارسال، پیگیری سفارش و سفارش دستی مدیریتی است.
RPSI قیمت و موجودی را بر اساس SKU تامین میکند. چالش اصلی این اتصال، نگاشت درست SKUها به محصول یا واریانت، مدیریت تغییرات موجودی، و کنترل محصولاتی است که منطق قیمتگذاری واحدی متفاوت دارند.
در چنین اتصالی خطا فقط یک خطای فنی نیست؛ میتواند به نمایش قیمت یا موجودی نادرست در فروشگاه منجر شود. به همین دلیل همگامسازی باید قابل بررسی، قابل تکرار و قابل عیبیابی باشد.
زیرساخت پروژه با Docker و Kubernetes آماده شده و Nginx در لایه وب قرار میگیرد. مسیر CI/CD با Drone CI و Gitea طراحی شده و استقرار روی محیط ابری انجام میشود.
در این سطح، جزئیاتی مثل timeout صفها، محدودیت منابع Kubernetes، registry خصوصی، سازگاری نسخه Meilisearch و پیکربندی runtime روی کیفیت واقعی سیستم اثر مستقیم دارند.
پروژه در حال توسعه و تکامل است. بخشهایی از دامنه و زیرساخت در مسیر پیادهسازی، اصلاح و بازبینی قرار دارند. هر نتیجه عددی یا ادعای عملکردی باید بعد از اندازهگیری واقعی به این مطالعه موردی اضافه شود.