Roadmap
Spillway is built in phases. Each phase ships as a usable release; nothing in a later phase is required to run the earlier ones. Dates are not promised. Items move between phases as we learn. Phases 1 to 3b and the Phase 4 features are built; what is still ahead is listed under Phase 4 and in open-decisions.md. The notes per version are in CHANGELOG.md.
Phase 1: Foundation (v0.1, built)
The goal is a CMS one person can install in five minutes and use to publish real pages.
- Content types with typed fields, stored in SQLite (typed columns plus JSON data)
- Entities with revisions, statuses (draft, review, published, archived) and restore
- Users, roles and permissions; cookie sessions; CSRF protection
- Visual page builder with Puck and the core block library (
@spillway-cms/blocks) - Server rendering of published pages with cache tags and
X-Spillway-Cacheheaders - Media upload and a media library
- Setup wizard, site settings and theme tokens
- Admin SPA served by the same process as the API and the public site
- Docker image,
docker composefile,spillway export
Phase 2: Marketer-ready (built)
What a marketing team needs before it will move a real site onto Spillway. Everything in this list shipped; the admin walkthrough is getting-started.md.
- Collections and site search (lists of posts, filters, a search endpoint)
- SEO fields on every type with a path, sitemaps, redirects with a management screen
- Forms block with submissions, conditional fields, steps, file uploads and CAPTCHA, plus connectors (HubSpot, webhook, email)
- AI layer: a brand profile, page-from-brief, field suggestions, always as drafts for a human to approve
- Comments on entities and a review queue for editors
- Pre-publish checks (broken links, missing alt text, SEO length) and accessibility checks
- Page templates and design-token import (from a Figma export or a JSON file)
- Single sign-on: OIDC and SAML; user provisioning with SCIM 2.0 at
/scim/v2(see sso.md) - Audit log of who changed what and when
Phase 3: Enterprise and platform (built)
What makes Spillway a platform rather than a single site. Everything in this list shipped except the public beta, which waits for the first release tag.
- Multisite: several sites in one install, shared users and media
- Localization: translations per entity, locale-aware paths and fallbacks
- Workstreams: group changes across many entities and publish them together
- Module system: extensions in a Wasm sandbox with a registry, so modules cannot take down or read beyond the host
- Personalization and A/B testing on blocks
- Pluggable providers: Postgres for the database, Redis for the cache, Meilisearch for search
- Fleet provisioning API: create and configure sites programmatically
- MCP server so AI agents can read and draft content through the same permissions as a user
- Public beta (open: the first tag is a project decision, see open-decisions.md)
Phase 3b: Project website and registry (built)
spillwaycms.com built on Spillway and hosted through the fleet: marketing site, versioned docs with task-based how-to guides, a registry of modules, themes and kits with publisher accounts, automated checks, human review for trusted modules and a signed index, plus docs for AI agents (AGENTS.md, llms.txt, agent guides, agent-readable package manifests). Full spec and task list in website.md. Built: the registry server with a signed index and review flow, four-eyes review, GitHub sign-in, spillway publish, the docs and marketing kits, reference generation and the agent guides. The marketing kit and the site's deployment files have since moved to their own repository, kwall-llc/spillwaycms.com. Still open there: per-theme preview sites, organizations as a first-class object, the showcase and the feedback widget.
Phase 4: Adoption (features built, 1.0 ahead)
Lowering the cost of moving to Spillway and of using it with the tools people already have.
- The domain importer (below), with Drupal and WordPress adapters: built. See importer.md.
- Connectors for translation management systems (TMS): built. XLIFF 2.0 export and import with inline markup, the manual exchange, Crowdin, Phrase TMS and Smartling, translation jobs with polling, webhooks and
translation.readynotifications. See localization.md. - Connectors for digital asset management (DAM): built. Cloudinary, Bynder and Brandfolder, with search and import in the media picker, delivery from the DAM with focal crops, provider webhooks and copy-to-Spillway. See getting-started.md.
- Front-end adapters for Astro and Next.js: built.
@spillway-cms/client,@spillway-cms/astroand@spillway-cms/nextover the public render API (GET /api/public/render/<path>and friends), with workstream and draft previews,entity.published,entity.unpublishedandentity.deletedwebhooks for revalidation, and example sites underexamples/. See adapters.md. - 1.0 long-term support release with a published upgrade and support policy. Done: the policy (releases.md: release process, semver and what counts as breaking, 18-month LTS, upgrade path checked in CI, security advisories, deprecations), the release workflow,
pnpm release,CHANGELOG.md, downgrade protection andspillway backup. Open: cutting the first tag, v0.1.0, asghcr.io/kwall-llc/spillway-cmsand@spillway-cmson npm (releases.md), a run of each adapter and connector against the real services (open-decisions.md, not verified), and the 1.0 tag itself.
- The CDN purge hook driven by the page cache's tags, with Cloudflare, Fastly, Bunny and a generic webhook, and the
Cache-Tag-aware purge of the registry's pages and JSON: built. See caching.md.
Done since: module blocks as draggable components in the page builder, and shared or per-role saved views (views.share).
The domain importer
Point Spillway at a domain and it migrates the site without a database connection or an export file:
- Crawl the sitemap and internal links, respecting robots.txt, rate-limited, with a page cap and a preview.
- Extract the main content, title, meta and open-graph tags, headings, images, videos, forms and menus from every page.
- Cluster pages into content types by DOM skeleton and URL pattern; the AI names each type, proposes fields and explains why; the owner approves.
- Fill fields per page and convert bodies into Spillway blocks (never free-form HTML); repeated sections become shared blocks.
- Extract colors, fonts, spacing and the logo from the site's CSS into a token set and generate a starter theme.
- Keep every URL or add a 301, download and re-link media, rebuild menus.
- Land everything as drafts with an original-vs-new comparison per page and a quality report; publish in bulk or page by page.
Drupal (JSON:API) and WordPress (REST) adapters enrich the import when available; the crawl path works for any site.
Spillway 0.1.0 · Edit this page on GitHub