We may earn an affiliate commission when you visit our partners.
Colby Fayock

Next.js has become well-known for its ability to build fast, reliable full stack apps.

And with good reason. It's developer experience is top notch and its wide range of features help to easily build performance-first apps while being able to focus on the unique challenges of your app.

With Next.js 15 and React 19 coming soon, its more important than ever to make sure you have a full understanding of now only how Next.js works, but how the newer React features can help you build amazing experiences.

This course will help you build a Full Stack Invoice app using Next.js 15.

Read more

Next.js has become well-known for its ability to build fast, reliable full stack apps.

And with good reason. It's developer experience is top notch and its wide range of features help to easily build performance-first apps while being able to focus on the unique challenges of your app.

With Next.js 15 and React 19 coming soon, its more important than ever to make sure you have a full understanding of now only how Next.js works, but how the newer React features can help you build amazing experiences.

This course will help you build a Full Stack Invoice app using Next.js 15.

Not only will we learn the intricacies of Next.js 15 and React 19, we'll also learn how to:

  • Design responsive components using Tailwind and shadcn/UI

  • Add authentication with social login, organization support, and MFA with Clerk

  • Create and manage databases and relationships accross tables with Xata

  • Query and wrangle data on a Postgres server (Xata) with Drizzle ORM

  • Process payments for invoices using Stripe

  • Build custom email templates in React with React Email

  • Send transaction emails with Resend

  • Deploy your app to Vercel

  • And looooots of important concepts in between

Ready to get started? Let's dig in.

Enroll now

What's inside

Learning objectives

  • Build an invoice app with nextjs 15
  • Apply new react 19 features
  • Design responsive components with tailwind and shadcn/ui
  • Add authentication, organization management, and mfa with clerk
  • Manage postgres databases with xata
  • Query data relationships with drizzle orm
  • Accept payments with stripe
  • Build email templates with react email
  • Send transactional emails with resend

Syllabus

Introduction & Getting Started

Learn how to build a Full Stack Next.js Invoice app using modern web development tools. In this video, we'll walk through what you can expect out of this course including what tools we'll use and how to get started.

Read more

Create a new Next.js app using Create Next App.

Using Tailwind and shadcn/ui to create a new dashboard page where we'll get started with our invoices.

Forms are a critical part of being able to create new invoices. We'll see how we can add a new form to our web app.

The first step in setting up a new database is installing and configuring our project tools. Here we'll walk through setting up and configuring Xata and Drizzle ORM.

It's important to consider what information will go into a database before designing a table. Here we'll write our first schema for our Invoices.

Now that we've written our database schema, we can push our schema to the database itself. We'll generate and run migrations using Drizzle Kit and push them out to Xata.

Service Actions are a newer feature of React and Next.js that allow us to run server-like code from within components. We'll see how we can hook up our form with server actions to create a new invoice.

When building web apps, we want to make sure that our project can function in environments with and without JavaScript, which is where Progressive Enhancement comes in to have a baseline without JavaScript, but improve the experience where we can when JavaScript is enabled. We'll see how to do this natively with React 19 and with the new Next.js 15 Form component.

Now that we have data in our database, we can start to list out our invoices so we can explore our data in the UI.

Here we'll create dynamic routes in Next.js to view individual invoices.

Building a good experience includes handling errors. We'll see some ways we can take advantage of React and Next.js APIs to manage our error states.

When creating invoices, we're dealing with sensitive data, meaning we need to make sure we lock down our app. Here we'll use clerk to add social login using Google.

Adding log in capabilities is just the first step to securing an app, we need to make sure the pages are actually protected. Here w'll use Clerk Middleware to prevent unauthorized access to our invoices.

Now that we're managing authentication, we need to integrate common UI patterns to make it easy to navigate around the app and manage authentication state. Here we'll add a header and footer to the app using Next.js layouts.

Clerk comes with built-in login and signup pages, but they're hosted on Clerk. We can instead set up our own self-hosted pages so we can continue the same experience as our users are working through the authentication flow.

With our new custom authentication pages comes even more customization options using Clerk Elements, a suite of components, which gives us full control over how we present our UI, while allowing us to easily interface with Clerk.

Depending on your security needs, sometimes social or email login isn't enough. We can add MFA or Multi-Factor Authentication to level up our security, requiring an authenticator app to log in.

Instead of using passwords to log in, we can use Passkeys, which bring strong security and an easy-to-use experience for our users.

Server actions are a great way to manage data, but they aren't secure by default. We'll make sure our server actions are locked down using Clerk authentication.

Whenever we create a new invoice, we want to make sure it's associated with a specific user. Here we'll add a relationship to our Invoices table to specify which user each invoice was created by.

Since we may have multiple users in our app, we don't want people to see other invoices they don't have authorization to see. We can restrict access now that we have the user ID relationship in our invoice table, to prevent anyone who didn't manage the invoice from viewing it.

Whether our invoice is paid, void, or uncollectible, we need a way to update the status. Here we'll use server actions and a dropdown UI to allow our invoice manager to update the status of an invoice.

When triggering changes on a database, it can take some time to make the trip to the database, make the change, and back. Through that time, our UI may look slow and unresponsive, but instead, we can use Optimistic UI patterns to immediately reflect the change, and make the change in the background, or reverse if it fails.

In addition to change the status of an invoice, we need a way to flat out delete an invoice. Here we'll see how we can delete table rows for allowing our users to delete an invoice.

You can't undo a deletion, but what you can do is put an extra confirmation step, to make sure someone didn't accidentally click the wrong thing. We'll use a modal confirmation box to give our users the opportunity to confirm (or cancel) their deletion of an invoice.

When creating an invoice, each one will be associated with a customer, which we'll need to managing and contacting that customer for payment. We'll create a new relationship to a Customers table to create a good way to manage our data.

Now that we have our customer data associated with invoices, we need a way to access it. We'll see how we can join tables to easily access our relationship data in the app.

Sometimes invoices and data needs to be managed not only at a personal level, but at an organization level. Here we'll see how easy it is to set up organizations with Clerk.

Now that we're managing organizations, we need to relate creating an invoice to an organization much like we did with a user ID. Here we'll create the relationship in our Invoice table to an organization so we can later manage our data at the different levels.

Organization management brings a different type of data access, where someone could create a personal invoice but also an organization level invoice. Here we'll update our queries to make sure that we're querying for the right data depending on the account state our user is in.

The most important part of an invoice is accepting payments. We'll use Stripe to manage our payments and to get started, we need to install and configure Stripe in our app.

In order to allow our clients to pay, we need a public page available for them to access the invoice. Here we'll create a new public page where our clients can easily drop in to make a payment.

With our new public payment page, we need a way to kick off the payment session. We'll use Stripe Checkout and create a new payment session using server actions whenever our customer is ready to pay.

Once our user returns back from payment, we need to handle the invoice state, whether updating to "paid" or dealing with someone cancelling the payment. We'll use URL parameters and access the Stripe session to manage our ideally paid invoice.

An invoice a client doesn't know about is as good as no invoice at all. To fix this, we can create a new invoice email and to start, we need a template. Here we'll use React to create a responsive email template with ease using React Email.

Now that we have our template, we need a way to send it. We'll use Resend to send our transactional emails, including sending a notice to our client whenever a new invoice is created.

Our app is ready to go, all that's left now is to ship it! We'll use Vercel to deploy our invoice app to the world.

I hope you learned a lot in this course, here we'll wrap up and see what's next!

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Next.js 15 and React 19, which are cutting-edge tools for building full-stack web applications, making it relevant for developers looking to stay current
Covers authentication with Clerk, database management with Xata and Drizzle ORM, and payment processing with Stripe, which are all essential components of modern web applications
Teaches how to design responsive components using Tailwind and shadcn/UI, which are popular tools for creating modern and visually appealing user interfaces
Explores building custom email templates with React Email and sending transactional emails with Resend, which are valuable skills for enhancing user engagement and communication
Requires familiarity with React and Next.js, so learners without prior experience may need to acquire foundational knowledge before taking this course
Relies on specific third-party services like Clerk, Xata, Stripe, React Email, and Resend, which may introduce dependencies and potential costs for learners

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Full stack next.js 15 invoice app

According to students, this course offers a highly practical, project-based approach to building a full-stack invoice application using modern tools like Next.js 15 and React 19. Learners particularly value the coverage of key integrations such as authentication with Clerk, database management with Xata and Drizzle, and payment processing with Stripe. While many find the content highly relevant and up-to-date, some note that it covers a lot of ground quickly and suggest having some prior experience with React or Next.js can be beneficial. Overall, it's seen as a comprehensive and valuable learning experience for modern web development.
Instructor is knowledgeable and easy to follow.
"The instructor explains complex topics clearly and concisely."
"Videos are well-paced and easy to understand."
"Great teaching style, made learning the new concepts enjoyable."
Keeps pace with rapid framework changes.
"It was great to see the latest features like Server Actions used in a practical way."
"Appreciate that the course is updated for Next.js 15 and React 19."
"Staying current with cutting-edge features is definitely a strength here."
"The instructor does a good job of explaining the newer paradigms."
Deep dives into auth, payments, database, email.
"Integrating Clerk for authentication and Stripe for payments felt like building a real production app."
"The sections on Xata and Drizzle ORM were very clear and practical."
"Learning how to send transactional emails with React Email and Resend was a valuable addition."
"The course covers many essential third-party services needed for full-stack apps."
Builds a complete, real-world application.
"Building a full-stack invoice app from scratch was incredibly practical."
"I appreciate the hands-on approach, it's the best way to learn."
"Following along to build a complete project really helped solidify the concepts."
"I loved that we built a usable app with authentication and payments."
Utilizes Next.js 15, React 19, and ecosystem tools.
"It's great to learn Next.js 15 and React 19 features like Server Actions."
"The course uses a fantastic modern stack including Tailwind, Clerk, Xata, Drizzle, Stripe."
"Staying current with Next.js 15 and React 19 is a big plus for this course."
"Learning how all these modern libraries integrate was super helpful for building real-world apps."
Best suited for those with prior Next/React knowledge.
"This course moves at a fast pace, make sure you're comfortable with React and Next.js fundamentals first."
"Some sections assume prior knowledge of concepts, which might be challenging for complete beginners."
"If you are new to Next.js, be prepared to do some extra reading alongside the course."
"I found it helpful that I already had a good grasp of React before starting this."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Full Stack Next.js 15 Invoice App with these activities:
Review React Fundamentals
Solidify your understanding of React fundamentals, including components, state management, and JSX, to better grasp the new React 19 features used in the course.
Show steps
  • Review the official React documentation on components and props.
  • Practice building simple UIs with React.
  • Familiarize yourself with React hooks like useState and useEffect.
