Tutoring Marketplace
Education · React + Node (Express) · 21 @molecule/* packages
Wyzant-like tutoring marketplace with tutor profiles, booking, sessions, and reviews — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (15)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Search
/search(signed in) - TutorProfile
/tutor/:id(signed in) - Booking
/book/:tutorId(signed in) - Sessions
/sessions(signed in) - Messages
/messages(signed in) - Account
/account(signed in) - SessionDetail
/sessions/:id(signed in) - BookingConfirmation
/book/:tutorId/confirm(signed in) - BecomeTutor
/become-tutor(signed in) - TutorDashboard
/dashboard(signed in)
Data model (14 tables)
- availability_slots — id, tutor_id, user_id, day_of_week, start_time, end_time, recurring, created_at
- bookings — id, student_id, tutor_id, subject, scheduled_at, duration_hours, total_amount, currency, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- message_threads — id, user_a_id, user_b_id, last_message_at, created_at
- messages — id, thread_id, sender_id, body, read_at, created_at
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- resource_tags — id, tagId, resourceType, resourceId, createdAt
- review_helpful — reviewid, userid, createdat
- reviews — id, reviewer_id, tutor_id, booking_id, rating, body, created_at, updated_at
- session_messages — id, session_id, user_id, content, created_at
- subjects — id, name, slug, parent_slug, sort_order, created_at
- tags — id, name, slug, color, description, createdAt, updatedAt
- tutor_profiles — id, user_id, display_name, headline, bio, hourly_rate, subject, subjects, …
- tutoring_sessions — id, booking_id, tutor_id, student_id, status, room_id, transcript_url, recording_url, …
API (6 handlers)
- bookings
api/src/handlers/bookings.ts - messages
api/src/handlers/messages.ts - reviews
api/src/handlers/reviews.ts - sessions
api/src/handlers/sessions.ts - subjects
api/src/handlers/subjects.ts - tutors
api/src/handlers/tutors.ts
Subscription tiers
free / pro / team — gated by: maxBookings, maxReviews, maxSessions, maxSubjects, maxTutors, advancedFeatures, canExport, retentionDays
Built from 21 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-image-sharp@molecule/api-payments-stripe@molecule/api-realtime-socketio@molecule/api-resource-booking@molecule/api-resource-payment@molecule/api-resource-review@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-calendar@molecule/app-command-palette@molecule/app-data-table@molecule/app-realtime-socketio@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringSTRIPE_SECRET_KEYStripe secret keySTRIPE_PUBLISHABLE_KEYStripe publishable keyMAILGUN_API_KEYMailgun API keyS3_BUCKETS3 bucket for profile imagesSTRIPE_WEBHOOK_SECRETStripe webhook signing secret (whsec_...)
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing