No description
Find a file Use this template
2026-05-14 23:27:23 +02:00
.github/workflows ci: add GitHub lint workflow 2026-04-21 21:09:14 +02:00
.sisyphus feat(legal): add GDPR-compliant cookie consent banner 2026-05-02 16:02:13 +02:00
bin feat(tooling): add project init script 2026-04-21 21:09:09 +02:00
convex feat(auth): add Google and GitHub OAuth support 2026-05-14 23:27:23 +02:00
messages feat(auth): add Google and GitHub OAuth support 2026-05-14 23:27:23 +02:00
src feat(auth): add Google and GitHub OAuth support 2026-05-14 23:27:23 +02:00
.env.example chore(env): update .env.example and allow it in gitignore 2026-04-21 21:09:40 +02:00
.gitignore chore(env): update .env.example and allow it in gitignore 2026-04-21 21:09:40 +02:00
.oxfmtrc.jsonc feat: tooltip, password hardening 2026-04-01 20:59:46 +02:00
.oxlintrc.json build: migrate to oxlint 2026-03-27 23:59:51 +01:00
AGENTS.md docs: rewrite AGENTS.md with full architecture and conventions 2026-04-21 21:08:56 +02:00
CLAUDE.md Initial commit from Create Next App 2026-03-25 23:05:06 +01:00
components.json feat: init shadcn 2026-03-30 22:11:08 +02:00
DEVELOPMENT.md docs: rewrite README and update DEVELOPMENT guide 2026-04-21 21:37:24 +02:00
eslint.config.mjs feat(legal): add GDPR-compliant cookie consent banner 2026-05-02 16:02:13 +02:00
features.md docs: add comprehensive feature roadmap 2026-05-02 16:10:43 +02:00
next.config.ts feat: i18n, migrate to pnpm, tmuxinator config file 2026-03-27 23:43:18 +01:00
package.json feat(email): add Resend integration with password reset and email verification 2026-04-21 21:37:09 +02:00
pnpm-lock.yaml feat(email): add Resend integration with password reset and email verification 2026-04-21 21:37:09 +02:00
postcss.config.mjs Initial commit from Create Next App 2026-03-25 23:05:06 +01:00
README.md docs: rewrite README and update DEVELOPMENT guide 2026-04-21 21:37:24 +02:00
tmuxi.template.yml build: migrate dev server to webpack 2026-03-28 11:21:58 +01:00
tsconfig.json feat(i18n): add locale-based routing setup 2026-04-21 20:53:09 +02:00

convex-next-saas

A personal, opinionated SaaS template built for speed. Next.js 16 + Convex self-hosted + Better Auth + Resend.

This template is tailored for self-hosted Convex on Coolify with a private Forgejo workflow. It's not trying to be a generic marketplace template — it's the setup I actually use to ship projects fast.

Stack

  • Frontend: Next.js 16 (App Router), React 19, TypeScript 5, Tailwind CSS 4
  • Backend: Convex self-hosted (Docker on Coolify)
  • Auth: Better Auth (email/password, email verification, password reset)
  • Email: Resend (free tier: 3,000 emails/month)
  • UI: shadcn/ui (radix-nova), @hugeicons/react
  • i18n: next-intl v4 with locale routing (/en, /pl)
  • State: RSC + Client Components hybrid
  • Validation: Zod v4
  • Linting: ESLint + oxlint

What's Included

  • Email/password auth with HIBP password checking
  • Email verification flow
  • Forgot / reset password flow
  • Change password (authenticated)
  • Locale-based routing (EN / PL)
  • Theme switching (dark/light/system)
  • Protected routes with redirect + callbackURL
  • Runtime env validation (Zod)
  • GitHub Actions CI (lint + build)
  • Project init script (bin/init-template.mjs)

Quick Start

git clone <your-forgejo-repo> my-project
cd my-project
pnpm install

# Copy and fill env vars
cp .env.example .env.local

# Set up Convex backend (see DEVELOPMENT.md)
# Then:
pnpm dev --webpack

⚠️ Always use --webpack — Turbopack is broken in Next.js 16.2.1 (900% CPU spike).

Project Bootstrap

node bin/init-template.mjs my-project
cd my-project
# Fill .env.local, deploy Convex, done.

Docs

  • AGENTS.md — Architecture, conventions, and anti-patterns for AI agents
  • DEVELOPMENT.md — Local setup, Coolify deployment, troubleshooting

Environments

  • Dev: develop branch
  • Prod: main branch

License

MIT — do whatever you want.