/case study

پلتفرم فروش آنلاین داروخانه صبا

یک پلتفرم فروش آنلاین برای داروخانه صبا که از محدودیت‌های یک ساختار WooCommerce قدیمی به سمت معماری اختصاصی، API محور و قابل نگهداری حرکت می‌کند.

01SABADS

Commerce Platform

  • Nuxt 4
  • TypeScript
  • Pinia
  • Laravel 13
  • PHP 8.4
  • PostgreSQL
وضعیت
در حال توسعه
نقش
معماری، بک‌اند، فرانت‌اند و زیرساخت
سال
۱۴۰۴
نوع پروژه
Commerce Platform
01

مسئله

فروش آنلاین داروخانه صبا به کنترل دقیق‌تری روی محصول، موجودی، قیمت، سفارش و اتصال به سیستم تامین موجودی نیاز داشت؛ چیزی که در ساختار WooCommerce قبلی با هزینه نگهداری و محدودیت‌های زیاد همراه بود.

02

راه‌حل

مسیر پروژه به سمت یک پلتفرم اختصاصی با فرانت‌اند Nuxt، بک‌اند Laravel، دیتابیس PostgreSQL و استقرار کانتینری رفت تا منطق محصول، سفارش، جست‌وجو و همگام‌سازی موجودی قابل توضیح و قابل توسعه باشد.

03

معماری

معماری پروژه به صورت فرانت‌اند و بک‌اند جدا، API محور، با دامنه‌های مشخص برای محصول، موجودی، سفارش، پرداخت، ارسال، گزارش‌گیری و مدیریت تعریف شده است.

04

خروجی فعلی

نتیجه فعلی، مالکیت روشن‌تر روی منطق تجاری فروشگاه، مرزهای فنی تمیزتر، امکان اتصال بهتر به منابع موجودی و زیرساخت مناسب‌تر برای انتشار کنترل‌شده است. نتایج عددی باید بعد از اندازه‌گیری واقعی تکمیل شوند.

/system map

نقشه ساده معماری

این دیاگرام ساختار مفهومی پروژه را نشان می‌دهد، نه جزئیات محرمانه زیرساخت.

  1. Userخریدار / مدیر
  2. Nuxt 4Storefront + admin flows
  3. Laravel 13 APIDomain logic
  4. PostgreSQLCommerce data

Connected services

  • Redis
  • Meilisearch
  • RPSI
  • Payment
  • Storage

Infrastructure

  • Docker
  • Kubernetes
  • Nginx
  • Drone CI
  • Gitea

/commerce domain

دامنه تجارت، موجودی و سفارش

آنچه در دامنه دیده می‌شود

  • معماری API محور با مرزبندی محصول، سفارش و موجودی
  • همگام‌سازی قیمت و موجودی با RPSI
  • جست‌وجو و فیلترینگ محصول با Meilisearch
  • زیرساخت کانتینری با Docker، Kubernetes و Drone CI
  • توجه به SEO فنی، گزارش‌گیری، ورود/خروج داده و لاگ عملیات

محدودیت‌های واقعی

  • هماهنگی قیمت و موجودی با RPSI بر اساس SKU
  • محصولات ساده و متغیر با قیمت و موجودی جداگانه برای هر واریانت
  • نیاز به زمان‌بندی شمسی و منطق تاریخ فارسی در بخش‌های مدیریتی
  • محدودیت‌های منابع در محیط Kubernetes و نیاز به پیکربندی دقیق runtime
  • سازگاری نسخه‌های Meilisearch و کلاینت‌های مرتبط

/what I worked on

بخش‌هایی که روی آن‌ها کار شده است

  1. 01طراحی دامنه محصول، دسته‌بندی، برند، ویژگی‌ها و محصولات متغیر
  2. 02پیاده‌سازی منطق قیمت و موجودی مبتنی بر SKU
  3. 03طراحی جریان سبد خرید، سفارش، پرداخت، ارسال و پیگیری سفارش
  4. 04طراحی نقش‌ها، دسترسی‌ها، لاگ عملیات و بخش‌های مدیریتی
  5. 05هماهنگی فرانت‌اند Nuxt با APIهای Laravel
  6. 06آماده‌سازی Docker، Kubernetes، Nginx و CI/CD
  7. 07بررسی مهاجرت از WooCommerce و کنترل ریسک‌های داده

