
Create a new Next.js 14 app with the latest features using npx create next app, enabling TypeScript, Tailwind CSS, src, app router, and import aliases for your event booking project.
Install and organize npm modules for a Next.js app, including axios, framer motion, mongoose, a date library, react hot toast, and clerk authentication, then structure src with models and folders.
Learn to set up Next UI in a Next.js 14 event booking app, integrate Tailwind CSS, wrap the app with providers, and test components like button, avatar, badge, and modal.
Override the default styling of Next UI components by customizing colors, radii, and sizes in the Tailwind config. Learn when to apply Tailwind classes or CSS modules for targeted styling.
Learn why the Next.js 14 event booking app uses clerk auth for secure, fast authentication, outlining steps: register/login screens, APIs, UI integration, protected routes, and middlewares.
Learn to integrate Clerk authentication into a Next.js 14 event booking app by wiring sign in and sign up pages, provider, and protected routes using env keys.
Style sign in and sign up pages using flex center, apply gray background, hide watermark, and validate the authentication flow with Google sign-in across users.
Connect the Next.js app to MongoDB using a mongoose-based db config, Atlas URL, and Shea Events Udemy database, setting up for the upcoming user model.
Create a Mongoose-based user model in TypeScript with username, email, isActive, isAdmin, Clerk user ID to sync Clerk and MongoDB; fetch email and username via Clerk's user, and export.
Store the current user in MongoDB on first login by checking the clerk user ID, creating or returning a user, and wiring actions in a Next.js 14 event booking app.
Learn to build a reusable layout provider for private pages in a Next.js 14 event booking app, featuring a header, project name, profile button, and role-based menus.
Learn to build dynamic logged-in menus in a Next.js 14 event booking app by creating a current user API, distinguishing admin and user layouts, and rendering private header menus.
Explore admin events page and start the events module in the Next.js 14 app, building new events through a four-step form for general information, location and date, media, and tickets.
Build and organize an admin events area in Next.js 14 with new and edit event pages, dynamic routing for event IDs, and a reusable page title with back navigation.
Build a multi-step event form in a Next.js 14 app by creating a reusable steps component with four stages—general, location and date, media, and tickets—and an active-step navigation.
Describe the general details step of the event form, capturing event name, organizer, and description, plus a guests multi-select that updates the guests array, with an onsubmit handler.
Add and manage guests in the event form by entering single or comma separated values, then display removable chips. Enable next via validation to advance to location and date tab.
Learn to build the event form step for location, date, and time in a Next.js 14 app, implementing location input, date and time fields, and back navigation with pre-populated values.
Set up a Firebase project and configure Firebase storage to store images for the event form, install Firebase, and initialize the app with environment variables for upcoming image uploads.
Enable Firebase storage and implement an image upload flow in the event form, using a temporary newly selected images array to preview and remove files before saving to Firestore.
Design and implement the ticket types step in the event form, enabling adding, editing, and removing tickets with names, prices, and limits, and updating the event state accordingly.
Learn to upload event images to Firebase storage, generate download URLs, and attach them to the event object in the Next.js 14 event booking form.
Define the event model for the Next.js 14 app using a Mongoose schema. Include fields such as name, description, location, date, time, images, guests, ticket types, user reference, and timestamps.
Build an admin-only post api for creating events in Next.js, ensuring frontend and backend models align, authenticate users, and persist events via the event model.
Display added events and enable editing and deleting current events in the Next.js 14 event booking application by fetching events with a server component and rendering a dynamic events table.
Learn to implement the edit event flow in a Next.js 14 event booking app by routing to edit and pre-populating the form with the event fetched by id.
Learn how to manage media in the edit event workflow by displaying newly uploaded and already stored images, enabling deletions, and preparing for the edit operation.
Implement id-based edit and delete operations for events in a Next.js 14 app, including authorization checks, image uploads to Firebase, and updating event data via Axios.
Execute the delete operation in Next.js 14 by selecting an event id, calling axios delete to the admin API, showing loading states, and displaying toast feedback with data refresh.
Learn to render homepage events in a Next.js 14 event booking app by mapping event data, showing image and details, and linking a view button to a book event page.
Design and render a single event page that fetches event data by id from MongoDB, shows tickets, updates total as type and quantity change, and opens a booking modal.
Explore the tickets component of the Next.js 14 event booking app, displaying ticket types, selecting quantity and type, and calculating the final amount using client-side state.
Calculate the total amount for the selected ticket type and count in a Next.js 14 event booking app, display it on a card, and prepare for Stripe checkout.
Set up Stripe in a Next.js app by configuring publishable and secret keys as env variables, installing Stripe libraries, and enabling a backend API to generate the client secret.
generate a stripe client secret on the server using the payment intent with the amount in USD, then pass it to the Stripe Elements form to complete the checkout.
Enable a seamless Stripe payment flow in a Next.js 14 event booking app by showing a modal with a payment form after booking, managing client secrets, elements, and loading states.
Build a booking model with event, user, payment id, payment status, ticket type, tickets count, and total amount, then implement a bookings post API to store new bookings after payment.
Implement and validate per-type ticket limits in a Next.js 14 event booking app by calculating booked tickets from event bookings, computing remaining tickets, and blocking bookings when limits are reached.
Learn to display the user's bookings in the bookings route by querying with the logged-in MongoDB user id, populate the event, and render a header with booking details.
Learn how the admin bookings view displays all event bookings, with booking id, populated user id and name, and event location, date, and time, using reusable components.
Hello, Welcome to the course Next.js 14 Event Booking App
Certainly, I'd be happy to elaborate on the features included in the Next JS v14 Event Booking Application 2023 course.
Create a new Next.js app and understand the folder structure: Begin by setting up a Next.js application, gaining a comprehensive understanding of its folder organization to ensure a solid foundation for development.
Implement authentication, authorization, and protected routes: Secure your application by incorporating robust authentication and authorization mechanisms, and establish protected routes to control access to different parts of the app based on user roles.
Connect our Next.js app to MongoDB: Integrate MongoDB as the database for your Next.js application, ensuring seamless communication and efficient data storage.
A user with admin access will be able to create, edit, and delete new events: Grant administrative users the capability to manage events by creating, modifying, or removing them, providing full control over the event management process.
Once an event is created, it will be available to end users for booking: Enable events to be immediately accessible for booking by end users upon creation, fostering a streamlined and user-friendly booking experience.
End users can view all available events in the portal and book events by paying online using the Stripe payment gateway: Enhance user experience by presenting a comprehensive list of available events, and facilitate online bookings with secure payments through the integration of the Stripe payment gateway.
End users can view their booked events after booking: Allow end users to conveniently track and view the events they have booked, providing transparency and easy access to their event history.
Admin can view all user bookings: Provide administrators with a centralized view of all user bookings, facilitating efficient management and oversight of the booking system.
Admin can cancel bookings and release tickets based on end user requests: Empower administrators to respond to end user requests by canceling bookings and releasing tickets when necessary, ensuring flexibility and customer satisfaction.
Admin can view reports for every event, such as the number of tickets sold and the revenue collected, etc.: Enable administrators to access comprehensive reports for each event, including key metrics such as ticket sales and revenue, allowing for informed decision-making and event performance analysis.