
Build and deploy Calendra, a full-stack scheduling app and Calendly clone using Next.js 15 and TypeScript, with Clerk authentication, events and schedule pages, public profiles, and Google Calendar integration.
Calendra offers a Google Calendar–integrated scheduling experience, guiding users from Google sign-in to creating, activating, and booking events, and managing schedules and public profiles.
Set up the calendra app project with Next.js 15, install dependencies, enable TypeScript and Tailwind, and configure the app router and Turbo Pack for a full-stack starter.
Set up a Neon Postgres database for the Calendra app using Drizzle ORM to create a type-safe schema with events, schedules, and availabilities, then generate migrations and launch Drizzle Studio.
Create and render two navigation bars—public for guests and private for signed-in users—within a main layout that uses route groups and clerk to detect the current user.
Build an event form component in a NextJS 15 + TypeScript full-stack app using react-hook-form and shadcn ui, with zod-based schema validation, default values, and create/edit/delete support.
Implement an on submit function for an event form using Next.js server actions to create, update, or delete events, validate with the event form schema, and revalidate the events page.
Create a dynamic event card in a NextJS 15 + TypeScript full-stack Calendra app, featuring duration formatting, active styling, copy event button, and toast feedback.
Create a dynamic edit events page in Next.js 15 at /events/[id]/edit, fetch the event with getEvent, protect it with sign-in, and render an editable form.
Create a schedule page in a Next.js 15 + TypeScript app, fetch the user's schedule and availabilities with a get schedule action, and render a card displaying the schedule.
Build a client-side schedule form in a NextJS 15 + TypeScript full-stack app, featuring time zone selection, a day-grouped availability grid, and robust validation to prevent overlaps and invalid times.
Explore implementing the schedule form onsubmit in a Next.js 15 + TypeScript app, including upserting schedules, deleting and inserting availabilities in batch, and timing validations.
Create a public booking page under the book route in Next.js 15 that shows a public profile via Clerk, with loading and redirect handling and a dynamic user ID.
Create events booking page in a Next.js 15 + TypeScript app, using clerk user id and event id routes, fetch the event, alert if missing, and generate 15-minute time slots.
Implement getValidTimes to filter time slots by user availability and Google Calendar conflicts. Learn to fetch calendar events, group availabilities, and generate valid 15-minute start times.
Create a client MeetingForm in Next.js 15 with TypeScript, merging base, form, and action schemas to validate dates, schedule meetings by time zone, and create Google calendar events.
Deploy your Next.js 15 + TypeScript full-stack Calendra app by creating a private GitHub repo, pushing code, adding a .inv.example, and deploying with Vercel to share a live project.
Wrap up the NextJS 15 + TypeScript full-stack Calendra app course with an engaging outro that thanks viewers for watching.
Build and Deploy a Full-Stack Scheduling App Like Calendly
Tired of the timezone mix-ups, back-and-forth scheduling emails, and calendar confusion? Wish you could build something as sleek and useful as Calendly—with your own hands? You're in the right place.
Welcome to “Build and Deploy a Calendly Clone”, a hands-on, real-world course where you'll learn how to build Calendra—a full-featured, full-stack scheduling app that lets users create events, set availability, and share booking links with the world. Oh, and it even syncs with Google Calendar to make sure meetings actually land where they should.
Whether you're a junior dev looking to level up your full-stack skills, or a mid-level engineer wanting to build something polished and practical, this course is designed to walk you through every step of building a professional-grade SaaS-style product from scratch.
What You’ll Learn
Over the course of this project-based journey, you’ll learn how to:
Build a modern landing page with clean, responsive design that sets the tone for your app. No outdated templates—just fresh, functional UI.
Set up authentication with Clerk, so users can securely register, log in, and manage their own events and schedules.
Design intuitive navigation and user flows, because if users get lost, they won't book meetings.
Create an Events Page, where users can set up different types of events (like 30-min or 60-min meetings) with customizable durations, descriptions, and availability.
Build a dynamic Schedule Page, so users can set their weekly availability in an intuitive, user-friendly interface.
Launch Public Profile Pages, complete with unique URLs, where anyone can book meetings with a user—no signup required.
Integrate with Google Calendar, using Google APIs, to automatically sync meetings and set reminders—so nothing slips through the cracks (or lands at 3 AM).
Handle timezones intelligently, so meetings are booked at the right time no matter where users or their clients are located.
What You’ll Build
By the end of this course, you'll have a fully deployed version of Calendra, a real-world scheduling app that can:
Authenticate users
Let users create and customize events
Let others book time with them based on their availability
Automatically create calendar events in Google Calendar
Prevent double-bookings and timezone confusion
And it will look professional, fast, and modern—ready to show off in your portfolio or even use in production.
Tech Stack
We’re using the latest tools and libraries to build something that feels modern and performant:
Next.js 15 – App Router, Server Actions, Edge-ready by default
React 19 – For building rich, interactive UI
TypeScript – For type-safe, maintainable code
Tailwind CSS v4 – For styling that’s fast, flexible, and easy to customize
shadcn/ui – For beautifully designed, accessible components
Neon – A modern Postgres database with branching and serverless support
Drizzle ORM – Type-safe database queries, schema-first and easy to use
Google Calendar API – For real calendar sync and reminders
Clerk – Modern authentication with email, OAuth, and more
Meet Your Instructor
Hi! I'm Nour, a software engineer and creator of Programming Fluency. I've helped thousands of developers learn how to build real, production-ready apps with clean architecture and modern tools. My goal is to make sure you not only understand what you're building, but that you can confidently build similar projects on your own after the course.
Who This Course Is For
This course is for:
Frontend developers ready to dive into full-stack projects
Backend-curious engineers looking to explore modern UI and tooling
Junior to mid-level devs building portfolio projects that stand out
Anyone who wants to build a real SaaS-style app from scratch
You should have some experience with React and JavaScript/TypeScript. You don’t need to be a backend expert—I'll guide you through it step by step.
By the End of This Course…
You’ll have:
A deployed, fully functional scheduling app
Real-world experience working with APIs, databases, and full-stack logic
A polished project that demonstrates your skills to employers or clients
The confidence to build and ship your own full-stack applications
Ready to Build Something Real?
If you’re tired of toy apps and tutorials that leave you wondering “how does this work in production?”, this course is for you. We’re building a real tool, with real features, that solves real problems.
Join me—and let’s build something amazing together.