← All templates

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

Open in Molecule

What is inside

  • auth
  • search
  • payments
  • booking
  • realtime
  • calendar
  • subscriptions

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

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret key
  • STRIPE_PUBLISHABLE_KEY Stripe publishable key
  • MAILGUN_API_KEY Mailgun API key
  • S3_BUCKET S3 bucket for profile images
  • STRIPE_WEBHOOK_SECRET Stripe 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