Brush up on Tailwind CSS
Practice using Tailwind CSS to style components, focusing on responsive design principles, to prepare for the course's emphasis on Tailwind and shadcn/UI.
Browse courses on Tailwind CSS
Show steps
  • Review Tailwind's utility-first approach to CSS.
  • Practice building layouts using Tailwind's grid and flexbox classes.
  • Experiment with Tailwind's responsive modifiers.
Read "Fullstack React with Next.js"
Deepen your understanding of full-stack Next.js development by reading this book, which covers key concepts and provides practical examples.
Show steps
  • Read the chapters related to Next.js routing and API development.
  • Experiment with the code examples provided in the book.
  • Take notes on key concepts and techniques.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple CRUD App with Next.js
Gain hands-on experience with Next.js by building a simple CRUD (Create, Read, Update, Delete) application, reinforcing your understanding of forms, data handling, and routing.
Show steps
  • Set up a new Next.js project.
  • Design a simple data model for your application.
  • Implement the CRUD operations using server actions.
  • Create a UI for interacting with your data.
Document Your Learning Journey
Reinforce your learning by documenting your progress, challenges, and solutions throughout the course in a blog or personal journal.
Show steps
  • Create a blog or journal to document your learning.
  • Write about the concepts you're learning in each module.
  • Reflect on the challenges you face and how you overcome them.
  • Share your insights and code snippets with others.
Read "Production-Ready Microservices"
Understand the architecture of the application and how to deploy it to production by reading this book.
Show steps
  • Read the chapters related to microservices architecture.
  • Experiment with the code examples provided in the book.
  • Take notes on key concepts and techniques.
Contribute to a Next.js Open Source Project
Deepen your understanding of Next.js and contribute to the community by contributing to an open-source project, gaining experience with real-world codebases and collaboration.
Show steps
  • Find a Next.js open-source project on GitHub.
  • Identify an issue or feature you can contribute to.
  • Submit a pull request with your changes.
  • Respond to feedback from the project maintainers.

Career center

