CoachConnect: Tutor and Coach Booking Marketplace With Live Classroom
CoachConnect is a full-stack Next.js 15 application for running an online 1-on-1 tutoring or coaching marketplace. Students find a verified tutor, pick a time slot from the tutor’s weekly hours, pay with Stripe Checkout and meet in a browser-based Daily.co video classroom with a shared live whiteboard and code sandbox. Tutors manage their hours, students and earnings; administrators verify tutors, set the platform commission and answer support inquiries. Frontend and API run as one Next.js app on one port, with MongoDB through Prisma.
For students
- Tutor directory with search by subject, name or skill, subject filter chips and a maximum hourly-rate slider
- Tutor profiles with headline, subjects, languages, teaching philosophy, weekly working hours and student reviews
- Booking panel: choose a day from the next ten days, then a free 60-minute slot (booked and past slots are blocked), add an optional lesson topic and pay through Stripe Checkout
- Student workspace: next lesson, learning hours, lesson and mentor counts, upcoming and past lessons
- My Bookings with All / Upcoming / Completed / Cancelled tabs and search, Scheduled Classes, and Favorite Tutors
- Star rating and written review for a booked tutor
- Profile page with avatar upload or generated avatar, and password change
- “Apply as a tutor” from the student account
For tutors
- Educator hub: teaching agenda, earnings, rating and active students
- Weekly availability editor (days, start and end time) with a time-zone selector
- My Students: each learner’s lesson count, completed lessons, hours and last session
- Earnings & Payouts: Stripe Connect Express onboarding, earnings summary and a lesson ledger showing price, platform fee and net amount
- Profile editor for headline, bio, subjects, languages, hourly rate and currency (USD, EUR, GBP, CAD, AUD, JPY, INR, CHF, CNY and more)
- Tutor sign-up with an admin approval step and email notifications
Classroom
- One classroom page per booking, opened from the student or tutor dashboard
- Video, audio, screen sharing and chat are provided by Daily.co (your own Daily account and API key are needed; Daily’s free tier covers small volumes)
- Shared live whiteboard: tutor and student see each other’s drawing as it happens, in the same place on any screen size; pen, eraser, colours, brush sizes and a shared clear; works with mouse, touch and stylus; reconnects and restores the board automatically
- Shared code sandbox: tutor and student edit the same JavaScript or Python code live and both see the output when either presses Run. Code runs safely in the browser (isolated worker, no network, time limit), never on your server; Python is loaded from the jsDelivr CDN on first use
Admin panel
- Overview: gross marketplace volume, platform revenue, completed sessions, verified tutors and registered students
- Platform commission setting (percentage applied to each new booking) and minimum / maximum hourly rate
- User management: search, filter by role, create, edit and delete students, tutors and admins
- Coach verification queue: approve or revoke tutors; approved tutors receive an email
- Subject list manager
- Support inbox for the public contact form, with status (pending, replied, closed) and email replies
- Separate admin login page
Public website
- Home page, How It Works, Pricing & Fees, Tutoring Centers, Trust & Safety, Contact, Privacy and Terms pages
- Responsive layouts for phones, tablets and desktops
Technical details and requirements
- Node.js 20 or newer and npm 10 or newer
- MongoDB: MongoDB Atlas (the free tier works) or a self-hosted MongoDB running as a replica set (required by Prisma for MongoDB)
- Built with Next.js 15 (App Router and Route Handlers), React 19, TypeScript in strict mode, Tailwind CSS 3, Prisma 6 and Lucide icons, in a Turborepo monorepo
- Authentication with Argon2 password hashing and JWT; separate student, tutor and admin roles with protected routes
- Payments: Stripe Checkout; tutor accounts through Stripe Connect Express. Email: any SMTP server through Nodemailer. Video: Daily.co
- Deploys to Railway, Render or any Node.js server that runs npm start (one instance). Vercel works for everything except the live whiteboard
- A seed script creates demo tutors and the student, tutor and admin demo accounts
Good to know
- Stripe Checkout collects the full lesson price into your platform Stripe account. The platform fee and the tutor’s share are calculated and shown in the ledgers. Transfers to tutors are not automated: pay tutors from your Stripe dashboard.
- Lessons are not moved to Completed automatically yet; completed-lesson statistics and the earnings ledger count bookings with that status (the demo data includes completed lessons).
- Your own accounts are needed for Stripe, Daily.co, MongoDB and SMTP. Their fees are not included.
- Compatible browsers: tested in the latest Google Chrome on desktop and in Chrome’s mobile and tablet emulation. Use Stripe test-mode keys to try payments before going live.
- There is no built-in language switcher; text can be translated by editing the components.
Preview and demo content
The screenshots use fictional students and tutors with sample bookings and reviews. Student avatars are generated by DiceBear; tutor photos, illustrations and the classroom photo are licensed stock photos from Unsplash and Pexels used on the demo only. They are not included in the download, which contains placeholder images with the same file names. In the live classroom screenshot the video tile shows a sample photo, because a live Daily.co call cannot be captured in a static image. Product names and logos of third parties belong to their owners.
What is included
- Full TypeScript source code (Next.js app and shared packages)
- Prisma schema and demo seed script
- .env.example and a README with installation steps and demo accounts
- Offline HTML documentation with 40 screenshots (installation, user guides for students, tutors and admins, configuration, API reference, troubleshooting)
- CHANGELOG.md and CREDITS.md (licences of every package, font and image source)
Credits
Fonts Instrument Sans, Newsreader and Geist Mono (SIL Open Font License, served through next/font). Icons by Lucide (ISC licence). Next.js, React, Tailwind CSS, Stripe Node, jsonwebtoken and argon2 (MIT), Prisma (Apache-2.0), Nodemailer (MIT-0). Pyodide (MPL-2.0, loaded at run time). The full list is in CREDITS.md.