This project build by Next.js 13 APP Router, using NextAuth for authentication, Modal Intercepting Routing for /login modal or route, and styled by Tailwind. This project also included a sample protected route and sub-routes too, It is useful for making admin dashboard. I used Route Groups to make multiple root layouts for each of home page and admin dashboard separatly.
I made this project to help me understand how to use Next.js 13 APP Router structure and how to setup NextAuth, also to have a simple starter template for my future projects that need authentication.

Getting Started
Clone the repository and navigate into the project directory:
Create your .env file as the following or from the .env.example and fill it with your credentials, in the case of database I used Postgres hosted on Vercel with Prisma ORM, setup your database and fill the POSTGRES_PRISMA_URL and POSTGRES_URL_NON_POOLING with your database credentials.
# Only required for localhost
NEXTAUTH_URL=http://localhost:3000
# Only for production – generate one here:
# https://generate-secret.vercel.app/32
NEXTAUTH_SECRET=""
GITHUB_CLIENT_ID=""
GITHUB_SECRET_ID=""
GOOGLE_CLIENT_ID=""
GOOGLE_SECRET_ID=""
POSTGRES_PRISMA_URL=""
POSTGRES_URL_NON_POOLING=""
Then, install all packages and run the development server:
npm install
npm run dev
Open http://localhost:3000 to see the result.
This project have two Routing Groups (home) and (admin) to have seperate root layouts for each. The (home) is for our root segment / that you can start editing the home page by modifying app/(home)/page.tsx. The (admin) is for our admin dashboard segment /admin that you can start editing the admin dashboard by modifying app/(admin)/admin/page.tsx.
Here a screenshot of admin page with CRUD functions under /posts folder, by reviewing the codes you can learn more about how to use server actions in client side, how to create modal and forms and much more:

Upcoming actions:
- Implement authorization for API routes.
- Utilize the Prisma provider for efficient token and user management.
- Incorporate a secure Login with email / password functionality.