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 (
/usprimary,/enaliased); 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 concept | Today | Plan |
|---|---|---|
| Post / Page / Custom Post Type | posts.type is post or page; products are a separate table | generic collections table: type + JSON fields; products, cases and team members become collections with admin forms generated from a schema |
| Taxonomies | one table per category type, tags as a comma string | unified terms + term_relationships, hierarchical, multiple taxonomies |
| Revisions | ✅ v1.3: snapshot before every edit, preview and restore | visual diff |
| Menus | none (navigation lives in the layout) | menus / menu_items, drag-and-drop in admin, useMenu('primary') on the frontend |
| Media library | list and upload | image variants (thumbnails / WebP), alt text, folders, reference counting |
| Users and roles | admin / editor | capability-driven roles: author, contributor, subscriber |
| Comments | none | optional module, off by default |
| Options | key / value table | groups, 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-utilscoverage for auth, cache and collection CRUD.- Site integration guide: customize the base through configuration rather than file overrides.