TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Puck – Open-source visual editor for React

451 pointsby chrisvxdover 1 year ago
Hey hackers, OP here!<p>I&#x27;ve been dipping in and out of this problem space for the last few years with many of my clients.<p>Puck sits somewhere between an old-school WYSIWYG-powered CMS and headless one, allowing content teams to author content using real React components.<p>Traditional CMS solutions were flexible but often resulted in page that completely broke the brand guidelines. Headless CMS solutions are a fantastic way of controlling brand by restricting UI changes to developers, but makes layout changes restrictive and slow as developers often need to get involved.<p>Puck provides a visual editor for React that can sit on top of your existing headless CMS (or act as standalone). We&#x27;ve been dog-fooding it on a few pages at <a href="https:&#x2F;&#x2F;measured.co" rel="nofollow noreferrer">https:&#x2F;&#x2F;measured.co</a> and on <a href="https:&#x2F;&#x2F;wellpaid.io" rel="nofollow noreferrer">https:&#x2F;&#x2F;wellpaid.io</a>. So far, so good<p>The API is built for React, which allows FE devs to quickly integrate their existing component and add some form fields for author input, or connect it to a headless CMS of choice.<p>It&#x27;s open-source under MIT, and pairs nicely with Next.js (check out the demo application). Next in the pipeline: support for multi-column layouts, richer demos, new plugins.<p>Looking forward to hearing your comments!

33 comments