خلاصه

داروخانه صبا یک کسب‌وکار داروخانه‌ای با فروش حضوری و آنلاین است. فروشگاه آنلاین آن روی محصولات داروخانه‌ای، به‌ویژه مکمل‌های ورزشی و کالاهای مرتبط، تمرکز دارد و برای ادامه رشد به کنترل دقیق‌تری روی دامنه تجارت الکترونیک نیاز پیدا کرد.

هدف پروژه، ساخت یک پلتفرم اختصاصی بود که منطق محصول، قیمت، موجودی، سفارش، پرداخت و زیرساخت را از حالت وابسته به افزونه‌ها خارج کند و به ساختاری قابل نگهداری‌تر برساند.

مسئله

ساختار قدیمی WooCommerce برای شروع فروش آنلاین مفید بود، اما با بزرگ‌تر شدن نیازها، بخشی از تصمیم‌های فنی به محدودیت تبدیل شد. محصول ساده و متغیر، موجودی مبتنی بر SKU، اتصال به تامین‌کننده موجودی و قیمت، گزارش‌گیری و کنترل دقیق جریان سفارش نیاز به دامنه اختصاصی داشت.

مسئله اصلی فقط بازنویسی نبود. تصمیم مهم این بود که کدام بخش‌ها باید از نو طراحی شوند، داده موجود چطور مهاجرت کند، و مسیر توسعه بدون ادعای بی‌پایه درباره مقیاس‌پذیری حفظ شود.

معماری

معماری پروژه به صورت یک فرانت‌اند Nuxt و بک‌اند Laravel طراحی شده است. بک‌اند مسئول منطق دامنه، API، ارتباط با PostgreSQL، همگام‌سازی موجودی و قیمت، جریان سفارش، پرداخت، گزارش‌گیری و بخش‌های مدیریتی است.

فرانت‌اند روی تجربه خرید، مشاهده محصول، فیلترها، حساب کاربری و جریان سفارش تمرکز دارد. این جداسازی باعث می‌شود تغییرات تجربه کاربری و تغییرات دامنه بک‌اند با مرز روشن‌تری انجام شوند.

دامنه تجارت

بخش محصول فقط یک لیست ساده نیست. مدل داده باید برند، دسته‌بندی تو در تو، ویژگی‌های پویا، محصول ساده، محصول متغیر، قیمت و موجودی هر واریانت و قوانین نمایش‌پذیری را پشتیبانی کند.

در سمت سفارش، جریان مهم شامل سبد خرید، خرید مهمان، اتصال سفارش یا سبد خرید مهمان به حساب کاربری در صورت ورود، پرداخت، ثبت موجودی بعد از موفقیت پرداخت، ارسال، پیگیری سفارش و سفارش دستی مدیریتی است.

اتصال RPSI

RPSI قیمت و موجودی را بر اساس SKU تامین می‌کند. چالش اصلی این اتصال، نگاشت درست SKUها به محصول یا واریانت، مدیریت تغییرات موجودی، و کنترل محصولاتی است که منطق قیمت‌گذاری واحدی متفاوت دارند.

در چنین اتصالی خطا فقط یک خطای فنی نیست؛ می‌تواند به نمایش قیمت یا موجودی نادرست در فروشگاه منجر شود. به همین دلیل همگام‌سازی باید قابل بررسی، قابل تکرار و قابل عیب‌یابی باشد.

زیرساخت

زیرساخت پروژه با Docker و Kubernetes آماده شده و Nginx در لایه وب قرار می‌گیرد. مسیر CI/CD با Drone CI و Gitea طراحی شده و استقرار روی محیط ابری انجام می‌شود.

در این سطح، جزئیاتی مثل timeout صف‌ها، محدودیت منابع Kubernetes، registry خصوصی، سازگاری نسخه Meilisearch و پیکربندی runtime روی کیفیت واقعی سیستم اثر مستقیم دارند.

وضعیت فعلی

پروژه در حال توسعه و تکامل است. بخش‌هایی از دامنه و زیرساخت در مسیر پیاده‌سازی، اصلاح و بازبینی قرار دارند. هر نتیجه عددی یا ادعای عملکردی باید بعد از اندازه‌گیری واقعی به این مطالعه موردی اضافه شود.

/contact

اگر پروژه شما هم به معماری روشن نیاز دارد، از همین‌جا شروع کنیم.