Skip to content

deepakdeo/co-study-scheduler

Repository files navigation

Co-Study Scheduler

A multi-tenant real-time scheduling tool where anyone can create a "room," get a shareable link, and let others book co-study sessions. All times auto-convert to the viewer's local timezone.

Live: co-study-scheduler.vercel.app

Demo

Host: Creating a Room

Host creating a room

User: Booking a Session

User booking a session

Why I Built This

I joined a closed group of fellow learners and wanted a way to meet new people in the community while staying productive. The idea was simple: instead of just chatting, why not share a focused study session together?

I create a room, share the link with the group, and members book whichever slot works for them. Everyone in the group can see who's booked which slot and which ones are still open. I share a Zoom link with each registrant via direct message -- though the tool also supports adding a common meeting link that gets emailed directly to registrants (if the host sets up email notifications with their own domain).

Feel free to use it as-is, fork it, or extend it however you like -- make it multi-dimensional for your own community.

Features

  • No login required -- create a room, share the link, and let people book
  • Automatic timezone conversion -- times display in each viewer's local timezone
  • Real-time updates -- bookings appear live for all viewers via Supabase Realtime
  • Admin dashboard -- PIN-protected view with booking details and cancellation controls
  • Flexible scheduling -- custom session durations (15 min to 8 hours), split or full-day windows
  • Add to Calendar -- one-click .ics download adds the session to Google Calendar, Apple Calendar, or Outlook
  • Booking management -- users get a unique link to cancel/reschedule from any device
  • Email notifications -- optional booking confirmations via Resend (requires setup)
  • Mobile responsive -- stacked card layout on small screens, 5-column grid on desktop

Tech Stack

  • Frontend: React + Vite + Tailwind CSS v4
  • Database/Backend: Supabase (PostgreSQL + Realtime + Edge Functions + Row Level Security)
  • Hosting: Vercel
  • Email: Resend (optional)
  • Routing: react-router-dom v6
  • Timezone: date-fns + date-fns-tz

How It Works

  1. Create a Room -- set your name, session duration, availability windows, timezone, and admin PIN
  2. Share Your Link -- send the room URL to your study group
  3. Study Together -- members book sessions in their own timezone

Self-Hosting Guide

Want to run your own instance? Follow these steps:

Prerequisites

  • Node.js 18+
  • A Supabase account (free tier works)
  • A Vercel account (free tier works)
  • A Resend account (optional, for email notifications)

1. Clone and install

git clone https://github.com/deepakdeo/co-study-scheduler.git
cd co-study-scheduler
npm install

2. Set up Supabase

  1. Create a new project at supabase.com
  2. Go to SQL Editor and run the migrations in order:
    • supabase/migrations/001_create_tables.sql
    • supabase/migrations/002_add_host_email.sql
    • supabase/migrations/003_fix_bookings_update_policy.sql
    • supabase/migrations/004_fix_bookings_policies.sql
    • supabase/migrations/005_make_meeting_link_optional.sql
  3. Copy your project URL and anon key from Settings > API

3. Configure environment

cp .env.example .env

Edit .env with your Supabase credentials:

VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

4. Run locally

npm run dev

5. Deploy to Vercel

  1. Push to GitHub
  2. Import the repo in Vercel
  3. Add the environment variables from your .env
  4. Deploy

6. Email notifications (optional)

  1. Create a Resend account and get an API key
  2. Install the Supabase CLI: npm i -g supabase
  3. Link your project: npx supabase link --project-ref YOUR_PROJECT_REF
  4. Set the secret: npx supabase secrets set RESEND_API_KEY=your_resend_key
  5. Deploy the function: npx supabase functions deploy notify-booking --no-verify-jwt
  6. To send emails to any address (not just your own), verify a custom domain in Resend

Project Structure

src/
  components/    UI components (SlotGrid, BookingForm, Layout, etc.)
  pages/         Route pages (Home, CreateRoom, Room, Admin)
  hooks/         Custom hooks (useRoom, useBookings, useTimezone)
  lib/           Utilities (supabase client, slot generation, timezone, slugify, calendar)
supabase/
  migrations/    SQL schema migrations
  functions/     Edge Functions (notify-booking)

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'feat: add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

License

MIT

About

Real-time co-study session scheduler with automatic timezone conversion. Create a room, share the link, let your group book slots; no login required.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors