نرم‌افزار سفارشی · شهرداری — امور فرهنگی

رویدادیار شهرداری تهران: رویدادهای فرهنگی 22 منطقه روی یک سامانه

سامانه‌ی یکپارچه‌ی رویدادها و اماکن فرهنگی شهر تهران: زنجیره‌ی تأیید چندمرحله‌ای، اطلس فرهنگی روی نقشه، گزارش میدانی ژئوفنس‌شده و نظرسنجی شهروندی — سه کلاینت وب، موبایل و API روی یک هسته.

کارفرما
شهرداری تهران
حوزه
شهرداری — امور فرهنگی
سال
1404
وضعیت
در حال بهره‌برداری
  • تحلیل و کشف نیاز
  • طراحی تجربه و رابط کاربری
  • معماری نرم‌افزار
  • توسعه فرانت‌اند
  • توسعه بک‌اند و API
  • طراحی پایگاه داده
  • یکپارچه‌سازی با سیستم‌های دیگر
  • استقرار و DevOps
  • تست و تضمین کیفیت
  • پشتیبانی و توسعه مستمر

نتیجه در عدد

22
منطقه‌ی شهر تهران روی سامانه

با نواحی و محلات هر منطقه

3
کلاینت روی یک هسته

وب، اپلیکیشن موبایل و API

چالش

رویدادهای فرهنگی 22 منطقه‌ی تهران در سال به صدها برنامه می‌رسد، و هر برنامه پیش از اجرا از چند دست می‌گذرد: محتوا، بودجه، معاونت، ستاد.

مسئله چهار سر داشت. تأیید جایی گیر می‌کرد که کسی نمی‌دانست کجاست. اماکن فرهنگی — فرهنگسراها، سراهای محله، خانه‌های قرآن، بوستان‌ها — فهرست به‌روزی نداشتند که شهروند بتواند ببیند کجا چه کلاسی برگزار می‌شود. گزارش میدانی قابل استناد نبود: عکسی که معلوم نبود کجا و کِی گرفته شده. و ارزیابی عملاً انجام نمی‌شد، چون گرفتن نظر شهروند از خود برگزاری سخت‌تر بود.

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

راه‌حل

رویدادیار ساخته شد: یک بستر با سه کلاینت — پنل وب برای واحد فرهنگی و مناطق و ستاد، اپلیکیشن موبایل برای مأمور میدانی و شهروند، و یک API که هر دو از آن تغذیه می‌شوند.

چرخه‌ی رویداد با ماشین حالت در دل دامنه کنترل می‌شود: پیش‌نویس ← تأیید محتوا ← تأیید بودجه ← معاونت و ستاد ← ابلاغ به مناطق و اجرا ← ارزیابی ← اختتام. برنامه‌ها و زیرفعالیت‌ها نسخه‌بندی می‌شوند و تاریخچه‌ی تغییرات می‌ماند.

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

گزارش میدانی با ژئوفنس و پنجره‌ی زمانی ثبت می‌شود و در صف آفلاین می‌نشیند تا شبکه برگردد؛ سنجش دسترسی روی سرور خودی تنظیم شد تا فیلترینگ سامانه را «آفلاین» گزارش نکند. ارزیابی با بانک سؤال و توکن یک‌بارمصرف انجام می‌شود، با پرسش‌های متفاوت از شهروند و از مجری.

زیر همه‌ی این‌ها یک لایه‌ی دسترسی نشست که در سازمانی با این ابعاد ضروری بود: سلسله‌مراتب جغرافیایی مناطق ← نواحی ← محلات در کنار سلسله‌مراتب سازمانی، مجوزهای مبتنی بر توانمندی — هر نقطه‌ی پایانی با یک توانمندی مشخص، نه با نقش خام — چندمستأجری، و رد حسابرسی روی هر دسترسی.

قابلیت‌های کلیدی

  • زنجیره‌ی تأیید چندمرحله‌ای

    محتوا، بودجه، معاونت و ستاد — با گیت‌چک‌لیست هر مرحله و برگشت با دلیل ثبت‌شده.

  • اطلس فرهنگی روی نقشه

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

  • ثبت‌نام، رزرو و عضویت

    کلاس‌های آموزشی، رزرو سالن و کارگاه و مشاوره‌ی رایگان، و عضویت کانون — قابل فعال‌سازی برای هر مکان.

  • گزارش میدانی ژئوفنس‌شده

    عکس فقط در محل و در پنجره‌ی زمانی رویداد؛ صف آفلاین و همگام‌سازی خودکار.

  • نظرسنجی شهروندی با توکن

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

  • دسترسی ریزدانه و حسابرسی

    مجوز مبتنی بر توانمندی، دامنه‌ی جغرافیایی و سازمانی، چندمستأجری و رد حسابرسی کامل.

  • تجربه‌ی شهروند

    تقویم جلالی، «نزدیک من» با GPS، جشنواره‌ها و مسابقه‌ها و سفیران فرهنگی.

  • به‌روزرسانی درون‌برنامه‌ای

    اپ نسخه‌ی جدید را از سرور سازمان می‌گیرد و نصب می‌کند، با پشتیبانی از به‌روزرسانی اجباری.

