Instatic README

The project's README from github.com/CoreBunch/Instatic. As one markdown file: README.md.

Instatic

Own your site. Love building it.

A self-hosted CMS where the visual editor, content engine, and publisher all live in one Bun server — and the pages it ships are clean enough to read in view-source.

CoreBunch/Instatic | Trendshift

Release GitHub stars License: MIT Runtime: Bun TypeScript

One-Click Deploy · Quick Start · Docs · Plugins · Roadmap


Watch the Instatic interface demo on YouTube

Watch the introductory video about Instatic on YouTube.


A modern website usually means assembling a stack: a headless CMS, a framework, a host, a form service, an analytics vendor, an image CDN — each with its own bill, dashboard, and 2 a.m. outage. Instatic is the opposite bet. One Bun server holds the whole thing — the canvas editor, the content engine, media, auth, forms, plugins, and the publisher — and you run it wherever you like, backed by SQLite or Postgres.

What comes out the other end is the part most builders quietly compromise on: plain semantic HTML and compact CSS, with none of the editor's machinery left behind in the page. No framework runtime, no builder attributes, no div soup. The site loads like a static file because, most of the time, it is one.

MIT. Self-hosted. Yours.


Deploy in one click

Railway is the fastest way to get Instatic live. Pick a template, hit the button, wait about two minutes. That's it. It generates the secret keys, attaches the storage volume, and sets up the health checks on its own. You never open a terminal.

Deploying Instatic to Railway — from template to a live CMS in under a minute

One minute to live. Unedited.


Provider Database Best for Deploy
Railway · Recommended SQLite A single site — blog, portfolio, small business Deploy →
Railway Postgres Multiple authors, managed backups, room to grow Deploy →
Render SQLite or Postgres Teams that prefer Render services, disks, and managed Postgres Guide →
Docker / VPS SQLite or Postgres Bring-your-own server, Caddy TLS, custom backup policy Guide →

SQLite is the right default for most sites. Reach for Postgres when you've got a team of authors or want managed database backups.

Updating is just a redeploy

When a new Instatic version is available, update by redeploying the latest image. Your database and uploads stay on the attached storage, so the app container can be replaced without rebuilding the site from scratch.

Prefer your own hardware? Instatic is a single Docker image:

INSTATIC_IMAGE=ghcr.io/corebunch/instatic:latest docker compose -f compose.prod.yml -f compose.sqlite.yml up -d

Full guides for VPS, Postgres, HTTPS with Caddy, Render, and backups are in docs/deployment.


One tool, the whole life of a site

Most tools do one job and hand you off for the rest. You design in one place, build in another, keep content somewhere else, then bolt analytics on from a fourth. Instatic does all of it. Here's what's actually in the box.

🎨 Design

Core Framework scales inside Instatic — a fluid spacing scale with mathematical ratios, edited live next to the canvas

The editor is a real canvas, not a form with a preview pane stapled to it. You put several breakpoint frames side by side and edit them together. Change the desktop and the mobile frame reacts in the same view. When you'd rather work on the real thing, flip to live mode and edit a single full-size page in place.

The part nobody else has: Core Framework is built in. It's the design-token engine thousands of WordPress pros already use every day, and here it's a core system, not a plugin you install and pray over.

Your whole design system lives as data. Change one token and every page that uses it updates.

🧱 Build

Editing a Visual Component — a typed text param with a default value, bound to a node in the component's own tree

🗂 Manage

The Media workspace — an OS-style file manager for every asset on the site

📊 Analyze

The Instatic dashboard — site stats, activity feed, and status widgets on a customizable grid

The analytics surface today is intentionally operational: dashboard status, audit history, and owned form data instead of third-party visitor tracking.

🔌 Extend

Every CMS has plugins. The difference here is where backend plugin code runs.

An Instatic plugin is a zip package with a manifest. Its server entrypoint runs in a per-plugin worker that hosts a QuickJS-WASM sandbox: no filesystem, no environment variables, no network at all unless the site owner grants it, one host at a time. Editor extensions and app-kind admin pages are different: they run in the admin window and require the explicit editor.code permission before install.

Through the SDK, a plugin can add:

Start with the plugin system docs and the template plugin.


Fast because there's almost nothing to load

A published Instatic page is mostly just a file sitting on disk. No framework to boot, no hydration step, no database round-trip on the common path. The browser pulls down semantic HTML and compact CSS bundles, and it's done. There's barely anything between the visitor and the content, so the pages feel instant.

That speed isn't a setting you tune. It falls out of how publishing works, in three layers you never have to think about:

What comes out the other end is plain HTML and compact CSS, all the way down. Nothing from the editor rides along: no React on your public pages, no editor runtime, no framework in the markup. And because it's just HTML and CSS, nothing holds your site hostage — you can read it, host it anywhere, or take it and leave. Full design: the publisher.


Quick start

You need Bun. Nothing else. The default dev setup runs on SQLite, so there are no extra services to stand up.

git clone https://github.com/corebunch/instatic.git
cd instatic
bun install
bun run dev

Open http://localhost:5173. The first visit walks you through creating your site and your owner account.

Want to see it the way it actually ships? bun run start builds the admin and serves it from the Bun server at http://localhost:3001/admin.

Backups, in one sentence: back up the database (a Postgres dump or the SQLite file) and the uploads folder, and you've backed up the whole site — details.


Who's behind this

