ویاد
پلتفرم کلاس آنلاین چندموردی آماده تولید — ویدیوی WebRTC، تخته سفید، آزمون، ضبط و جزوه بلادرنگ، فعال در viyad.ir.
گالری
3 تصویر — کلیک برای بزرگنماییچیست؟
ویاد یک پلتفرم کلاس آنلاین چندموردی (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 های آپلودشده — از آن جزئیاتی است که محصول واقعی را از دمو جدا میکند.