A Calendly-like application for scheduling interviews. This application allows users to connect their Google Calendar and Zoom accounts, set their availability, and let interviewees book interview slots.
- User Authentication: Sign in with Google
- Google Calendar Integration: Sync your availability with Google Calendar
- Zoom Integration: Automatically create Zoom meetings for scheduled interviews
- Availability Management: Set your weekly availability and exception dates
- Interview Settings: Configure maximum interviews per day, advance booking days, meeting duration, and buffer time
- Booking Management: View, confirm, and cancel interview bookings
- Public Booking Page: Share a unique link for interviewees to book interviews
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Backend: Next.js API Routes
- Database: SQLite (via Prisma)
- Authentication: NextAuth.js
- API Integrations: Google Calendar API, Zoom API
- Node.js (v14 or later)
- npm or yarn
-
Clone the repository:
git clone https://github.com/yourusername/interview-scheduler.git cd interview-scheduler
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the root directory with the following variables:# NextAuth NEXTAUTH_URL="http://localhost:3001" NEXTAUTH_SECRET="your-nextauth-secret-key" # Google OAuth GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" # Zoom OAuth ZOOM_CLIENT_ID="your-zoom-client-id" ZOOM_CLIENT_SECRET="your-zoom-client-secret" ZOOM_REDIRECT_URI="http://localhost:3001/api/auth/callback/zoom"
-
Set up the database:
npx prisma db push
-
Start the development server:
npm run dev
-
Open http://localhost:3001 in your browser.
- Sign In: Sign in with your Google account
- Connect Accounts: Connect your Google Calendar and Zoom accounts in the Settings page
- Set Availability: Configure your weekly availability and exception dates
- Share Booking Link: Share your unique booking link with interviewees
- Manage Bookings: View and manage your interview bookings
This project is licensed under the MIT License - see the LICENSE file for details.