معماری و فناوری

سبک معماری
مونولیت
الگوها
معماری پاک (Clean)طراحی دامنه‌محور (DDD)

Clean Architecture با اصول دامنه‌محور: هسته‌ی کسب‌وکار — موجودیت‌ها، ماشین حالت رویداد و قواعد — در مرکز و بدون وابستگی به بیرون؛ لایه‌ی کاربرد با سرویس‌ها، DTOها و اعتبارسنجی FluentValidation دور آن؛ و زیرساخت و ارائه در بیرونی‌ترین لایه‌ها. دلیلش ساده است: این سامانه از روز اول سه کلاینت داشت و قرار بود کلاینت‌های دیگری هم اضافه شوند؛ اگر قواعد در کنترلرها نوشته می‌شدند، با هر کلاینت جدید دوباره نوشته می‌شدند.

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

زیرساخت: Entity Framework Core روی SQL Server، کارهای زمان‌بندی‌شده با Hangfire، ذخیره‌سازی شیءگرا برای تصاویر، لاگ متمرکز با Seq، و داده‌ی مکانی با NetTopologySuite — که همان چیزی است که ژئوفنس گزارش میدانی و «نزدیک من» روی آن کار می‌کنند. استقرار روی Docker Compose پشت nginx، با راه‌اندازی خودکار و افزایشی اسکیمای داده هنگام بالا آمدن سرویس.

فرانت‌اند
React.jsViteTypeScriptLeaflet

پنل وب واحد فرهنگی، مناطق و ستاد

فرانت‌اند
React NativeExpo

اپلیکیشن میدانی و شهروندی، با کار آفلاین

بک‌اند و API
.NET 10ASP.NET CoreC#REST APIClean Architecture

REST نسخه‌دار، JWT، مجوز مبتنی بر توانمندی، چندمستأجری

پایگاه داده
SQL ServerEntity Framework Core
زیرساخت و استقرار
HangfireNetTopologySuiteSeq

کارهای زمان‌بندی‌شده، داده‌ی مکانی و ژئوفنس، لاگ متمرکز

CI/CD و مانیتورینگ
Dockernginx

Docker Compose پشت nginx، راه‌اندازی خودکار اسکیما

یکپارچه‌سازی‌ها

  • ذخیره‌سازی شیءگرا برای تصاویر رویداد و اماکن
  • نقشه و داده‌ی مکانی برای اطلس و ژئوفنس

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

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

روبوکد: آموزشگاه، آزمون آنلاین، فروشگاه و شبکه‌ی نمایندگان روی یک سامانه
کار شاخص

نرم‌افزار سفارشی · فروشگاه اینترنتی

روبوکد: آموزشگاه، آزمون آنلاین، فروشگاه و شبکه‌ی نمایندگان روی یک سامانه

سکوی یکپارچه‌ی مؤسسه‌ی آموزشی روبوکد روی .NET 10: دوره‌ی آنلاین و حضوری، آزمون با کارنامه، فروشگاه با قیمت‌گذاری عمده، صدور گواهی با استعلام QR، پنل نمایندگان و مدرسان با پورسانت، و ورود یکپارچه از شاد.

  • .NET 10
  • C#
  • Entity Framework Core
  • MediatR

مؤسسه آموزشی روبوکد · 1404

کلینیک زیبایی شایلین: رزرو آنلاین، مجله‌ی تخصصی و یک پنل مدیریت
کار شاخص

نرم‌افزار سفارشی

کلینیک زیبایی شایلین: رزرو آنلاین، مجله‌ی تخصصی و یک پنل مدیریت

سامانه‌ی جامع کلینیک زیبایی شایلین روی .NET 10 و Next.js: رزرو آنلاین با انتخاب خدمت و پزشک و تقویم شمسی، گالری قبل و بعد، مجله‌ی تخصصی با صفحه‌ساز، وب‌اپلیکیشن نصب‌شدنی با اعلان Web Push، و یک پنل مدیریت برای همه‌ی این‌ها.

  • Next.js
  • React.js
  • TypeScript
  • Vite

کلینیک زیبایی شایلین · 1404

کلینیک مشاوره روشا: سامانه‌ی رزرو تا تسویه‌ی مشاور، روی وردپرس اختصاصی
کار شاخص

نرم‌افزار سفارشی

کلینیک مشاوره روشا: سامانه‌ی رزرو تا تسویه‌ی مشاور، روی وردپرس اختصاصی

سامانه‌ی یکپارچه‌ی مدیریت کلینیک روان‌شناسی روی وردپرس: رزرو آنلاین با قفل ضد تداخل، پرداخت و بیعانه، میز پذیرش 15 ماژولی، پنل مشاور با محاسبه‌ی سهم، و گزارش مالی با PDF فارسی. بدون افزونه‌ی رزرو یا قالب آماده.

  • WordPress
  • PHP
  • REST API
  • MariaDB

کلینیک مشاوره روشا · 1404