Welcome to the Speaker Session Booking backend system!
This project enables users to browse available speakers, view expertise, and book sessions conveniently with OTP-based authentication, protected routes, email notifications, and Google Calendar event creation.
- Hosted at: https://speakersessionbooking.vercel.app/
- API Documentation (Swagger): https://speakersessionbooking.vercel.app/docs
- Backend Framework: FastAPI (Python)
- Database: PostgreSQL (via Supabase)
- Authentication: JWT Token based
- Rate Limiting: SlowAPI
- Email Service: SMTP (Gmail)
- Google Calendar Integration: Google OAuth2 API
- Hosting: Vercel (Frontend)
- Signup with email and password
- Email OTP verification before login
- JWT token generation upon successful login
- Role-based access control (
user,speaker)
- Speakers can create profiles with their expertise and price per session
- Protected route: only authenticated speakers can create listings
- Authenticated users can browse available speakers
- Users can book 1-hour time slots between 9 AM to 4 PM UTC
- Double booking is prevented automatically
- Once a session is booked, the selected time slot becomes unavailable
- Email notifications are sent to both speaker and user upon booking
- Google Calendar event is automatically created and shared with both parties
- Full interactive API documentation available at
/docs(Swagger UI) - All request and response samples documented clearly
| User Signup | OTP Verification | Successful Login |
|---|---|---|
![]() |
![]() |
![]() |
| Speaker Listing | Session Booking (Step 1) | Session Booking (Step 2) |
|---|---|---|
![]() |
![]() |
![]() |
📂 Screenshots are placed inside the
/screenshotsfolder.
- User signs up ➔ Receives OTP ➔ Verifies OTP
- Successful login ➔ Receives JWT token
- Token must be passed in the
Authorization: Bearer <token>header for all protected routes
Note: Only the test users added to our Google Cloud Console project can successfully complete the signup process as a speaker account by authorizing with the Google OAuth flow.





