🌐وب‌اپسال: ۲۰۲۶در حال توسعه فعال

ویاد

پلتفرم کلاس آنلاین چندموردی آماده تولید — ویدیوی WebRTC، تخته سفید، آزمون، ضبط و جزوه بلادرنگ، فعال در viyad.ir.

ویاد cover
Node.js 20 / Express 5React 19 / Vite 7MongoDB / MongooseRedis + Socket.io (آداپتر Redis)WebRTC / LiveKit / STUN-TURNStripe (وب‌هوک پرداخت)Twilio + Web Push (اعلان)BullMQ (کارهای پس‌زمینه)Elasticsearch (جستجو)Sentry (پایش)PDFKit / exceljs / fluent-ffmpeg

چیست؟

ویاد یک پلتفرم کلاس آنلاین چندموردی (multi-tenant) آماده تولید است — تجربه کامل کلاس درس: ویدیوی بلادرنگ WebRTC، تخته سفید تعاملی، جزوه PDF همگام‌شده بلادرنگ، آزمون، چت، اشتراک صفحه و ضبط — پشت یک فرانت‌اند React 19 و بک‌اند ماژولار Node.js.

این یکی از بزرگ‌ترین پروژه‌های این پورتفولیو است — ۵۱۳ فایل بک‌اند، ۵۲۱ فایل فرانت‌اند، ۱۰۴ فایل مستندات، پوشه کامل deploy/ (nginx، LiveKit، TURN، systemd) و تاریخچه مستند توسعه از فاز ۱ تا فاز ۲۲.

لینک زنده: viyad.ir

ویژگی‌های شاخص

کلاس درس

  • ویدیو/صوتی بلادرنگ WebRTC با عبور از NAT با STUN/TURN
  • تخته سفید تعاملی — رسم، اشکال، متن، پاک‌کن، همگام‌شده برای کل اتاق
  • چت بلادرنگ — اتاق‌های عمومی + گفتگوی خصوصی
  • اشتراک‌گذاری صفحه نمایش
  • ضبط کلاس — آپلود قطعه‌ای با نهایی‌سازی
  • دسترسی نقش‌محور — قابلیت‌های معلم در برابر دانشجو

جزوه (PDF)

  • دنبال‌کردن بلادرنگ: وقتی معلم تب جزوه را باز می‌کند، پنل PDF همه دانش‌آموزان خودکار باز می‌شود؛ ورق‌زدن، جای اسکرول و هر حاشیه‌نویسی (قلم، هایلایتر، خط، اشکال، متن، پاک‌کن) به‌صورت بلادرنگ به کل کلاس منتقل می‌شود. کسی که دیرتر وارد شود وضعیت فعلی را همان لحظه دریافت می‌کند.
  • ترمیم خودکار فونت: هر PDF آپلودشده در پس‌زمینه بررسی و فونت‌های شکسته (غیرامبد) جایگزین می‌شوند — وزیرمتن برای صفحات فارسی/عربی، Inter برای لاتین — تا متن هرگز به‌صورت جعبه نمایش داده نشود. کاملاً امن: در صورت هر خطا فایل اصلی حفظ می‌شود و یک اسکریپت backfill فایل‌های قدیمی را دوباره پردازش می‌کند.
  • تمام‌صفحه با Fullscreen API مرورگر (+ حالت جایگزین CSS برای iOS)

پلتفرم

  • چندموردی (multi-tenant) با زمینه سازمان (۳۴ ماژول فیچر فرانت‌اند)
  • پنل مدیریت با تحلیل (admin، admin-users، admin-settings، analytics…)
  • وب‌هوک پرداخت — یکپارچه‌سازی Stripe
  • صفحه فرود عمومی با CMS — ویژگی‌ها، سؤالات متداول، اخبار و نظرات قابل ویرایش؛ سئو-فرندلی
  • API عمومی + API توسعه‌دهندگان برای یکپارچه‌سازی‌های شخص ثالث
  • آزمون، حضور و غیاب، لایسنس، جستجو، اعلان (web-push + Twilio)، پشتیبانی PWA، سوپرادمین و مدیریت نقش

معماری

viyad/
├── backend/                # Node.js/Express — مونولیت ماژولار
│   └── src/
│       ├── config/         # پارس env و پیکربندی
│       ├── core/           # لاگر، مدیریت خطا، ابزار مشترک
│       ├── domain/         # موجودیت‌ها و قوانین کسب‌وکار
│       ├── application/    # کیس‌های استفاده (منطق کسب‌وکار)
│       ├── infrastructure/ # ریپازیتوری‌های DB، سرویس‌های خارجی، کانفیگ رسانه
│       └── interfaces/     # کنترلرهای HTTP، مسیرها، سوکت‌ها
├── frontend/               # React 19 + Vite (معماری Feature-Sliced)
│   └── src/
│       ├── app/            # پوسته اپ و مسیریابی
│       ├── features/       # ۳۴ ماژول فیچر (classroom، whiteboard، quiz…)
│       ├── shared/         # کامپوننت‌ها و ابزار مشترک
│       └── providers/      # context provider ها (media، auth…)
├── packages/shared/        # تایپ‌ها و قراردادهای مشترک
├── deploy/                 # کانفیگ تولید: nginx، LiveKit، TURN، systemd، logrotate
├── docs/                   # ۱۰۴ فایل: ADR، ممیزی‌ها، گزارش فازها (۱–۲۲)، runbook
├── scripts/                # بکاپ دیتابیس/فایل‌ها، SSL، pdf-fonts (وزیرمتن/Inter)
└── docker-compose.dev.yml  # استک توسعه محلی (mongo + redis + backend + frontend)

وابستگی‌های کلیدی

بک‌اند: Express 5، Mongoose، Redis + @socket.io/redis-adapter، BullMQ، Stripe، Twilio، web-push، LiveKit SDK، Elasticsearch، Sentry، fluent-ffmpeg، PDFKit، exceljs، qrcode، zod، winston (+ چرخش روزانه)، express-rate-limit.

فرانت‌اند: React 19، livekit-client، simple-peer، socket.io-client، pdfjs-dist، chart.js، framer-motion، idb، PWA.

شروع کار

# گزینه A — Docker Compose (پیشنهادی)
docker compose -f docker-compose.dev.yml up
# بک‌اند ← http://localhost:5000   فرانت‌اند ← http://localhost:5173

# گزینه B — دستی
docker compose -f docker-compose.dev.yml up -d mongo redis
cd backend  && cp .env.example .env && npm install
cd ../frontend && npm install && npm run dev

پیش‌نیازها: Node 20+، MongoDB 7+، Redis 7+.

چرا برجسته است

ویاد نزدیک‌ترین پروژه این پورتفولیو به یک محصول تجاری است. همه اجزای یک SaaS جدی را دارد — زیرساخت رسانه بلادرنگ (WebRTC + LiveKit + TURN)، مقیاس‌پذیری افقی (Redis pub/sub)، پرداخت، چندمستأجری، جستجو، پایش، کیت استقرار برای سرورهای واقعی و یک فرایند مهندسی که در ۱۰۴ فایل مستندات با ممیزی و گزارش فازها ثبت شده. همین ویژگی «دنبال‌کردن بلادرنگ جزوه + ترمیم خودکار فونت» — حل مشکل فونت‌های فارسی شکسته در PDF های آپلودشده — از آن جزئیاتی است که محصول واقعی را از دمو جدا می‌کند.

پروژه‌های بیشتر