🌐Web AppsYear: 2026Active development

Viyad

A multi-tenant online-classroom platform — live video, a shared whiteboard, and course PDFs that follow the teacher — live at viyad.ir

Viyad cover
React 19Node.jsExpressMongoDBRedisSocket.ioWebRTC / LiveKitNginx

Live at viyad.ir. Teachers and students use it every day — this is the largest system I have built.

What it is

An online classroom, not a video call with a whiteboard bolted on.

The hard part of teaching online is not the video — that is a solved problem. It is everything around it: the material. When a teacher turns to page 40 of the course PDF, every student should be looking at page 40. When the teacher draws a line under a sentence, that line should appear on every student’s copy at the same moment. When a student joins late, they should arrive in the middle of the lesson, not at the start.

What it does

  • Live video and audio for the whole class, over WebRTC, with TURN relays for students behind restrictive networks.
  • Course PDFs that follow the teacher. Page number, scroll position, and every annotation — pen, highlighter, shapes, text, eraser — sync to the room in real time. Late joiners are handed the current state instantly.
  • Broken Persian fonts are fixed on upload. Most PDFs exported from Iranian word processors reference fonts the reader does not have, and the page renders as empty boxes. Every uploaded file is scanned in the background and the missing fonts are substituted, so the text always renders.
  • Whiteboard, public and private chat, screen sharing, and recording.
  • Quizzes, so a teacher can check understanding inside the same session.
  • Multi-tenant: several schools run on it with their own users, data and branding.
  • PDFs for the rest of the platform — attendance, grades, transcripts, certificates, invoices.

The numbers

1,000+ source files
104 engineering documents — decisions, audits, runbooks
22 phases of planned and completed work, recorded as you go

Why it’s worth a look

The engineering here is almost entirely in the unglamorous parts: making a real-time system that does not fall over when a hundred students connect at once, making the money side correct (billing webhooks, invoices, multi-tenant isolation), and writing down the decisions as you make them so the next person — including me, six months later — knows why something is the way it is.

The Persian font fix is the one I am happiest about. It is a small problem that every Iranian developer has hit and that nobody fixes properly, and fixing it quietly in the background means a teacher never has to think about it.

More projects