Project

InsightSite roadmap

Goal: a modern CMS that works both as a "headed" site base and as a headless content backend. Reference points are WordPress for the content model and ecosystem boundaries, and headless systems such as Strapi, Payload and Directus for API and permission design.

Done (September 2026)

  • Database dialects: SQLite / D1, PostgreSQL, MySQL behind one adapter layer with per-dialect migrations.
  • API cache with admin-managed include / exclude path rules and automatic invalidation on writes.
  • Media storage: local, R2, Alibaba OSS, Tencent COS, any S3-compatible service; CDN public URLs.
  • GET / POST only; writes are POST + _method.
  • Languages reduced to Chinese + English (/us primary, /en aliased); bilingual demo site (home, products, blog, about, contact).
  • SEO per language, multilingual sitemap with lastmod, robots with AI crawler policy, llms.txt, AI summary endpoint, Organization / WebSite JSON-LD.
  • Four deployment targets: Pages, Workers, Linux / Baota, split frontend / backend.

Done (October 2026, v1.2 / v1.3)

  • Cron dispatcher, inquiry e-mails, search-engine push, view counts, Turnstile, persistent rate limits, health probe.
  • Plugins: runtime plugins (JSON manifest, online install, no rebuild) and package plugins (Nuxt layers + CLI); CMS events and webhooks.
  • Official plugin hub: sign-up, site binding, credits, license requests, per-domain licenses with daily checks; 10 official plugins.
  • Revisions with preview and restore; scheduled publishing.
  • Import / export: WordPress WXR import, database-independent JSON backup and restore.
  • Any Nitro preset as a deployment target (Vercel, Netlify, AWS, Azure, Deno...) plus containers for Chinese cloud functions.

Phase 1: content model (WordPress core parity)

WordPress conceptTodayPlan
Post / Page / Custom Post Typeposts.type is post or page; products are a separate tablegeneric collections table: type + JSON fields; products, cases and team members become collections with admin forms generated from a schema
Taxonomiesone table per category type, tags as a comma stringunified terms + term_relationships, hierarchical, multiple taxonomies
Revisions✅ v1.3: snapshot before every edit, preview and restorevisual diff
Menusnone (navigation lives in the layout)menus / menu_items, drag-and-drop in admin, useMenu('primary') on the frontend
Media librarylist and uploadimage variants (thumbnails / WebP), alt text, folders, reference counting
Users and rolesadmin / editorcapability-driven roles: author, contributor, subscriber
Commentsnoneoptional module, off by default
Optionskey / value tablegroups, typed declarations with validation, auto-generated settings pages

Phase 2: headless capabilities

  • Public content API v1: /api/v1/{collection} with uniform pagination, filtering, sorting, field selection and locale; OpenAPI docs already exist as a base.
  • API keys / tokens: read-only publish keys and read-write keys, replacing the admin-only JWT for integrations.
  • Webhooks: ✅ v1.3 through plugin manifests (publish / update / delete / inquiry); next: admin UI and a retry queue.
  • Preview mode: signed draft preview links for external frontends.
  • GraphQL (optional) once the collection model is stable.

Phase 3: extensions and ecosystem

  • Plugin mechanism: ✅ v1.3. Next: plugins registering admin menus and collections, signed manifests.
  • Themes: frontends as Layers; the base keeps only admin and API. The current demo site becomes the first official theme.
  • Form builder: generalize the contact form into configurable forms with submissions.
  • Search: one wrapper over SQLite FTS, PostgreSQL full-text search and MySQL FULLTEXT.
  • Import / export: ✅ v1.3 WordPress WXR import and JSON backup. Next: Markdown export, media files in the bundle.

Engineering baseline (ongoing)

  • Semantic versioning and CHANGELOG; sites pin tags.
  • GitHub Actions: lint, typecheck, schema parity across dialects, PGlite smoke test, Node and Cloudflare builds.
  • @nuxt/test-utils coverage for auth, cache and collection CRUD.
  • Site integration guide: customize the base through configuration rather than file overrides.