Alexey Chechet

Alexey Chechet

@gissen-dev.bsky.social

Building Gissen — a headless visual editor for Vue. Drag and drop your components to build pages, sites, or your own CMS. Open source, MIT. Building in public → gissen.dev

33 followers83 following53 posts

Pinned

Building Gissen: a headless visual editor for Vue 3. The Vue equivalent of Puck. Register your Vue components with a typed config, then drag and drop them to build pages. Output is plain JSON you render anywhere. This is the editor canvas working — drag, reorder, nest, delete.

gissen-mcp is on npm: an MCP server that lets an AI agent edit a Vue page built with Gissen 🎉 The agent can only use what your component config allows. A wrong type or out-of-range value gets refused with the reason, and nothing changes 👍 Pre-alpha, tested with Claude only ↓

Gissen doesn't introspect your components 👌 You have to declare a typed config per component: fields, their types, what's a slot. And that config is the introspection layer. It has to be written by hand, that's the cost. There is no AST parsing, but also no scanner guessing wrong.

Building Gissen: a headless visual editor for Vue 3. The Vue equivalent of Puck. Register your Vue components with a typed config, then drag and drop them to build pages. Output is plain JSON you render anywhere. This is the editor canvas working — drag, reorder, nest, delete.

Published gissen@0.1.0-alpha.2. npm install gissen What's in this drop: typed config API, editor canvas, drag-and-drop, nesting, keyboard delete. Not yet: properties panel, MCP server, prod-render helper. Demo video lands tomorrow. github.com/gissen-dev/gissen

github.comGitHub - gissen-dev/gissen: The headless visual editor for Vue 3. Agent-native, self-hostable, MIT.The headless visual editor for Vue 3. Agent-native, self-hostable, MIT. - gissen-dev/gissen

All the work is in the type signature — "const T extends ..." keeps your select options as 'signup' | 'buy' instead of "string". Wrong "defaultProps" becomes a compile error, not a runtime bug.

The agent reads your component config and understands it as a vocabulary, so it knows which components exist, what props each one takes, and what's allowed in a slot. From there it can add, move, update, or delete components on the page.

If you've built real components and tried an iframe-based visual editor, you probably have hit this: - "100vh" is the iframe height, not the page - "position: fixed" anchors to the iframe viewport - CSS variables from your app don't cascade in - Fonts disappear So the editor shows you a lie

Gissen has no iframe. Components render directly in your document, it means the same window, same Pinia stores, same CSS variables, same fonts. Viewport preview (mobile/tablet/desktop) works via CSS transform. So you can be sure that you see exactly what your users will see.

Three architectural bets we made building Gissen: — Vue-first, not framework-agnostic — MCP as the agent interface — No iframe Each one is a tradeoff. Here's the reasoning:

Vue-first: instead of abstracting over every framework, we go all-in on Vue 3. Fewer escape hatches, tighter integration, better DX for Vue teams. MCP: agents talk to the editor via MCP tools, not a custom orchestration layer, so any MCP-compatible client works out of the box.

No iframe: most visual editors isolate the canvas in an iframe, but we don't. Components render in-context gives us full access to your app's stores, styles, and router. Mobile/tablet/desktop viewport preview? The answer is CSS transform, not a second iframe instance.

@jackceoai.bsky.social asked about the stack. Here's the answer: pnpm monorepo, Vue 3 + TypeScript strict, Vite, Zod, Vitest. Agent layer: MCP, not hub-and-spoke. Any MCP-compatible client (Claude, Cursor, etc.) gets tools to read and mutate the page tree — no bespoke orchestration glue needed.

Started the Gissen monorepo today. pnpm workspaces, four packages: — gissen (core editor) — gissen-mcp (MCP server) — create-gissen-app (scaffolder) — gissen-docs Nothing renders yet. But the structure is the first real decision — and it's locked 👍

Vue has no headless visual page builder. I'm building one. Gissen: open source, MIT, self-hosted. Drag-drop your own Vue components to build pages and sites. Also ships with an MCP server — so AI agents can edit your pages programmatically, not just describe them. Building in public. gissen.dev

gissen.devGissen — The headless visual editor for VueDrag and drop your Vue components to build pages, marketing sites, or your own CMS. Open source, MIT, self-hosted.

You are up to date.