Learners who complete Full Stack Next.js 15 Invoice App will develop knowledge and skills that may be useful to these careers:
Full-Stack Developer
A Full Stack Developer works across the entire application stack from the user interface to the server and database, and this course provides a comprehensive approach to full stack development. It not only uses Next.js 15 and React 19 to build the frontend, but also covers database management with Xata and Drizzle ORM, and also how to process payments with Stripe. This course also shows how to integrate authentication using Clerk, send emails with Resend, and deploy applications with Vercel. A Full Stack Developer would find the end-to-end application development experience provided by this course extremely useful.
Web Application Developer
A Web Application Developer creates interactive and dynamic web applications, and the course builds a solid foundation for this career. This course provides hands-on experience in developing a full stack invoice application from scratch. With extensive use of Next.js 15 and React 19, a web application developer gains experience with modern frameworks. Additionally, skills in handling databases, payment processing, authentication, and deployment as covered in the course are essential for web application development. All of these topics are needed to build a complex application, like the one built in the course.
Software Engineer
Software Engineers design, develop, and maintain software applications, and this course provides practical experience in building a real-world web application. The course covers the full development lifecycle, from designing a user interface with React and Tailwind, to managing data with Xata and Drizzle ORM, to deploying the app to Vercel. Moreover, the course exposes learners to crucial software engineering concepts such as authentication, payment processing, and transactional emails. This course provides a valuable hands-on project that mirrors the kind of applications Software Engineers work on.
Frontend Engineer
A Frontend Engineer builds user interfaces and experiences, and this course helps to make those experiences dynamic and interactive with modern tools. This course uses Next.js 15 and React 19 to build a full stack invoice application, meaning learners will gain hands-on experience with the latest versions of popular frontend frameworks. Moreover, the course emphasizes responsive design using Tailwind and shadcn/UI, which are crucial skills for any frontend engineer. By building a complete application, the course goes beyond theory and produces a project that can be added to a portfolio.
Backend Developer
A Backend Developer focuses on the server-side logic and database management, and this course is helpful for a developer wishing to learn how to integrate these components into a full-stack application. The course covers the use of Xata and Drizzle ORM for database management which is a critical skill for any backend developer. Although the course is full stack, its focus on server actions, database relationships, and payment processing makes it particularly useful for a backend engineer. Also, the course teaches how to send transactional emails with Resend for automated communication with a user.
UI Designer
A UI Designer focuses on how the user will interact with an application. This course teaches how to produce responsive components using libraries such as Tailwind and shadcn/UI. Although this course is for all layers of a web application, a UI designer will benefit from the hands-on experience in building a user-friendly interface. A UI designer will also learn about building complex interactions using forms and handling errors, all from the perspective of a developer's experience.
Database Administrator
A Database Administrator manages and maintains databases, and this course offers an opportunity to understand how a database is integrated into a modern web application. This course uses Xata and Drizzle ORM for database management and also covers relational databases. The course work teaches how to design a schema, push to the database, and query the database which are essential skills for a Database Administrator. While not the primary focus, the course provides a practical, hands-on database application experience.
DevOps Engineer
A DevOps Engineer focuses on the automation and management of software deployment. This course introduces learners to the process of deploying a full stack application using Vercel. Although the course does not focus exclusively on DevOps, it provides valuable experience in deploying applications, a core task of the DevOps Engineer. The hands-on experience with deployment, managing server actions, and understanding the deployment lifecycle are all skills that a DevOps engineer will value.
API Developer
An API Developer creates and manages application programming interfaces that allow different systems to communicate. Though not the primary focus of the course, API interaction is essential to the invoice application, and the Stripe integration provides a practical example. The course's exploration of server actions, data querying, and integration with services like Stripe and Clerk will help an API developer. The focus on integrating third-party services in a secure and efficient manner is key to creating robust APIs.
Entrepreneur
An Entrepreneur creates and manages their own businesses. This course may be useful to entrepreneurs who want to learn the technical skills necessary to build a web application. The course covers the full stack development including frontend design, database management, authentication, payment processing, and deployment. All of these are essential to building a web-based product. If an entrepreneur is involved in the development of their product, this course provides a practical understanding of how to build a full application.
Solutions Architect
A Solutions Architect designs and oversees the implementation of software solutions. This course may be useful in that it provides a complete view of how various technologies and services can be integrated to build a web application. This course helps provide a hands-on understanding of the full web application lifecycle, which a Solutions Architect can leverage to design systems. The course uses modern tools and technologies, and a Solutions Architect should be aware of how these integrate into the larger picture of an application.
Technical Project Manager
A Technical Project Manager oversees project planning, execution, and delivery. This course gives a good overview of the technologies and processes involved in developing a modern web application. This includes everything from frontend development to database management to deployment. The course provides a good sense of how different tech pieces fit together, which is helpful for technical project managers who are overseeing web application development projects. This project involves the whole life cycle of an application, and will be useful for a project manager.
Technical Consultant
A Technical Consultant provides expertise to clients on technology solutions and strategies. The course covers a wide range of web development topics, and it can allow a technical consultant to understand the technologies used in modern web development projects. This includes frontend frameworks, database interactions, and deployment strategies. A technical consultant may find value in having a modern example to support technical guidance.
Product Manager
A Product Manager is responsible for the strategy, roadmap, and feature definition of a product. This course may be useful to a product manager in that it provides a hands-on view of the technology that goes into building a web application. It explains the development process and the technologies involved, including frontend, backend, database, and deployment technologies. This course provides insight into the development process of a full stack web application, potentially aiding in product decisions.
IT Support Specialist
An IT Support Specialist provides technical support to end-users and ensures the smooth functioning of IT systems. While not directly related to the day-to-day tasks of an IT Support Specialist, the course may be helpful for understanding the fundamental concepts of web applications which can become part of systems that specialists maintain. The course covers the architecture of modern web applications and how the different pieces fit together.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Full Stack Next.js 15 Invoice App.
Provides a comprehensive guide to building full-stack applications with React and Next.js. It covers topics such as server-side rendering, routing, and API development, which are all relevant to the course. While not strictly necessary, it offers a deeper dive into the concepts covered in the course and can serve as a valuable reference.
Is about building microservices. It covers topics such as designing microservices, building them, testing them, deploying them, and monitoring them. This book is useful for understanding the architecture of the application and how to deploy it to production. It is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser