SalamPet: سایت مراقبت از حیوانات خانگی، پنل کسبوکارها و پنل مدیریت
SalamPet پلتفرمی برای مراقبت از حیوانات خانگی در امارات است؛ قرار است رزرو دامپزشکی، آرایش و نظافت، پانسیون، آموزش و پتتاکسی را یکجا و با قیمت اعضا ممکن کند و بنیانگذارانش میخواهند آن را به سوپراپ حیوانات خانگی تبدیل کنند. ما نسخهٔ ۰٫۱ آن را ساختیم: سایتی که صاحبان حیوانات از آن استفاده خواهند کرد، بهعلاوهٔ پنل کسبوکارها و پنل مدیریتی که تیم SalamPet با آن کار میکند، هر دو روی یک API.

چالش
بنیانگذاران SalamPet میخواهند صاحبان حیوانات خانگی در امارات جایی داشته باشند که خدمات مراقبت از حیوانشان را در آن با قیمت اعضا پیدا و رزرو کنند، با هر مراجعه امتیاز بگیرند و هنگام پرداخت حضوری کارت عضویتشان را نشان دهند. خواستهٔ آنها در بخش فناوری این بود که کار را با نگاه یک سوپراپ شروع کنیم و زیرساختش را از روز اول بر همین پایه بچینیم، پس نسخهٔ اول نمیتوانست فقط یک سایت باشد. سه بخش لازم بود که از قواعد یکسانی پیروی کنند: سایتی برای صاحبان حیوانات، پنلی که کسبوکارهای دارای مجوز خدماتشان را در آن ثبت و رزروهایشان را مدیریت کنند، و پنلی که تیم SalamPet در آن کسبوکارها و تخفیفها را تأیید، نوشتههای کاربران را بررسی و طلب هر کسبوکار را حساب کند. پلتفرم حیوانات خانگی باید مراقب نوشتهها هم باشد: حیوانی که برای فروش گذاشته شده، دارویی که بدون نسخه پیشنهاد میشود یا شمارهٔ تلفنی در یک نظر، باید پیش از آنکه به چشم کسی برسد شناسایی شود.
کاری که کردیم
کار را با نُه سند پژوهشی و طرح جامع شروع کردیم، از جمله معماری فنی و مشخصات هر دو پنل، و نسخهٔ ۰٫۱ را بر پایهٔ آنها در یک کدبیس TypeScript ساختیم: یک API با NestJS روی PostgreSQL، دو پنل Next.js که نقشها، وضعیتها و قواعد اعتبارسنجی را از یک تعریف مشترک میگیرند، و سایت مشتریان که از همان سیستم طراحی پنلها استفاده میکند. هر خدمتی که کسبوکاری ثبت میکند با یکی از هشت شیوهٔ رزرو تعریف میشود، از نوبت زمانی و اقامت شبانه تا اعزام به محل مشتری، استعلام قیمت یا بلیت، و معماری قرار است بر همین پایه انواع تازهٔ مراقبت را با تنظیمات اضافه کند نه با کد تازه؛ هر خدمت هم سه قیمت دارد: قیمت عادی کسبوکار، قیمت SalamPet و قیمتی پایینتر برای اعضا. کسبوکار ثبتنام میکند، مشخصات، ساعت کاری و خدماتش را وارد میکند، مجوز تجاری و ثبت شهرداریاش را در فضای ذخیرهسازی خصوصی بارگذاری میکند و پروندهاش را برای بررسی میفرستد؛ تیم آن را تأیید، با ذکر دلیل رد یا تعلیق میکند و هر تخفیف را هم پیش از انتشار بررسی میکند. پای صندوق، کارمند کد کارت عضو را وارد میکند، سطح عضویت و نام کوتاهشدهٔ عضو را میبیند و صورتحساب را ثبت میکند، و امتیازها در دفتری مینشینند که فقط ردیف تازه میپذیرد و هیچ ردیفی در آن ویرایش نمیشود. نقشها یک بار تعریف شدهاند و API آنها را اعمال میکند، توکنهای ورود در کوکیهایی نگه داشته میشوند که اسکریپتهای مرورگر نمیتوانند آنها را بخوانند، هر اقدام حساس در گزارش ممیزی ثبت میشود، و فیلتر کلمات که به انگلیسی، عربی و فارسی کار میکند، با شکلهای گوناگون حروف عربی و فارسی، فاصله انداختن میان حروف یا ارقام فارسی و عربی فریب نمیخورد و شمارهٔ تلفن امارات، لینک، نشانی ایمیل، شمارهٔ کارت شناسایی امارات و شمارهٔ IBAN را همیشه علامت میزند. سایت با ظاهری چیده شده که بنیانگذاران انتخاب کردند، یعنی پسزمینهٔ کرم گرم و حیوانات دوربریشده روی قوسهای رنگی؛ برای پر کردن آن، ۲۰ عکس دوربریشدهای را که بنیانگذاران از حیوانات فرستاده بودند تمیزکاری کردیم و از هشت عکس، برش دایرهای چهره هم درآوردیم.
چه چیزی ساختیم
- پنل کسبوکارها و پنل مدیریت روی یک API
- هر خدمت با یکی از هشت شیوهٔ رزرو
- سه قیمت برای هر خدمت: عادی، SalamPet و ویژهٔ اعضا
- کارت عضویتی که در پرداخت حضوری امتیاز اضافه میکند
- فقط کسبوکارهای دارای مجوز، با بررسی تیم پیش از انتشار
- فیلتر کلمات به انگلیسی، عربی و فارسی
نتیجه
سایت در ۱۹ اکتبر ۲۰۲۶ بالا آمد و API و هر دو پنل روز بعد روی پروداکشن رفتند، بیآنکه هیچ دادهٔ نمایشیای همراهشان باشد. سایت ۱۹ صفحه دارد: صفحهٔ اصلی، صفحهٔ معرفی خدمات، هفت دستهٔ مراقبت، شش صفحهٔ کسبوکار، تخفیفها، صفحهٔ فروشگاه، باشگاه SalamPet و صفحهای برای کسبوکارها که به ثبتنام در پنل کسبوکارها میرسد. پشت صفحهٔ ورود، دو پنل ۲۹ صفحه دارند، پنل کسبوکارها به انگلیسی و عربی و پنل مدیریت به انگلیسی و فارسی، و روی ۷۹ مسیر API و ۲۱ جدول پایگاه داده کار میکنند. تا زمانی که کسبوکارهای واقعی به پلتفرم بپیوندند، کسبوکارها، قیمتها، تخفیفها و نظرهای روی سایت محتوای نمونهاند، برای همین سایت از موتورهای جستوجو میخواهد آن را ایندکس نکنند. گامهای بعدی در فهرست خود پروژه اینهاست: بخش مشتری در API، اتصال سایت به آن، اپلیکیشن موبایل و پرداخت، در مسیر سوپراپی که بنیانگذاران در نظر دارند.
بخشهای سیستم
سایت مشتریان
سایتی که صاحبان حیوانات با آن روبهرو میشوند، با ظاهری که بنیانگذاران انتخاب کردند: جستوجو بر اساس نوع مراقبت و محله، هفت دسته که میشود آنها را بر اساس محله و نوع حیوان فیلتر و بر اساس امتیاز، قیمت یا تعداد رزرو مرتب کرد، صفحهای برای هر کسبوکار با خدماتش و سه قیمت هر خدمت، تخفیفها، صفحهٔ فروشگاه، باشگاه سهسطحی SalamPet و صفحهای برای کسبوکارها که به ثبتنام در پنل کسبوکارها میرسد. هر تصویر جایگاهی با نام مشخص دارد، پس برای عوض کردن یک عکس کافی است فایلی با همان نام گذاشته شود، بیآنکه دستی به کد بخورد. کسبوکارها، قیمتها و نظرهای این سایت تا زمانی که کسبوکارهای واقعی بپیوندند و سایت به API وصل شود، محتوای نمونهاند.




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




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



چیز مشابهی در ذهن دارید؟
بریف را بفرستید. صادقانه میگوییم که استودیوی مناسبش هستیم یا نه.
تا مسئله را نفهمیم، هیچ ارائهای نمیفرستیم.
hello@4ai.ae