Secure API playground built with Next.js App Router, Hono, Better Auth, Drizzle, PostgreSQL, and R2.
- Email/password signup and login with Better Auth.
- Protected API endpoints (
/api/auth/me,/api/auth/secure-message). - Secure message workflow that stores text files in R2 and metadata in PostgreSQL.
- Web Push subscription management and test delivery (
/api/notifications/*).
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS v4
- API: Hono
- Auth: Better Auth
- Database: Drizzle ORM + PostgreSQL
- Storage and Push: Cloudflare R2 (aws4fetch), web-push
- Tooling: pnpm, Vitest, Biome, ESLint, Prettier, Lefthook
- Node.js
22.14.0(see.node-version) - pnpm
10.x - Docker (for local PostgreSQL)
cp .env.example .env
pnpm i
pnpm devpnpm dev starts the database, runs Drizzle generate/migrate, and launches Next.js.
pnpm dev
pnpm db:down
pnpm build
pnpm start
pnpm test
pnpm lint
pnpm fmtBETTER_AUTH_URLBETTER_AUTH_SECRETDATABASE_URLR2_S3_URLR2_ACCESS_KEY_IDR2_SECRET_ACCESS_KEYR2_PUBLIC_URLNEXT_PUBLIC_VAPID_PUBLIC_KEYVAPID_PRIVATE_KEY
See .env.example for local defaults.