Before you start
Make sure you have:
- A registered Tuition.in account with the right role. If you signed up as a student, you can't create courses — write to [email protected] to upgrade to a tutor or institution account.
- A completed profile. Tutors visit /dashboard/tutor/edit; institutions visit /dashboard/institution/edit. A complete profile gets you discovered and earns trust with students.
- A working webcam and microphone. Most laptops are fine. For best audio, use a headset — built-in laptop mics pick up keyboard clatter.
- A reasonably stable internet connection. We recommend 1.5 Mbps upstream. The platform automatically drops to audio-only on weaker connections — see Working on slow networks below.
Step 1 — Create your course
A course is the top-level container for your subject matter — for example, "JEE Physics — Class 11" or "Beginner Spoken English". A single course can run multiple batches (cohorts) over time.
- Go to /dashboard/tutor/courses (or /dashboard/institution/courses for institutions).
- Click New course.
- Fill in the form:
- Title — descriptive, what students will see in search results. Aim for 50-70 characters.
- Slug — optional. Auto-generated from your title if you leave it blank (e.g. "JEE Physics — Class 11" →
jee-physics-class-11). The slug appears in the public URL. Lowercase + hyphens only. - Description — what students will learn, prerequisites, what makes your course different. Markdown isn't supported in v1 — plain text and line breaks only.
- Subject / Grade / Language — used for search and recommendations. Be specific: "Physics" + "Class 11" beats leaving these empty.
- Click Create course. You'll land on the course management page.
/courses/{your-slug}/{course-slug}. Your creator slug is auto-generated from your name on first course creation (e.g. "Koundinya Kypa" → koundinya-kypa). Share this URL with prospective students.Step 2 — Add a batch
A batch is a specific cohort of students taking the course together — for example, "JEE 2027 Morning Batch" or "Spring Evening Batch". Each batch has its own schedule, price, and capacity.
On the course management page, click New batch and fill in:
- Batch name — visible to students. Helps them distinguish between cohorts.
- Start date — required. When the batch begins.
- End date — optional. Leave blank for open-ended courses.
- Price (₹) — set 0 for free batches. Free batches skip Razorpay entirely; students enroll instantly.
- Capacity — optional cap on student count. Leave blank for unlimited.
- Status — leave as Draft while setting up. Switch to Published when you're ready to open enrollment. Only published batches accept enrollments.
Step 3 — Schedule live classes
Once a batch exists, expand it (Manage button) and click Schedule class for each session you plan to teach.
- Class title — e.g., "Kinematics — Part 1".
- Start / End — date-time pickers. Times are interpreted in your browser's timezone, so a tutor in Kolkata picking 10:00 AM means 10:00 AM IST regardless of where students are.
- Free demo class — when checked, any logged-in student can join, even without enrolling. A great way to let prospective students sample your teaching.
When you schedule a class, our backend automatically provisions a 100ms video room for it. You don't need to share a separate Zoom or Meet link — students click Join on their dashboard and land in your room.
Step 4 — Add teachers (institutions)
Coaching centers, schools, and colleges often run a single batch with multiple subject teachers. The course owner is the institution account, but individual teachers can host classes and grade homework.
Each teacher needs their own Tuition.in account first. Have them register at /register. Then in the batch's Teachers section (within the management view), add them by email.
- Teachers can host live classes in this batch.
- Teachers can create and grade assignments.
- Teachers cannot change batch metadata (price, capacity, schedule) or issue refunds — those stay with the course owner.
Going live: hosting a class
At class time, open the course management page. Each scheduled class shows a Start class button starting 15 minutes before its scheduled time. Click it to enter the live room as host.
When you join as host:
- The class status flips from SCHEDULED to LIVE.
- Recording starts automatically. You don't need a separate "record" button.
- Students who have joined will see and hear you. Students joining later are admitted automatically.
Host controls (bottom bar):
- Mic — mute/unmute your audio.
- Camera — toggle your video on/off.
- Audio-only mode — sticky toggle. Useful when your network is shaky. Disables your camera and remembers the choice for next class.
- End class — ends the room for everyone, finalizes the recording. Use this when class is genuinely over — leaving individually keeps the room open.
Working on slow networks
Most Tuition.in students are in tier-2 and tier-3 cities, and bandwidth varies widely. The platform handles this automatically:
- The header shows a connection-quality indicator: Good / OK / Weak / Poor.
- If your connection stays weak (quality < 3) for 10 seconds, the system disables your video automatically and shows a "Bandwidth saver" badge. Audio + whiteboard + chat continue uninterrupted.
- When your connection recovers (quality ≥ 4 for 15 seconds), video is re-enabled. If you manually turned off your camera, the system leaves it off — your choice wins.
- Use the Audio-only mode button to lock the bandwidth-saving behavior in. The setting persists across classes until you turn it off.
Using the whiteboard
Below the video grid, you'll see a collaborative whiteboard powered by tldraw. As host, you can draw, type, paste images, and use any tool from the toolbar. Students see everything you draw in near-real-time.
- Students see the whiteboard as view-only — they can't draw on it.
- Updates broadcast every ~600ms. On a fast connection it feels instant; on slow connections, students might see drawings appear in 1-2 second batches.
- The whiteboard auto-saves to our servers every 30 seconds. Students who join late see the most recent saved state when they enter the room.
- The final whiteboard at end-of-class is preserved — you can refer back to it later if needed (admin support can pull it).
In-class chat
The chat panel on the right of the live room is for student questions during class. Messages persist to our servers, so:
- A student joining late sees the most recent 200 messages on entry.
- Chat history is preserved after class ends — visible to anyone rewatching the recording (this feature is being added).
- Students are rate-limited to 10 messages per 10 seconds to prevent spam.
Recordings
Every live class is recorded automatically. Students access recordings from /dashboard/student/classes → the Recording button next to a past class.
- Recordings are HLS-encoded so they play smoothly on any connection. Browser auto-selects the best resolution.
- Resume position is saved per student — they pick up where they left off.
- Watch time is tracked accurately (scrubs and pauses don't inflate it). Visible on the student's progress dashboard.
Assignments and grading
Within a batch, expand the Assignments section to create homework.
Creating an assignment:
- Title, instructions, due date, and max score (typically 100).
- Optional attachments — PDFs, Word docs, spreadsheets, images. Up to 10 files, 10 MB each.
- All active enrollees get a notification when the assignment is posted.
Grading submissions:
- Click Submissions on an assignment to see who's submitted.
- Each submission shows the student's files, optional text answer, and submission timestamp. Late submissions are flagged.
- Enter a score (0 to max) and optional feedback, then click Grade. The student gets a notification with their score.
- Once graded, the student can't resubmit. Update the grade if you want to revise it.
Payments and student enrollment
When a student visits your public course page, they see all published batches with prices and an Enroll button per batch.
For free batches: students click Enroll and are immediately added — no payment screen.
For paid batches: Razorpay Checkout opens. Students can pay with cards, UPI, net banking, or wallets. After payment, they're enrolled within seconds.
Tuition.in handles:
- The Razorpay order creation, signature verification, and webhook reconciliation.
- Sending the student a welcome notification when their enrollment is confirmed.
- Capacity enforcement — full batches reject new enrollments.
4111 1111 1111 1111 with any future expiry and any CVV to simulate a successful payment. The full flow exercises the webhook idempotency too.Handling refunds
Students can request refunds from their dashboard at any time while enrolled. They write a reason; the request shows up at the top of your course management page.
For each request, you can:
- Approve — calls Razorpay's refund API with the paid amount. Razorpay processes the refund asynchronously (typically 5-7 business days). When complete, the student's enrollment is marked REFUNDED.
- Deny — accepts an optional reason that's shown to the student. The enrollment reverts to ACTIVE.
What students get notified about
Tuition.in sends in-app notifications (and emails when configured) for these events. Students see them in the bell icon in the dashboard header.
- Enrollment confirmed — after a successful Razorpay payment.
- Assignment posted — fired to all active enrollees when you create homework.
- Assignment graded — fired to the student with their score and feedback summary.
- Recording ready — fired to all active enrollees when a class recording finalizes.
- Refund processed / declined — confirmation of your decision.
Tips for a successful course
- Offer a free demo class. Mark your first class "Free demo" so prospects can try before they buy. This is the single biggest enrollment driver.
- Start small. A 10-student batch with active engagement beats a 100-student batch you can't manage.
- Schedule weekly cadence. Two classes per week is the sweet spot for engagement without burnout.
- Use the whiteboard. Classes where the host only talks at the camera have ~30% lower watch-through rates than classes with active whiteboard work. Students engage more when they're following along.
- Grade homework within 48 hours. Students lose motivation if feedback takes longer than that. The grading notification is a re-engagement hit.
- Promote your public course URL. Share it on WhatsApp, Instagram, and your existing student channels. The page is SEO-optimized — Google will index it.
Troubleshooting
My camera or mic isn't working
- Check browser permissions — Chrome/Safari need explicit camera + mic access for tuition.in. Click the lock icon next to the URL.
- Close other apps using the camera (Zoom, Meet) — only one app can own the device at a time on most operating systems.
- Reload the page. Permissions sometimes get into a weird state.
The "Start class" button isn't appearing
It only shows from 15 minutes before the scheduled start time through the scheduled end time. Earlier than that, refresh the page closer to the start time.
Students say they can't see my recording
- Recordings finalize asynchronously — typically within 5 minutes, sometimes up to 30 during peak load. Tell students to check back in a bit.
- Make sure you ended the class with the End class button — just leaving the tab keeps the room open and recording won't finalize.
- If 30+ minutes have passed and there's still no recording, write to [email protected]. We can pull the raw recording from our video provider.
A payment showed up but no enrollment
Rare, but possible during transient network issues between Razorpay and our servers. The payment webhook usually catches it within a minute. If a student says they paid but isn't enrolled after 5 minutes, write to [email protected] with the Razorpay payment ID — we can manually reconcile.
I need to cancel a class
In the course management page, you can delete unstarted classes (status SCHEDULED) directly. For classes that have already started, write to support — we'll mark them cancelled and notify enrolled students.