simonwover 1 year ago
Wow, I&#x27;ve seen so many of these kinds of things over the years but this one is really special: extremely intuitive design, really powerful and flexible, and MIT licensed too. Super impressed.
评论 #37393675 未加载
Exumaover 1 year ago
Awesome. I&#x27;ve literally been tasked with building something exactly like this, and it&#x27;s a pain in the ass nothing exists like this for Vue so I have to do it from scratch.<p>I plan to make it more like builder.io&#x2F;demo however where CSS can be arbitrary, that way basic landing pages can be built.<p>Do you have any tips of things you wish you did differently, or what was more painful than you expected, as well as anything that might help in this?
评论 #37392228 未加载
评论 #37394869 未加载
评论 #37397419 未加载
评论 #37395657 未加载
2pointsomoneover 1 year ago
This is just so fantastic, I have been looking for something like this for the open-source edtech app builder Flow (<a href="https:&#x2F;&#x2F;github.com&#x2F;opencurriculum&#x2F;flow">https:&#x2F;&#x2F;github.com&#x2F;opencurriculum&#x2F;flow</a>) for the past year! Talked to the WebStudio guy and did so much research, but nothing was just right. This feels JUST. RIGHT.<p>Thank you for all the hardwork!
评论 #37400871 未加载
评论 #37402241 未加载
zoogenyover 1 year ago
This looks decent and the idea is sound. I was looking at headless CMS recently and it only vaguely struck me that what is needed is the front-end builder component.<p>Looking at the comments from the dev in this thread it seems this really only supports vertically stacked layouts right now? At least the demos were responsive but each component seems to assume that it fills the width of the screen. Making responsive components in a columnar layout might be more challenging for this kind of toolset to handle.<p>Looking at the recipe for next.js app I noticed that the component where the page is rendered appears to be in `[...puckPath]&#x2F;client.tsx` which is a &quot;use client&quot; component. That makes me wonder about the entire framework and whether or not it actually renders the pages on the client or the server.<p>If those two things are true then this might have limited application. Finding a way to handle responsive layout for columnar and&#x2F;or grid based pages will be non-trivial. Finding how to mix server and client components effectively will be non-trivial.<p>That aside, it seems useful and decently structured. In places where we I&#x27;ve worked where there is a lot of customization desired, having a UI builder that customizes page layout in some data format (json or xml) has been very helpful.
评论 #37392833 未加载
p2hariover 1 year ago
Just love this. And trust me, I have seen many of these kinds , but this is really different in the right sense. So easy to add custom components and get going. Well done. Will definitely try more. Thanks for this.
评论 #37397716 未加载
talborenover 1 year ago
looks awesome, a small screenshot in your readme would have helped understand that it&#x27;s more of a drag and drop component
评论 #37391922 未加载
MuffinFlavoredover 1 year ago
I would&#x27;ve expected some kind of WYSIWYG functionality for &quot;make this API call and map the fields&#x2F;properties of the response into the components&quot;<p>Like on the demo where it says <a href="https:&#x2F;&#x2F;puck-editor-demo.vercel.app&#x2F;edit" rel="nofollow noreferrer">https:&#x2F;&#x2F;puck-editor-demo.vercel.app&#x2F;edit</a> Users Reached 20M+, I thought instead of static text, it would&#x27;ve shown some kind of {{template}} that shows JSON query format like `jq` does to pluck fields from arrays&#x2F;objects of fetch() response bodies (how React would pass along props&#x2F;state)
评论 #37393358 未加载
nathancahillover 1 year ago
How do you keep the saved data props&#x2F;values (title, description) in sync with the component props in the code? Let&#x27;s say I change `description` to `subtitle` in the code, what happens to that information?
评论 #37393226 未加载
评论 #37393074 未加载
satvikpendemover 1 year ago
This is exactly what Framer did before pivoting to a website builder, it might be worth looking into them. How will you be different than them?
评论 #37394669 未加载
jameslkover 1 year ago
Nice, this looks pretty good.<p>It&#x27;s always been my dream of having something like Retool, but using your own components and completely open source. Retool is a backend layer too, so that&#x27;s partially what&#x27;s missing to complete the picture. But if we had that as something like a framework, we&#x27;d start getting close to the days of drag-and-drop UIs.
d0100over 1 year ago
Can I make my own prop editor?<p>Ex. instead of an input for the prop `name` I want a picker that fetches data from some API
评论 #37393305 未加载
albert_eover 1 year ago
minor:<p>maybe the HN post title should mention the name of the project &quot;Puck&quot; for future discoverability
评论 #37397718 未加载
quadratureover 1 year ago
What are the performance implications of this setup?. I dont know much about web stuff, but it seems like most of the markup would be hidden from the browser and so it wouldn&#x27;t have much control over optimizing the rendering.
nvegaterover 1 year ago
This looks very nice ! How would you compare it with slatejs, tiptap or lexical ? Is this only for layouts but not for content ? (Would it be very hard to include some rich text and make it work like a cms with rich text editing?)
评论 #37395105 未加载
nrafover 1 year ago
This looks very cool. Is anyone aware of something similar for Angular? We have a half-baked version that&#x27;s been in pre-alpha for our webapp, but if there&#x27;s something out of the box that we could leverage...
评论 #37402403 未加载
promhizeover 1 year ago
Well done. This looks great!<p>A couple of questions:<p>1. How easy is it to customise and extend the interface of the editor while still using the core of Puck?<p>2. This looks like it could be used to build an editor similar to Shopify&#x27;s theme editor or is that a stretch?
评论 #37402394 未加载
manishsharanover 1 year ago
This looks great. I would love to be able to use this to create UIs if it were to support integration with GraphQL data sources.
评论 #37397002 未加载
arek_nawoover 1 year ago
Love it! Good looking, polished UI. I&#x27;m probably most impressed by the easy integration and React API. Congrats.
laurels-martsover 1 year ago
I recall a post of a similar project but for Svelte some time ago I believe. Anyway this looks pretty slick!
transformiover 1 year ago
Looks neat! Do you consider adding input elements? (forms,wizards..) if so it will be my goto platform!
评论 #37397092 未加载
matfranaover 1 year ago
Is it something like React Bricks?
评论 #37393089 未加载
robbiejsover 1 year ago
Looks great, the animations of drag-drop looks really smooth. How is it done?
评论 #37392559 未加载
continuationalover 1 year ago
Looks good - does it support callback props, and how do you enter them?
评论 #37393548 未加载
tebbersover 1 year ago
Looks amazing, great work!
wbarberover 1 year ago
Very cool. Are you familiar with plasmic.app? I&#x27;m expecting to integrate it into my next site build and would be curious for your take having built something in the same general category.
评论 #37397604 未加载
评论 #37395716 未加载
joseferbenover 1 year ago
Really cool!
tmwatson100over 1 year ago
love this
btownover 1 year ago
This is really slick! A really fluid and intuitive interface.<p>We use <a href="https:&#x2F;&#x2F;react-page.github.io&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;react-page.github.io&#x2F;</a> (also MIT licensed) extensively at my startup; it attacks the same problem, and it&#x27;s been incredibly effective (and hackable!).<p>Generally speaking, owning your own CMS data, in your own database, with a well-documented JSON data format, <i>and</i> adding the ability to take any React component you&#x27;ve written (that itself may interact with your own data) and make it not only reusable as part of a content editing system but also WYSIWIG, opens up a huge number of opportunities - including adding your own logic to transform content before display.<p><a href="https:&#x2F;&#x2F;builder.io" rel="nofollow noreferrer">https:&#x2F;&#x2F;builder.io</a> is another alternative that&#x27;s very effective at the adapting-custom-components-to-WYSIWIG side of things, but does keep the data in its own cloud storage.<p>I&#x27;m really excited to see innovation in this space, and I&#x27;ll be following Puck closely!
评论 #37402303 未加载
评论 #37397515 未加载
shivekkhuranaover 1 year ago
Is anyone here who has shifted exclusively to visual react builders ?<p>I have been writing react since version 0.11 and am considering shifting to a visual for day to day development.
评论 #37394296 未加载
评论 #37395732 未加载
jarek83over 1 year ago
Alternative meaning - Polish city nearby me :) <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Puck,_Poland" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Puck,_Poland</a>
评论 #37402291 未加载
评论 #37397807 未加载
omarfarooqover 1 year ago
How does this compare to <a href="https:&#x2F;&#x2F;www.plasmic.app&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.plasmic.app&#x2F;</a>?
评论 #37397040 未加载
评论 #37395987 未加载
评论 #37395712 未加载
albert_eover 1 year ago
Probably ia cliche now but ...<p>Have you considered integrating an LLM to expand the functionality?<p>Based on some recent experimentation I was able to get some fairly complex React UI and behavior out of a pair programing session ... without having a lot of React experience and skill myself. Seemed ripe with potential.
评论 #37396979 未加载
pat64over 1 year ago
My only major gripe with it is React. Either go all the way and build something for Svelte that does this lowering the bar to the bottom on both creation and understanding of the UI layer <i>or</i><p>Do this with Rust and target Wasm abstracting away the hard &#x2F; tedious parts of working with lower level languages and creating graphical applications.<p>Like this + Tauri would be an absolute powerhouse but as good as it is, it’s still just another React maker.
评论 #37398587 未加载
评论 #37398285 未加载