We're the team behind Motion.page and Core Framework — tools that thousands of people use to build websites for a living, mostly in the WordPress world.

We spent years making other platforms more bearable. At some point the obvious question wouldn't go away: what if the thing underneath was just right to begin with? No legacy to work around, no markup we're not allowed to touch, no business model that depends on keeping your site where we can see it.

So we built Instatic. And we brought Core Framework along, wired in as a core system, so the color shades, type scales, spacing, and utility classes our users already rely on are part of the product — not an add-on you install and hope for the best.


Early, on purpose

Here's the honest part: this is version 0.0.x.

Everything above — the canvas, Core Framework, the universal content model, the sandboxed plugins, the AI agent, forms, loops, templates, media, MFA, the audit log, one-click deploy, the clean publisher — is the starting line, not the finish. What's coming:

APIs and workflows can still shift before 1.0. If that makes you nervous, wait for 1.0 — no hard feelings. If you'd rather help shape what site ownership looks like for the next twenty years, now's the good seat.


For developers

One Bun server. A React admin built with Vite. A publisher that emits pages you'd be happy to have written yourself.

Runtime Bun, for both server and tooling
Language TypeScript everywhere
Admin app React 19 (React Compiler on), Vite, Zustand + Mutative, CodeMirror, dnd-kit
Server Bun.serve with a hand-written router
Database SQLite or Postgres — one DbClient interface, picked by DATABASE_URL
Validation TypeBox at every untyped boundary; schemas are the source of truth
Plugins QuickJS-WASM backend sandbox, owner-granted permissions, explicit editor.code for admin-window code
AI Provider-agnostic drivers over raw HTTP/SSE, no vendor SDKs
Output Semantic HTML, compact CSS, baked static files plus auto-detected dynamic holes

The codebase is opinionated, and the opinions are enforced in code. Architectural rules live in src/__tests__/architecture/ as actual tests, so the structure that keeps the output clean can't quietly rot.

bun run build   # tsc -b && vite build
bun test
bun run lint

Dig in: docs index · architecture · editor · server · publisher · plugin system


Thanks

Instatic's interface uses Pixelarticons by Gerrit Halfmann. Thanks to Gerrit for a genuinely distinctive icon set, and for kindly letting us use it in an open-source project.

License

MIT. See LICENSE. No tiers, no open-core asterisks, no "contact sales."

Instatic (CoreBunch/Instatic)

Searching Database…

这是什么?一个开源、可自托管的可视化 CMS,对标 Webflow、Framer 和 WordPress:编辑器、内容引擎、媒体、身份验证、表单、插件和发布功能全部集成在一个 Bun 服务器里,发布出来的是干净的静态页面。
它和直接用 Webflow 或 WordPress 有什么区别?你自托管一个 MIT 许可的服务器,而不是租用一堆服务;页面发布为纯语义化 HTML 和精简的 CSS——没有编辑器运行时,没有 React,也没有建站器属性标记——所以你的网站不会被任何平台锁定。
我怎么把它跑起来?最快的方式:Railway 一键模板——大约两分钟,不用碰终端。或者把单个 Docker 镜像部署到任何地方;本地开发只需要 Bun,别的都不用,首次访问会引导你创建网站和站长账号。
我需要另外配一个数据库吗?不需要——默认用 SQLite,对大多数网站来说足够了。当你有一个编辑团队或者想要托管的备份时,可以换用 Postgres。
在它上面搭建之前,有什么需要知道的坑吗?它刻意保持早期阶段——版本还是 0.0.x——所以要有变化的预期。好在更新至少只需重新部署一次:数据库和上传文件保存在挂载的存储上,容器替换不受影响。
多个人可以用不同权限协作管理网站吗?可以。角色由 38 项权限组合而成,还支持 TOTP 两步验证、多次失败后锁定账号,以及危险操作前的二次确认。未发布的草稿绝不会泄露给访客。
Core Framework 是什么?内置在编辑器里的设计令牌引擎,来自团队做 WordPress 时期的工具。一个品牌色就能生成整套调好的色阶,流式字号和间距刻度保证每个断点都一致,生成的工具类都汇总进一个小巧的 framework.css——改一个令牌,所有页面跟着更新。
内置的 AI 智能体是怎么工作的?你描述想要什么,它会在画布上生成真实的、可编辑的节点——用语义化 HTML 做结构,用 CSS 做样式。一个包含 35 个工具的 Site 范围负责搭建页面,一个包含 15 个工具的 Content 范围负责编辑内容,模型由你自己接入:Claude、OpenAI、OpenRouter,或者本地 Ollama。
我能导入现有的网站吗?可以。粘贴原始 HTML 即可得到可编辑的节点,也可以对整个静态网站使用 Super Import——HTML、CSS、图片和字体会变成页面、样式规则、设计令牌和媒体。写入任何内容之前都会展示每一处冲突,而且整个导入只需一步撤销。
插件的沙箱隔离程度如何?插件是一个 zip 包,其服务器代码运行在每个插件独立的 QuickJS-WASM 沙箱里:不能访问文件系统、环境变量,未经站长授权也不能联网。编辑器扩展需要明确的 editor.code 权限,而 SDK 可以添加路由、管理页面、画布模块和存储适配器。
What are similar projects?Kooboo, strapi, Smartstore, emdash, grapesjs, NotionNext, crm, directus
Creator
CoreBunch
Size
190.5 MB
Stars
9K
Age
5mo
Commits · 90 Days