You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A production-grade interview scheduling system that automates the entire interview lifecycle — from availability setup to booking, Google Calendar events, Meet links, and email notifications.
Candidate can cancel or reschedule via links in their email
📡 API Endpoints
Auth
Method
Endpoint
Description
Auth
GET
/api/auth/google
Initiate Google OAuth
Public
GET
/api/auth/google/callback
OAuth callback
Public
GET
/api/auth/interviewers
Get all interviewers
Public
GET
/api/auth/profile
Get interviewer profile
Protected
PATCH
/api/auth/profile
Update interviewer profile
Protected
Availability
Method
Endpoint
Description
Auth
POST
/api/availability
Create availability rule
Protected
Slots
Method
Endpoint
Description
Auth
GET
/api/slots/:interviewerId
Get available slots
Public
DELETE
/api/slots/:slotId
Cancel a specific slot
Protected
Bookings
Method
Endpoint
Description
Auth
POST
/api/bookings
Book a slot
Public
GET
/api/bookings/interviewer
Get interviewer bookings
Protected
GET
/api/bookings/candidate/:email
Get candidate bookings
Public
PUT
/api/bookings/cancel/:bookingId
Cancel booking
Public
PUT
/api/bookings/reschedule/:bookingId
Reschedule booking
Public
GET
/api/bookings/:bookingId
Get booking by ID
Public
Notifications
Method
Endpoint
Description
Auth
GET
/api/notifications
Get all notifications
Protected
PATCH
/api/notifications/:id/read
Mark as read
Protected
PATCH
/api/notifications/read-all
Mark all as read
Protected
Dashboard
Method
Endpoint
Description
Auth
GET
/api/dashboard/stats
Get stats
Protected
GET
/api/dashboard/upcoming
Upcoming bookings
Protected
GET
/api/dashboard/past
Past bookings
Protected
📸 Pages
/ — Login page with Google OAuth + dashboard preview
/dashboard — Interviewer dashboard with stats and bookings
/availability — Manage availability rules and view slots
/notification — Real-time notifications with unread badge
/book — Public interviewer directory for candidates
/book/:interviewerId — Slot browser and booking form
/cancel/:bookingId — Cancel booking via email link
/reschedule/:bookingId — Reschedule booking via email link
/profile — Interviewer profile edit page
/my-bookings — Candidate booking history lookup
⚠️ Important Notes
App is in Google OAuth testing mode — interviewers must be added as test users in Google Cloud Console
Access tokens expire after 1 hour — auto refreshed via refresh token
Refresh tokens expire after 7 days in testing mode — interviewer must re-login
Publishing the app on Google Cloud Console removes the 7-day limit
👨💻 Developer
Made by Om Omer
About
A production-grade interview scheduling system that automates the entire interview lifecycle with Google OAuth, Google Calendar & Meet integration, real-time notifications, and email automation — built with React, Node.js, Express, MongoDB, and Socket.io.