مستر پای وب

توسعه وب‌سایت، وب‌اپلیکیشن و سیستم‌های سازمانی
بازگشت به نمونه‌کارها
وب‌سایت فروشگاهی چندفروشندگی و سیستم نوبت‌دهی آنلاین مهدیس

وب‌سایت فروشگاهی چندفروشندگی و سیستم نوبت‌دهی آنلاین مهدیس

وب‌سایت «مهدیس» یک پلتفرم جامع آنلاین است که با هدف ارائه خدمات در حوزه زیبایی و آرایشی طراحی و پیاده‌سازی شده است. این سایت دو سرویس اصلی را در یک بستر واحد ادغام می‌کند: فروشگاه اینترنتی لوازم آرایشی و بهداشتی به‌صور…

Overview

درباره پروژه

وب‌سایت «مهدیس» یک پلتفرم جامع آنلاین است که با هدف ارائه خدمات در حوزه زیبایی و آرایشی طراحی و پیاده‌سازی شده است.
این سایت دو سرویس اصلی را در یک بستر واحد ادغام می‌کند: فروشگاه اینترنتی لوازم آرایشی و بهداشتی به‌صورت چندفروشندگی (Multi-Vendor) با پنل اختصاصی برای هر فروشنده، و سیستم نوبت‌دهی آنلاین آرایشگاه‌ها با امکان مدیریت زمان‌بندی، لیست قیمت و رزرو نوبت توسط مشتریان.
پروژه با Django 4.2، MySQL و Bootstrap 5 (RTL) توسعه یافته و شامل ۱۰ اپلیکیشن ماژولار و بیش از ۵۰ صفحه اختصاصی است.
سیستم دارای ۵ سطح دسترسی متفاوت (مدیر کل، فروشنده، آرایشگر، پاسخگو و کاربر عادی) با احراز هویت پیامکی (OTP) از طریق سرویس قاصدک می‌باشد.
درگاه‌های پرداخت سپهر و زرین‌پال به‌صورت کامل پیاده‌سازی شده و امکان پرداخت آنلاین و مدیریت تراکنش‌ها فراهم است.
قابلیت‌های دیگر شامل کیف پول و درخواست واریز، سیستم مشاوره آنلاین/تلفنی/حضوری، بخش سئو با مقالات، سوالات، ویدئوها و تجربیات کاربران، و خروجی Excel برای گزارش‌گیری مدیریتی است.
طراحی معماری به‌صورت ماژولار و مقیاس‌پذیر انجام شده و اصول امنیتی مانند CSRF Protection، XSS Prevention و SQL Injection Prevention در تمام بخش‌ها رعایت شده است.
پنل مدیریت جامع امکان کنترل کاربران، فروشگاه‌ها، آرایشگاه‌ها، سفارشات، محصولات و گزارش‌های مالی را در اختیار مدیران قرار می‌دهد.
این پروژه در حال حاضر به‌صورت آنلاین و فعال در آدرس mahdiss.com در دسترس عموم قرار دارد.

Case Study

مطالعه موردی پروژه

چالش‌ها، راهکارها، دستاوردها، نکات فنی، معماری و مقیاس پروژه

⚡

چالش‌ها

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

پیاده‌سازی همزمان دو درگاه پرداخت سپهر و زرین‌پال با ساختارهای متفاوت، از طریق Service Layer مستقل و مدیریت اختصاصی Callback انجام شد. پشتیبانی کامل از تاریخ شمسی در تمام بخش‌ها با کتابخانه‌های persiantools و ذخیره‌سازی دوگانه (میلادی + شمسی) پیاده‌سازی گردید.

سیستم احراز هویت با OTP پیامکی از طریق سرویس قاصدک، و مدیریت ۵ سطح دسترسی با فیلدهای Boolean و بررسی دقیق Permission در هر view، امنیت و انعطاف‌پذیری لازم را فراهم کرد. طراحی ۳ Layout مستقل (پنل، سایت، سئو) و مدیریت ۴ نوع محتوای متفاوت (مقاله، سوال، ویدئو، تجربه) در یک مدل واحد با فیلد type، از دیگر چالش‌های مهم پروژه بودند.

امنیت تراکنش‌های مالی با بررسی تکراری نبودن کد پیگیری، استفاده از UUID برای InvoiceID و تطبیق مبلغ در مرحله Advice تأمین شد. مقیاس‌پذیری نیز با بهینه‌سازی کوئری‌ها، استفاده از select_related و کش کردن نتایج پرتکرار محقق گردید.

💡

راه‌حل‌ها

پروژه بر پایه معماری ماژولار با ۱۰ اپلیکیشن مستقل Django طراحی شده و مدل User به‌عنوان نقطه اتصال مرکزی بین تمام سرویس‌ها عمل می‌کند. سیستم احراز هویت با OTP پیامکی ۴ رقمی از طریق سرویس قاصدک و ذخیره کد در فیلد random_pass پیاده‌سازی شده است.

مدیریت ۵ سطح دسترسی با فیلدهای Boolean در مدل User و بررسی دقیق Permission در ابتدای هر view انجام می‌شود. تمام viewها از الگوی یکپارچه @login_required + is_ajax() + پارامتر i=action_name + JsonResponse پیروی می‌کنند که نگهداری کد را ساده می‌کند.

موجودی محصولات در حالت Multi-Vendor با مدل Owners و فیلدهای owner_id، color، size و scent به‌صورت مستقل برای هر ترکیب مدیریت می‌شود. درگاه‌های پرداخت سپهر و زرین‌پال با Service Layer مستقل، مدیریت Session، تأیید Advice و بررسی تطابق مبلغ پیاده‌سازی شده‌اند.

پشتیبانی از تاریخ شمسی با کتابخانه‌های persiantools و ذخیره دوگانه (میلادی + شمسی) در فیلد jalil_record_data انجام می‌شود. سیستم پیامک خودکار با توابع مستقل برای هر موقعیت (ثبت‌نام، ورود، سفارش، واریز) و قالب‌های پویا در myclass.py طراحی شده است.

سیستم مشاوره گفتگویی چندمرحله‌ای با مدل Counseling و اتصال ManyToMany به Conversation، امکان ارسال فایل، ادامه گفتگو و آرشیو خودکار را فراهم می‌کند. سیستم سئو با مدل واحد Seo و فیلد type (مقاله، سوال، تجربه، ویدئو) و فیلدهای اختصاصی هر نوع، مدیریت محتوا را یکپارچه کرده است.

سه Layout اختصاصی (shared_panel, shared_index, shared_seo) با کامپوننت‌های مشترک، تنوع بصری را بدون تکرار کد فراهم می‌کنند. امنیت مالی با UUID برای InvoiceID، بررسی تکراری نبودن کد پیگیری و تطبیق مبلغ در مرحله Advice تأمین شده است.

📚

دستاوردها

پروژه مهدیس به‌صورت کامل و آنلاین در آدرس mahdiss.com راه‌اندازی شده و یک پلتفرم یکپارچه برای فروش لوازم آرایشی و نوبت‌دهی آرایشگاه ارائه می‌دهد. این پروژه شامل ۱۰ اپلیکیشن ماژولار Django، بیش از ۵۰ صفحه اختصاصی، ۲۵+ مدل داده‌ای و ۵ سطح دسترسی کاربری است که در قالب ۳ Layout متفاوت پیاده‌سازی شده‌اند.

از نظر فنی، دو درگاه پرداخت معتبر (سپهر و زرین‌پال) با موفقیت ادغام شده‌اند، سیستم احراز هویت OTP پیامکی فعال است، و امکاناتی نظیر کیف پول، مشاوره آنلاین، سئو، گزارش‌گیری Excel و پیامک خودکار به‌طور کامل پیاده‌سازی شده‌اند. امنیت سیستم با رعایت اصول CSRF Protection، XSS Prevention و SQL Injection Prevention در تمام بخش‌ها تأمین شده است.

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

