Jainth

work study-room

Study Room

A collaborative study platform with a coding-interview practice ground. Designed, built, deployed and operated entirely by me — including the code execution engine that runs submissions in five languages without a third-party judge.

Role
Sole engineer & designer
Status
Live in production
Commits
345
The Study Room landing page, headlined 'One app for studying together and shipping placements'
The problem

Students prepare alone, on tools built for teams.

Interview preparation happens on one set of tools and studying happens on another. Practice platforms are solitary and priced for working engineers; group study runs on video calls never designed for focus.

Study Room puts both in one place: a room you join with a six-character code, sharing a server-synced Pomodoro, chat, notes, tasks, files and voice/video — alongside a practice catalogue with a real grader. Study rooms stay free for students; interview-prep extras fund the infrastructure.

Every constraint was a solo-founder constraint: no per-execution API bill, no media server, no third-party analytics vendor.

Architecture
  1. Client
    • React 19 + Vite29 pages, PWA, Tailwind v4
    • Socket.io clientRooms and collaborative code
    • WebRTC peer meshBrowser-native, no SFU
  2. Server
    • Execution enginechild_process, priority queue
    • Socket layerTimer ticks, presence
    • BillingHMAC-verified webhooks
    • Cron jobsDaily challenge, cleanup
  3. Data & services
    • MongoDB35 Mongoose models
    • CloudinaryRoom files, auto-expiry
    • RazorpaySubscriptions
    • Brevo SMTPInvites, notifications

Deployed: Server on Railway, client on Vercel.

The hard parts
  • A grader, not an API call

    Submissions compile and run on my own server through child_process and system compilers — JavaScript, Python, C, C++, Java. Per-test-case scoring against hidden tests, compile-error surfacing, time-limit enforcement, and a concurrency-bounded priority queue so paying users' runs jump the line.

    Why: per-execution API pricing does not survive a free tier.

  • Calls with no media server

    Voice and video run as a WebRTC peer-to-peer mesh, which holds cleanly up to six participants — the realistic ceiling for a study room. Speaking detection, fullscreen and minimise live in a floating grid.

    Trade-off: mesh bandwidth scales poorly past six, so rooms cap there.

  • One clock for everyone

    The Pomodoro is authoritative on the server and ticks over the socket, so a late joiner sees the same countdown as everyone else rather than starting their own. Completed sessions feed a study streak.

    Why: client-side timers drift and desync the room.

Where it stands today
462
Registered users
147
Study sessions run
58
Problems solved

Read from Study Room’s public metrics endpoint · snapshot 20 Sept 2026, 08:58 UTC

Screens
  • The problem catalogue, with the day's challenge pinned above a difficulty-tagged list

    The problem catalogue, with the day's challenge pinned above a difficulty-tagged list

  • A problem open beside the editor, with JavaScript, Python, C, C++ and Java selectable

    A problem open beside the editor, with JavaScript, Python, C, C++ and Java selectable

  • The code playground: an editor in five languages beside its output panel

    The code playground: an editor in five languages beside its output panel