Skip to content
forked from rudrodip/titan

Next.js 15 fullstack template with better-auth for authentication and drizzle-orm as the orm

License

Notifications You must be signed in to change notification settings

syntax-syndicate/titan-nextjs

 
 

Repository files navigation

Titan

Next.js 15 fullstack template with better-auth for authentication and drizzle-orm as the ORM.

Titan

Warning

This project uses Next.js 15-canary to support node runtime on middleware. This is not yet supported in stable version.

Tech Stack

  • Full-stack framework: Next.js 15-canary
  • UI: Tailwind CSS v4
  • Component library: Shadcn UI
  • Authentication: better-auth
  • Database: postgres
  • ORM: drizzle-orm

Features

  • Authentication
    • Social login
      • Google
      • Github
      • Discord
  • Database
    • Postgres (Neon)
    • ORM: drizzle-orm
  • Next.js API, server actions, and middleware

Getting Started

Clone the repository

git clone https://github.com/rudrodip/titan.git

Install dependencies

bun install

Create environment file

cp .env.example .env

Provide environment variables in .env file

  • BETTER_AUTH_SECRET: Secret key for Better Auth authentication generate one here
  • BETTER_AUTH_URL: Better Auth URL (e.g., http://localhost:3000)
  • DATABASE_URL: PostgreSQL connection string provided from Neon (e.g., postgresql://username:password@neon:5432/titan)

Generate database schema

bun run db:generate

Migrate database

bun run db:migrate

Run the development server

bun dev

Open the browser and navigate to http://localhost:3000

Using a Local Database

Have Docker installed on your system. Before running the db:generate command from Getting Started, run the following command in the project directory to start a local database:

docker-compose up -d

Use the following environment variables in .env file:

  • DATABASE_URL: postgres://postgres:postgres@localhost:5432/titan

Add the pg and @types/pg dependencies to your project:

bun add pg
bun add -D @types/pg

Then, change the /src/lib/db/index.ts file to use the drizzle-orm/node-postgres and pg package instead of @neondatabase/serverless:

import * as schema from "@/lib/db/schema";
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";

const sql = new Pool({
  connectionString: process.env.DATABASE_URL,
});
export const db = drizzle(sql, { schema });

Continue steps from Getting Started e.g. generating the database schema, applying migrations, and running the dev server.

Open the browser and navigate to http://localhost:3000

About

Next.js 15 fullstack template with better-auth for authentication and drizzle-orm as the orm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.0%
  • CSS 3.9%
  • JavaScript 0.1%