← Back to projects
Open Remark
OpenRemark is an open-source, self-hostable comment system designed specifically for static websites ( Astro, Hugo, or Next.js). It aims to provide a fully featured commenting experience with minimal setup.
#OpenRemark - An open-source comment system for static websites
A self-hostable comment system for static websites — Astro, Hugo, Next.js, and any site that accepts HTML.
Features: Google sign-in · threaded replies · spam/moderation dashboard · site teams & roles · shadow DOM widget · origin allowlisting
#Quick start
# 1. Install pnpm install # 2. Configure cp .env.example .env # Fill in GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, AUTH_SECRET, WIDGET_JWT_SECRET # 3. Database pnpm db:migrate pnpm db:seed # optional demo data # 4. Run (also builds widget + generates Prisma client) pnpm dev
Open http://localhost:3000 — sign in with Google to access the dashboard.
#Embed on your site
<!-- Paste anywhere in your post template --> <div data-open-remark data-site-key="YOUR_SITE_KEY" data-slug="/posts/your-post-slug" ></div> <script async src="https://your-domain.com/embed.js"></script>
Get your site key from Dashboard → Sites → Install.
#Framework guides
#Architecture
See docs/architecture.md for system design, request flows, and scaling path.
#Tech stack
| Layer | Tech |
|---|---|
| Framework | Next.js 16 App Router |
| Database | PostgreSQL (Prisma) |
| ORM | Prisma |
| Admin auth | Auth.js v5 (Google OAuth) |
| Widget auth | Widget JWT (jose) |
| UI | shadcn/ui + Tailwind v4 |
| Validation | Zod |
| Widget | Vanilla TS → esbuild |
#Environment variables
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string (e.g. postgresql://user:pass@localhost:5432/zeon) |
AUTH_SECRET |
Auth.js secret (run openssl rand -base64 32) |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
WIDGET_JWT_SECRET |
JWT secret for widget visitor tokens |
NEXT_PUBLIC_APP_URL |
Public app URL (used in embed snippets) |
#License
This project is maintained by Zeon Studio