🔧

نکات فنی برجسته

پروژه مهدیس بر پایه Django 4.2.6 (LTS) با دیتابیس MySQL و رابط کاربری Bootstrap 5 (RTL) پیاده‌سازی شده و از معماری ماژولار با ۱۰ اپلیکیشن مستقل بهره می‌برد. تمام viewها از الگوی یکپارچه @login_required + is_ajax() + پارامتر i=action_name + JsonResponse پیروی می‌کنند که توسعه و نگهداری را ساده‌تر می‌کند.

سیستم احراز هویت بر پایه OTP پیامکی با سرویس قاصدک و ذخیره کد در فیلد random_pass طراحی شده، و مدیریت دسترسی‌ها با ۵ سطح Boolean Flag (admin_access, shop_access, barber_access, response_access, is_superuser) در ابتدای هر view بررسی می‌شود. درگاه‌های پرداخت سپهر (با GetToken/Advice/Session) و زرین‌پال (با Authority/Verify) هرکدام در Service Layer مستقل پیاده‌سازی شده‌اند.

پشتیبانی از تاریخ شمسی با کتابخانه‌های persiantools و django-jalali به‌صورت ذخیره دوگانه (میلادی + شمسی در jalil_record_data) انجام می‌شود. سیستم پیامک خودکار با توابع مستقل در myclass.py برای هر موقعیت (ثبت‌نام، ورود، سفارش، واریز) و قالب‌های پویا طراحی شده است.

در بخش سئو، از مدل واحد Seo با فیلد type برای تفکیک چهار نوع محتوا (مقاله، سوال، تجربه، ویدئو) استفاده شده و فیلدهای اختصاصی هر نوع (نتیجه پرونده، video_id، state، city) به‌صورت شرطی به‌کار می‌روند. سه Layout اختصاصی (shared_panel, shared_index, shared_seo) با کامپوننت‌های مشترک، تنوع بصری را بدون تکرار کد فراهم می‌کنند.

امنیت مالی با استفاده از UUID برای InvoiceID یکتا، بررسی تکراری نبودن کد پیگیری (digitalreceipt/ref_id)، تطبیق مبلغ در مرحله Advice و استفاده از csrf_exempt فقط برای Callback درگاه تأمین شده است. مقیاس‌پذیری نیز با بهینه‌سازی کوئری‌ها (select_related، prefetch_related) و کش کردن نتایج پرتکرار محقق گردیده است.

🏗️

معماری پروژه

پروژه مهدیس بر پایه معماری ماژولار (Modular Architecture) طراحی شده و به ۱۰ اپلیکیشن مستقل Django تقسیم شده است: account (کاربران)، barber (آرایشگاه‌ها)، product (محصولات)، cart (سبد خرید)، marketing (بازاریابی)، payment (درگاه سپهر)، zarinpal (درگاه زرین‌پال)، site_profile (پروفایل سایت)، seo (مدیریت محتوا) و resume (رزومه‌ها). هر اپ مسئولیت مشخصی دارد و مدل User به‌عنوان نقطه اتصال مرکزی بین تمام سرویس‌ها عمل می‌کند.

ارتباط بین اپلیکیشن‌ها از طریق ForeignKey و ManyToMany برقرار می‌شود؛ مثلاً Products از طریق owner_shoper_id به User متصل است و موجودی آن در مدل Owners با فیلدهای owner_id، color، size و scent نگهداری می‌شود. لایه نمایش با ۳ Layout اختصاصی (shared_panel، shared_index، shared_seo) و کامپوننت‌های مشترک (header_component، side_bar_component، footer_component، left_pop_up) پیاده‌سازی شده است.

