Let's take a brief tour of the GPT Chat application that we'll be building throughout this course. The app is built using Next.js and incorporates various features such as user authentication, file-based routing, and server-side rendering. We'll also explore the deployment process using Vercel.
Authentication
The application is an authenticated app, which means that users need to log in to access its features. We'll be using the open-source NextAuth library to manage user authentication. NextAuth supports various authentication providers, allowing users to sign in through popular services like GitHub or using a database with email and password credentials.
Home Page
Upon logging in, users are greeted with the home page, which consists of two main sections:
- A list of saved chats with ChatGPT
- An input field to initiate a new chat
When a user starts a new chat by pressing return, they are automatically redirected to the chat detail page.
Chat Detail Page
The chat detail page is a separate route that displays the transcript of the user's conversation. It also includes a menu of all the user's previous chats in a parallel route on the side. Users can seamlessly navigate between different chats by clicking on them in the menu.
About Page
The application also features an /about
route, which leads users to an informative About Us page.
Sign Out
To ensure security and privacy, users can sign out of the application when they're done. This action returns them to the beginning of the authentication flow, requiring them to log in again to access the app's features.
Deployment
Throughout the development process, we'll be running the application locally using localhost. However, we'll also explore the step-by-step process of deploying the app to Vercel, showcasing a complete CI/CD flow. This will give you a comprehensive understanding of how to deploy a Next.js application to a production environment.
Learning Objectives
In this first section, we'll cover the fundamental concepts of Next.js, including:
- File-based routing
- Client and server components
- Server actions
- Streaming
- Parallel routes
Getting Started
Now that you have an overview of the application and its key features, let's dive in!