سیستم مدیریت هتل و صفحه‌ساز ابریتوسعه‌دهنده و معمار فرانت‌اند (Rendering Engine & Visual Builder Lead)

پلتفرم SaaS مدیریت هتل و Page Builder اختصاصی (Expocore)

پلتفرم Expocore یک محصول جامع SaaS برای مدیریت هتل‌ها و کسب‌وکارها است که به مدیران هتل امکان می‌دهد بدون نیاز به دانش برنامه‌نویسی، وب‌سایت، محتوا و سیستم رزرواسیون آنلاین خود را از طریق یک داشبورد یکپارچه مدیریت کنند. هسته اصلی این محصول یک Visual Page Builder اختصاصی و پیشرفته است که امکان ساخت و ویرایش ساختار و ظاهر وب‌سایت را به صورت Drag-and-Drop با ساختار درختی عمیق فراهم می‌کند.

نمای کلی پروژه Expocore

خلاصه پروژه در یک نگاه

نقش من
توسعه‌دهنده و معمار فرانت‌اند (Rendering Engine & Visual Builder Lead)
نوع محصول
SaaS & Visual Page Builder
تکنولوژی‌های کلیدی
Next.js (App Router)، React 19، TypeScript، Zustand & State Design، Zod Schema Validation، Tailwind CSS
مستندات بصری
۵ نما

مسئله و نقش من

چرا این محصول ساخته شد و دقیقاً کدام بخش‌ها بر عهده من بود.

چالش اصلی محصول

بزرگترین چالش مهندسی در پلتفرم Expocore، ایجاد تعادل میان انعطاف‌پذیری برای کاربران نهایی و حفظ پرفورمنس و یکپارچگی سیستم بود. ما باید ابزاری طراحی می‌کردیم که به اپراتورهای هتل اجازه دهد صفحات وب‌سایت خود را به صورت بصری طراحی کنند، تنظیمات المان‌ها را تغییر دهند و استایل‌های دلخواه اعمال کنند؛ اما همزمان خروجی نهایی باید از نظر ساختار داده کاملاً معتبر (Valid)، از نظر SEO بهینه‌شده و در محیط Storefront دارای بالاترین سرعت Rendering باشد.

نقش و مسئولیت‌های من

در این پروژه به همراه تیم مهندسی، معماری و ساختار کلی سیستم را طراحی کردیم. توسعه و رهبری مستقیم موتور رندرینگ (Rendering Engine) و صفحه‌ساز بصری (Visual Page Builder) مستقیماً بر عهده من بود. همچنین پیاده‌سازی بخش‌های یکپارچه‌سازی فرانت‌اند (Frontend Integration) برای سیستم مدیریت رزرو هتل و جریان‌های کاری تولید محتوای AI را انجام دادم.

ویژگی‌های کلیدی

۶ مورد از مهم‌ترین دستاوردهای فنی این پروژه.

  • توسعه موتور رندرینگ اختصاصی و Visual Page Builder با ساختار درختی تو‌در‌تو (Deeply Nested JSON)
  • اعتبارسنجی یکپارچه ساختار داده‌ها و تنظیمات هر بلاک با Zod Schema به عنوان منبع حقیقت (Source of Truth)
  • بهینه‌سازی پرفورمنس و ایزولاسیون چرخه Re-render با Zustand جهت حفظ بیشترین نرخ فریم در ادیتور
  • معماری استورفرانت با Next.js SSG و مکانیزم On-demand Cache Revalidation برای لود فوق‌سریع صفحات
  • یکپارچه‌سازی ویرایشگر Scoped Custom CSS با CodeMirror برای استایل‌دهی پیشرفته با دامنه امن
  • معماری Monorepo بر بستر pnpm workspaces با پکیج‌های اشتراکی اسکیما، پیج‌بیلدر، کانفیگ و کامپوننت‌های UI

چالش‌های مهندسی و راه‌حل‌ها

مسائلی که در مسیر توسعه پیش آمد و تصمیم فنی‌ای که برای هرکدام گرفته شد.

معماری State در صفحه‌ساز و روابط کامپوننت‌ها (Element Relations)

ساختار صفحات به صورت یک درخت عمیق و تو در تو (Deeply Nested JSON) ذخیره می‌شد. مدیریت Drag-and-Drop، پیاده‌سازی قوانین روابط المان‌ها (اینکه هر کامپوننت چه فرزندانی را می‌پذیرد) و اعتبارسنجی تنظیمات بسیار پیچیده بود. با به‌کارگیری dnd-kit برای درگ اند دراپ و Zod برای اعتبارسنجی ساختار داده‌ها و تنظیمات هر بلاک، موتور صفحه‌ساز به صورت هوشمند تشخیص می‌دهد که قرار دادن یک المان خاص درون المان دیگر مجاز است یا خیر.

بهینه‌سازی پرفورمنس و جلوگیری از افت فریم (FPS) در Visual Editor

به دلیل ساختار تودرتوی درخت کامپوننت‌ها، هر تغییر در State (مانند کشیدن یک المان یا تغییر تنظیمات رنگ) می‌توانست باعث Re-render شدن کل درخت شود که منجر به افت شدید فریم‌ریت در مرورگر می‌شد. با استفاده از Zustand برای State Management و بهینه‌سازی دقیق چرخه Re-render در React، موتور رندرینگ به گونه‌ای توسعه داده شد که فقط کامپوننت‌های هدف و گره‌های درگیر در تغییرات Re-render شوند و پرفورمنس ادیتور همیشه در بالاترین حد باقی بماند.

استراتژی Rendering و یکپارچگی با Storefront با داده‌های داینامیک و استاتیک

ساختار JSON تولید شده در داشبورد باید در سمت کاربر (Storefront) با بالاترین سرعت نمایش داده می‌شد، در حالی که برخی از داده‌ها ماهیت داینامیک داشتند (مثل وضعیت رزروها). معماری سمت Storefront بر اساس Next.js SSG بنا شد تا صفحات به صورت Static لود شوند. با پیاده‌سازی سیستم On-demand Revalidation، با هر بار ذخیره در Editor کش صفحات منقضی و Revalidate می‌شود و بخش‌های نیازمند داده‌های لحظه‌ای با رویکرد داینامیک (SSR/CSR) مدیریت شدند.

معماری Monorepo و پکیج‌های اشتراکی

جداسازی مسئولیت‌ها از طریق پکیج‌های مشترک فضای کاری (pnpm workspaces).

@hotel-saas/schema

شامل Zod Schemaها که اطمینان می‌دهد داشبورد دقیقاً همان ساختار داده‌ای معتبری را تولید می‌کند که موتور Next.js انتظار رندر کردن آن را دارد.

@hotel-saas/page-builder

منطق پایه رندرینگ، قوانین روابط المان‌ها (Element Relations) و تایپ‌های مشترک میان محیط ویرایشگر و رندر نهایی وب‌سایت.

@hotel-saas/config

پیکربندی‌ها و استانداردهای اشتراکی شامل کانفیگ‌های TypeScript، قوانین لینتر Biome و تنظیمات بیلد.

@hotel-saas/ui

کتابخانه کامپوننت‌های پایه و دیزاین سیستم اشتراکی پلتفرم با استانداردهای دسترسی‌پذیری Radix UI و Tailwind CSS.

امکانات کلیدی محصول

۳ قابلیتی که تجربه کاربری این محصول را شکل می‌دهند.

Advanced Customization

امکانات سفارشی‌سازی پیشرفته: Custom CSS با CodeMirror

برای کاربرانی که نیاز به تغییرات ظاهری پیشرفته‌تری داشتند، قابلیت ادیت Custom CSS در داشبورد با استفاده از CodeMirror پیاده‌سازی شد که Syntax Highlighting زنده ارائه می‌دهد و استایل‌های نوشته شده به صورت امن و ایزوله با دامنه (:scope) به المان‌های مربوطه در Storefront تزریق می‌شوند.

Frontend Integration

یکپارچه‌سازی فرانت‌اند سیستم رزرواسیون و جریان‌های کاری AI

علاوه بر صفحه‌ساز، فرانت‌اند سیستم مدیریت رزرواسیون هتل و جریان‌های کاری هوش مصنوعی در داشبورد پیاده‌سازی شد. سیستم AI به کاربران اجازه می‌دهد تولید محتوای پست‌های وب‌سایت را زمان‌بندی (Schedule) کرده و در شبکه‌های اجتماعی توزیع کنند. رابط کاربری برای نمایش ریسپانسیو در نماهای Desktop، Tablet و Mobile پیاده‌سازی شده است.

Technical SEO

بهینه‌سازی ساختاریافته موتورهای جستجو (Technical SEO)

با توجه به اینکه صفحات به صورت ساختاریافته توسط موتور رندر می‌شوند، SEO تکنیکال پایه در Storefront به صورت توکار پیاده شد. خروجی نهایی Next.js شامل تگ‌های Semantic HTML استاندارد و تولید خودکار Meta Title و Meta Description‌های ضروری برای ایندکس شدن بهینه سایت هتل‌ها در گوگل است.

دستاوردها و نتایج

بزرگترین دستاورد من در این پروژه، مهندسی و پیاده‌سازی موفقیت‌آمیز یک سیستم Rendering قدرتمند و متناسب با نیازمندی‌های یک ساختار SaaS بود. طراحی مکانیزمی که در آن روابط بین کامپوننت‌ها به شکل ایزوله از طریق Schema کنترل می‌شود، و مدیریت همزمانِ کش Next.js با تریگرهای Revalidation، باعث شد پلتفرم پایداری بالایی در برابر خطاهای کاربری داشته باشد و در عین حال سرعت لود فوق‌العاده‌ای در سمت کاربر نهایی ارائه دهد.

تکنولوژی‌ها و ابزارها

  • Next.js (App Router)
  • React 19
  • TypeScript
  • Zustand & State Design
  • Zod Schema Validation
  • Tailwind CSS

معماری Monorepo و ابزارها

  • Monorepo (pnpm workspaces)
  • Shared Workspace Packages (@hotel-saas/*)
  • Biome (Fast Linter & Formatter)

اپلیکیشن Dashboard (پنل مدیریت)

  • React
  • Vite
  • TypeScript
  • Zustand
  • TanStack React Query
  • React Router
  • React Hook Form

اپلیکیشن Storefront (وب‌سایت هتل)

  • Next.js (SSG & On-demand Revalidation)
  • React
  • TypeScript
  • Tailwind CSS
  • Dynamic SSR/CSR for Booking

موتور Visual Page Builder

  • dnd-kit (Drag-and-Drop Tree)
  • Zod (Schema Validation & Source of Truth)
  • CodeMirror (Scoped CSS Editor)
  • Tiptap (Rich Text)
  • Radix UI

علاقه‌مند به گفتگو درباره این پروژه یا همکاری هستید؟

می‌توانیم پیرامون معماری سیستم، جزئیات فنی و فرصت‌های همکاری گفتگو کنیم.