لایه منطق کسب‌وکار در viewها با الگوی یکپارچه @login_required + بررسی Permission + is_ajax() + i=action_name + JsonResponse طراحی شده که نگهداری و توسعه را ساده می‌کند. درگاه‌های پرداخت هرکدام در Service Layer مستقل با منطق اختصاصی (GetToken/Advice برای سپهر و Authority/Verify برای زرین‌پال) پیاده‌سازی شده‌اند.

امنیت با رعایت اصول CSRF Protection، XSS Prevention و SQL Injection Prevention تأمین شده و مقیاس‌پذیری با بهینه‌سازی کوئری‌ها (select_related، prefetch_related) و کش کردن نتایج پرتکرار محقق گردیده است. طراحی کلی به‌گونه‌ای است که افزودن اپلیکیشن جدید یا قابلیت تازه، بدون تأثیر بر سایر بخش‌ها امکان‌پذیر باشد.

📐

مقیاس پروژه

پروژه مهدیس از نظر مقیاس، یک پلتفرم متوسط تا بزرگ محسوب می‌شود که شامل ۱۰ اپلیکیشن مستقل Django، بیش از ۲۵ مدل داده‌ای و حدود ۸۰+ view است. رابط کاربری شامل بیش از ۵۰ صفحه اختصاصی HTML است که در قالب ۳ Layout متفاوت (shared_panel، shared_index، shared_seo) پیاده‌سازی شده‌اند.

سیستم دارای ۵ سطح دسترسی کاربری (مدیر کل، فروشنده، آرایشگر، پاسخگو، کاربر عادی) و ۲ درگاه پرداخت فعال (سپهر و زرین‌پال) است. بخش سئو شامل ۴ نوع محتوا (مقاله، سوال، تجربه، ویدئو) با مدیریت کاملاً مجزا، و پنل مدیریت جامع شامل گزارش‌گیری Excel و کنترل کاربران، محصولات، سفارشات، فروشگاه‌ها و آرایشگاه‌هاست.

از نظر کدنویسی، پروژه شامل بیش از ۱۵,۰۰۰ خط کد در بخش Python و بیش از ۲۰,۰۰۰ خط کد در بخش Templates و Frontend است. دیتابیس شامل بیش از ۳۰ جدول است که با روابط پیچیده ForeignKey و ManyToMany به هم متصل می‌شوند. این پروژه در حال حاضر آنلاین و فعال در آدرس mahdiss.com بوده و آماده‌ی بهره‌برداری تجاری است.

Stack

تکنولوژی‌ها

Bootstrap Django Django REST Framework HTML/CSS JavaScript MySQL Python SQLite
Categories

دسته‌بندی‌ها

پلتفرم استارتاپی پلتفرم خدمات آنلاین پنل مدیریتی / داشبورد سیستم اتوماسیون اداری سیستم CRM سیستم رزرواسیون سیستم نوبت‌دهی وب‌سایت فروشگاهی
Industry

حوزه کسب‌وکار

فروشگاه اینترنتی لوازم آرایشی و بهداشتی — سیستم نوبت‌دهی آنلاین آرایشگاه‌ها
Scope

حوزه فعالیت

تجارت الکترونیک (فروشگاه لوازم آرایشی و بهداشتی) — خدمات آنلاین (نوبت‌دهی آرایشگاه‌ها)
Statistics

آمار پروژه

17
👁️ بازدید
0
❤️ لایک
0
⬇️ دانلود
0
⭐ امتیاز
Metrics

آمارهای سفارشی

شاخص‌های کلیدی عملکرد پروژه

10 اپلیکیشن ماژولار
50+ صفحه اختصاصی
5 سطح دسترسی
2 درگاه پرداخت
35,000+ خط کد
500+ کاربر فعال
Team

اعضای تیم پروژه

افرادی که در این پروژه همکاری داشته‌اند

حسن کاظمی
حسن کاظمی
توسعه‌دهنده Full Stack
Links

لینک‌های مفید

Visuals

تصاویر پروژه

بخش‌هایی از محیط و رابط کاربری پروژه

پروژه مشابهی در ذهن دارید؟

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

شروع یک پروژه