Inkwell is a minimal long-form writing platform built with Next.js, Prisma, and NextAuth. It supports account creation, social + credentials sign-in, publishing posts with tags, and bookmarking posts for later reading.
- Framework: Next.js 16 (App Router), React 19, TypeScript
- Auth: NextAuth (Credentials, GitHub, Google) + Prisma Adapter
- Database: PostgreSQL via Prisma with Neon HTTP adapter
- Styling: Global CSS + Tailwind dependencies
- Elegant landing page for signed-out and signed-in users
- Email/password signup with hashed passwords (
bcrypt) - OAuth sign-in with GitHub and Google
- Create and publish posts
- Tag support on posts
- Read latest published posts
- Bookmark/unbookmark posts
- Personal bookmarks page
app/— routes, API handlers, layout, providerscomponents/— UI and feature components (auth, posts, navbar)lib/— auth config, Prisma client, server actions, schemasprisma/— schema, generated client output, migrationstypes/— type augmentation (NextAuth session/JWT)
- Node.js 20+
- npm 10+
- A PostgreSQL database (Neon or compatible)
Create a .env file in the repository root:
DATABASE_URL=postgresql://...
NEXTAUTH_SECRET=your-secret
GITHUB_ID=...
GITHUB_SECRET=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...-
Install dependencies:
npm ci
-
Generate Prisma client (also runs automatically on install via
postinstall):npx prisma generate
-
Run Prisma migrations:
npx prisma migrate dev
-
Start the dev server:
npm run dev
-
Open http://localhost:3000.
npm run dev— start local development servernpm run build— build production bundlenpm run start— start production servernpm run lint— run ESLint
npm run buildsucceeds in the current repository state.npm run lintcurrently reports pre-existing lint issues unrelated to this README refresh.