There's a good open-source page builder for React. It's called Puck, and it's genuinely well-built: you register your own React components, users drag them onto a canvas, and you get back JSON that you render in your app. This way, there is no proprietary lock-in, no hosted service you have to pay for.

But if you work in Vue, you don't have that. The maintainers have been clear they're not porting Puck to Vue, and nothing in the Vue ecosystem fills the same gap at the same quality. Your options are a proprietary SaaS builder or rolling your own from scratch.

I spent the last few years working on a production site editor, so "roll your own" didn't scare me as much as it probably should have. I started building one and it's called Gissen. It's MIT-licensed, and this post is an honest snapshot of the current state of the architecture, including what is still missing.

The shape of it: headless, config-driven

The core idea is the same one Puck got right: you don't theme the editor, but you bring your own Vue components, register them with a typed config, and the editor just arranges them.