Built a Next.js App
🚑 🩺 I Built a Doctor Appointment App with Next.js, Vonage & Prisma — Here’s What I Learned Recently, I challenged myself to build a Doctor Appointment App — not for a client or company, but purely to learn by doing.
🧠 What’s This App About? The app allows users to book appointments with doctors, while doctors can set their availability, manage bookings, and hold video consultations via Vonage.
🧰 Tech Stack Next.js – For full-stack React-based development
Tailwind CSS – For styling
Prisma – For ORM and database modeling
Vonage – To enable real-time video calls
React – UI rendering and component management
🚀 Key Features 👥 User & Doctor Flow Authentication with protected routes
Onboarding UI and APIs for doctors and patients
Subscription Plan Setup
Apply as a Doctor form
🧠 Admin Functionality Admin login and dashboard UI
Approve or reject doctor applications
Doctor listing management
🧑⚕️ Doctor Tools Set availability (day/time slots)
View appointments
🎥 Video Call Integration Token generation using Vonage
Dedicated Video Call Page
💥 Challenges I Faced Time slot logic: Managing doctor availability and ensuring users can only book valid, non-overlapping slots required careful handling of date-time logic.
API security: Making sure only the right user (doctor/patient/admin) can hit certain endpoints pushed me to think more about roles and access control.
State Management: Syncing front-end UI with server state — especially when bookings were updated or canceled — needed custom hooks and React re-renders at just the right moments.
📚 What I Learned How to structure a real-world full-stack app using Next.js as the foundation
Using Prisma effectively for DB schema, migrations, and queries
Working with third-party APIs like Vonage for live features
Designing with user roles and permissions in mind from the start
🧑💻 Final Thoughts This was more than just a tutorial-style build. I challenged myself to ship something with admin flows, role-based logic, complex data models, and live video capability.
Next, I plan to either refine this app or try my hand at a client project using the same stack. If you’re learning too, I highly recommend picking a real-world use case like this — it forces you to think end-to-end and teaches you way more than following a tutorial.
Would love your thoughts or feedback! Follow me here if you want to keep up with my learn-in-public journey.


