toa://toacomments

Headless kommentarer for statiske nettsteder.

200 OK

Oversikt

comments er brikken statiske nettsteder ikke kan bygge selv, og fullfører samlingen av backendtjenester for små nettsteder i toa://, ved siden av blog og contact. Lim en Web Component inn på en side, og du har moderert diskusjon med personvernet i behold over et rent REST-API: AI tar seg av spam og ufinheter, og du modererer fra et panel per nettsted. Bygget multi-tenant med row-level security i Postgres som resten av suiten, og med åpen kildekode fra dag én.

Funksjoner

Web Component du limer inn

Legg til <toa-comments> og én script-tag på et hvilket som helst statisk nettsted (Astro, Hugo, Nuxt). Isolert i Shadow DOM, og styles med CSS-variabler.

Moderering med AI

DeepSeek vurderer hver kommentar for spam og ufinheter — de rene publiseres med én gang, de tvilsomme legges i kø, og et regelsett tar over hvis modellen er nede.

Personvernet først

Ingen informasjonskapsler, ingen sporing fra tredjepart. E-postadresser hashes og vises aldri, IP-adresser hashes og slettes automatisk, og avatarene genereres — GDPR-ryddig fra bunnen av.

Tett mot spam

Cloudflare Turnstile, ratebegrensning per nettsted, honeypot og blokkeringsliste — flere lag med forsvar, slik at en offentlig widget aldri trenger å bære på en hemmelig nøkkel.

Multi-tenant

Én tjeneste, mange nettsteder. Row-level security i Postgres holder hvert nettsted for seg, og modereringsflaten er egen per nettsted.

Headless, med admin

Åpent REST-API hvis du vil rendre kommentarene selv, et modereringspanel i Nuxt (single sign-on via toa://auth), og en ferdig kodesnutt til innliming.

Nytt i denne

v0.1.0 2026-06-18
  • added Multi-tenant headless comments backend: per-site RLS (PostgreSQL), SHA-256 API keys, toacomments_app role.
  • added Public read API (GET /api/public/v1/sites/{slug}/threads/{page_key}/comments): approved, depth-1 threaded, paginated, newest/oldest sort.
  • added Comment submission (POST /api/public/v1/sites/{slug}/comments): Cloudflare Turnstile verification, per-IP rate limiting, honeypot, link/length caps, per-site blocklist.
  • added DeepSeek AI moderation gate on submit: spam/toxicity/quality scores decide published / pending / rejected. Rule-based fallback when AI is unavailable.
  • added Token-based edit/delete window (15 min) — no account required.
  • added Generated identicon avatars (SVG data-URI); no Gravatar, no third-party calls.
  • added Hashed email storage (author_email_hash, SHA-256); emails are never stored or returned in cleartext.
  • added IP hashing for rate-limit and abuse tracking only.
  • added Admin API (/api/admin/v1): moderation queue (approve/reject/delete, bulk), per-site settings, API key CRUD, thread browser — Authentik JWT-gated.
  • added <toa-comments> Web Component (Shadow DOM, ~7.6 kB gzipped): embeddable on any static site (Astro, Hugo, Nuxt, plain HTML). Themeable via --toac-* CSS custom properties.
  • added Nuxt 4 admin panel: moderation queue, site settings, API keys, embed-snippet generator — toa:// console design, Authentik OIDC.
  • added Owner review-notify: opt-in email alert when a comment lands as pending (notify_on_pending + notify_email per site). Fire-and-forget via aiosmtplib + FastAPI BackgroundTasks; never blocks submission.
  • added Docker Compose stack: PostgreSQL 17-alpine, FastAPI backend, Nuxt frontend, Traefik labels for comments.toaweb.com.
  • added MIT license, self-host quickstart README, cliff.toml for git-cliff changelog generation.

API

tor@toa: ~ /toacomments --routes
GET /api/public/v1/sites/{site}/threads/{page}/comments
POST /api/public/v1/sites/{site}/comments
GET /embed/toa-comments.js
Flere apper
alle apper →
bl
toa://blog
200 OK

Headless bloggmotor for flere nettsteder. Skriv én gang, publiser til et hvilket som helst toa://-nettsted over et REST-API. Ingen plattform, ingen innlåsing.

CMS FastAPI PostgreSQL Nuxt 4
co
toa://contact
200 OK

Multi-tenant kontaktskjemaer du limer inn. Én linje med iframe på hvilket som helst nettsted, så havner spamfiltrerte henvendelser i nettstedets egen innboks — klare til å leses, besvares og varsles om.

Forms FastAPI PostgreSQL Nuxt 4
ba
toa://backup
200 OK

Multi-tenant orkestrering av databasebackup. Planlegg, overvåk og gjenopprett PostgreSQL, MySQL og SQLite mot eksterne servere og S3-kompatibel lagring.

Infrastructure FastAPI PostgreSQL Nuxt 4