Next 15 starter kit based on Next.js, Auth.js and Prisma designed to accelerate the development of web-based (SaaS) applications.
Get started in about 30 minutes by following these steps.
-
Unpack the Archive
-
Switch to the project's root directory
cd monorepo-next-prisma-authjs
- Install PNPM if not already installed
npm i -g pnpm
- Install the package dependencies of the whole monorepo
pnpm i
- Copy the sample configurations
cp apps/dashboard/.env.example apps/dashboard/.env
cp apps/marketing/.env.example apps/marketing/.env
cp packages/database/.env.example packages/database/.env
- Install PostgreSQL via Homebrew, Chocolatey or download it from the website.
brew install postgresql
- Add an initial user.
sudo -u postgres psql
CREATE USER postgres WITH PASSWORD 'password';
ALTER USER postgres WITH SUPERUSER;
\q
- Update database
packages/database/.env
with your credentials.
DATABASE_URL=postgresql://postgres:password@localhost:5432/database?schema=public
- Apply the database migrations.
pnpm --filter database migrate dev
- Update also the dashboard
apps/dashboard/.env
with your credentials.
DATABASE_URL=postgresql://postgres:password@localhost:5432/database?schema=public
- Visit the Google Cloud Console.
- Create an account if you don't have one already.
- Navigate to APIs or click here
- Configure the
OAuth consent screen
and add yourself as test user. - Click on
Credentials
, create new OAuth credentials and save those credentials. - Add the Authorized JavaScript origin to the credential settings.
http://localhost:3000
- Add the Authorized redirect URI to the credential settings.
http://localhost:3000/api/auth/callback/google
- Update dashboard
apps/dashboard/.env
with the created credentials.
AUTH_GOOGLE_CLIENT_ID=
AUTH_GOOGLE_CLIENT_SECRET=
- Visit the Azure Portal.
- Create an account if you don't have one already.
- Navigate to your Entra ID (Active Directory).
- Register a new application with platform web.
- Click on
Authentication
in the menu and add the redirect URIs
http://localhost:3000
http://localhost:3000/api/auth/callback/microsoft-entra-id
- Under
Certificates & Secrets
, create a new client secret. - Update dashboard
apps/dashboard/.env
with the created secret.
AUTH_MICROSOFT_ENTRA_ID_CLIENT_ID=
AUTH_MICROSOFT_ENTRA_ID_CLIENT_SECRET=
- Visit the Stripe Dashboard.
- Create an account if you don't have one already.
- Activate test mode.
- Activate the customer billing portal.
- Create a product.
- Create a price for the product.
- Navigate to developer section and copy the API credentials.
- Update dashboard
apps/dashboard/.env
with the IDs and credentials.
NEXT_PUBLIC_BILLING_STRIPE_PUBLISHABLE_KEY=
BILLING_STRIPE_SECRET_KEY=
BILLING_STRIPE_WEBHOOK_SECRET=
BILLING_PRO_PRODUCT_ID=
BILLING_PRO_PRODUCT_PRICE_ID=
The starter kit supports NodeMailer (SMTP) and Resend.
- Choose an SMTP provider (Gmail for testing is fine).
- Update dashboard
apps/dashboard/.env
with SMTP credentials.
EMAIL_FROM=
EMAIL_MAILER=NodeMailer # NodeMailer (default) | Resend
# NodeMailer
EMAIL_NODEMAILER_URL=
# Resend
EMAIL_RESEND_API_KEY=
For Gmail you need an app-specific password and set it up like this
EMAIL_NODEMAILER_URL=smtp://myemail@gmail.com:suyz yeba qtgv xrnp@smtp.gmail.com:465
SMTP provider is mandatory for credentials login.
- Start the dashboard application
pnpm --filter dashboard dev
- Navigate to http://localhost:3000
You’re all set to start!
- Start the marketing application
pnpm --filter marketing dev
- Navigate to http://localhost:3001
You’re all set to start!
Restart VS code (or the TS server).
The database is probably not set up.
In v2 npm is no longer supported. It's all pnpm now. The problem is that npm, yarn and pnpm have different workspace syntax and package hoisting patterns, supporting all package managers is not possible in a monorepo setup.