toa://blog

Headless multi-site blog engine.

200 OK

OVERVIEW

blog is the writing surface for the whole ecosystem. Posts live once and publish to any toa:// site over a clean, versioned REST API — markdown in, structured JSON out, with a per-site RSS feed for free. Each site is its own tenant: owners invite editors, Postgres row-level security keeps content isolated, and per-site API keys let automations like n8n post on their own. Sign-in is single sign-on via toa://auth; draft → publish is a single status flip.

FEATURES

Headless via API

Public REST endpoints, a per-site RSS feed and sitemap.xml — fetch posts into any site or framework.

Multi-site, multi-editor

Owners invite editors per site; Postgres row-level security keeps each site fully isolated.

Draft, schedule & publish

Draft → published in one flip, or schedule a post for a future time and a worker publishes it automatically.

Media library

Per-site image library — upload, auto-convert to WebP, organise by category and reuse across posts.

Built-in SEO

Per-post meta and canonical, a ready-made BlogPosting JSON-LD block, plus sitemap.xml and RSS for every site.

Revisions & full-text search

Every edit is snapshotted and one-click restorable; full-text search across title, excerpt and content.

Auto-rebuild on publish

A deploy webhook fires on publish so your Cloudflare Pages / n8n build rebuilds itself — GitHub-push to a Hugo/Astro repo is built in too.

Built for automation

Per-site API keys let n8n and external tools read and post programmatically.

WHAT'S NEW

v2.14.0 2026-06-17
  • changed Admin sites IA cleanup. Editor site management is now consolidated under /admin/manage/* (hub, /new, /{slug}); /admin/sites is the superadmin all-sites view only — the two no longer share a route prefix. The sidebar's two duplicate "sites" links are now "my sites" (editor) and "all sites" (superadmin). Removed the unused navigation.ts (a dead second nav definition).
v2.13.0 2026-06-16
  • added Deploy guide — a new /admin/deploy page documenting how to pull your posts into a site over the public REST API (endpoints, post shape, Astro/Nuxt/Hugo/ curl examples, the ready-made SEO/JSON-LD block, auto-rebuild webhook, and the GitHub-push alternative). Examples are pre-filled with your active site's slug.
v2.12.1 2026-06-16
  • added Media library: a site selector in the page header (matching the other admin pages). The library was already per-site under the hood; now you can clearly see and switch which site's media you're viewing, and uploads go to the selected site.

API

tor@toa: ~ /blog --routes
GET /api/public/v1/sites/{site}/posts
GET /api/public/v1/sites/{site}/posts/{slug}
GET /api/public/v1/sites/{site}/feed
POST /api/v1/sites/{site}/posts
MORE APPS
all apps →
co
toa://contact
200 OK

Embeddable, multi-tenant contact forms. Drop a one-line iframe on any site; spam-filtered submissions land in that site's own inbox, ready to read, reply to and get alerted on.

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

Multi-tenant database backup orchestration. Schedule, monitor, and restore PostgreSQL, MySQL, and SQLite to remote and S3-compatible storage.

Infrastructure FastAPI PostgreSQL Nuxt 4
sc
toa://scribe
200 OK

A GitHub-native editor for Hugo and Astro sites. Reads and writes files via the GitHub API, commits to your branch, and lets your build pipeline do the rest.

Editor FastAPI Nuxt 4 CodeMirror 6