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: Floro – Visual Version Control

81 pointsby jsunderland323about 1 year ago
Hi HN, we’re building Floro (<a href="https:&#x2F;&#x2F;floro.io" rel="nofollow">https:&#x2F;&#x2F;floro.io</a>), an open-source, offline-first visual version control system that allows you to merge and diff graphical content. Demo video here: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5fjixBNKUbM" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5fjixBNKUbM</a>.<p>We were a YC W21 startup (Cheqout) that originally worked on restaurant tech. We ended up pivoting after the pandemic and decided to build Floro due to a lot of problems we encountered while working on Cheqout.<p>We struggled a lot with string content and dark mode, especially when it came to static assets. We were a cross-platform product, so everything was an SVG. What we wanted was a way for our designer (who cannot use a command line) to be able to check static assets into our codebase and be able to manage our color themes without us having to manually edit the assets ourselves. We also faced a lot of problems with i18n and keeping translations up to date. Both problems felt kind of similar, they’re both essentially just key value solutions that require people who aren’t software engineers to edit them.<p>This led us down a path of searching for a way to incorporate something like Dropbox into git. We didn’t want a content management system, we wanted something where we could diff and merge our static assets without requiring the user to know how to fix conflicts in plain-text or binary. We wanted a way to reference something like a snapshot of a tar of our static assets so we could idempotently rebuild our application and add type-safety to our assets. Eventually, we found a trick to diff and merge a certain type of tree structure that fit these problems well. After a bit more experimenting around, we figured out how we could write an interface to make UIs that could be diffed and display merge conflicts.<p>To show what visual version control could be applied to, we decided to build four plugins (applications that can be diffed and merged in Floro).<p>1. Text - This plugin is basically a replacement for i18n strings. It supports rich text, typed variable interpolations, conditional logic (for things like pluralization), links, ML translations, and a plethora of other features. It’s also sort of an IDE&#x2F;TMS for translators &amp; copy editors.<p>2. Icons - This plugin allows you to recolor an SVG asset so that all the colors are consistent with your color palette. You can automatically generate dark mode (and any other themed) versions of your assets, as well as versions of your asset that change with state (e.g. hovered, etc.) by applying themes to the asset.<p>3. Themes - This plugin allows you to create themes from your color palette.<p>4. Palette - This plugin allows you to define colors and shades that can be consumed by other plugins or used in your code for managing your app’s colors.<p>Since Floro is an offline-first desktop application we realized that we could allow users to test their local content out by building a browser extension that would allow them to override the state of their production websites and apps with the local content from floro. Floro essentially creates a localhost environment out of production apps, which allows non-technical users to treat content similarly to how engineers manage code. The demo video (shown above) does a good job of showing how this works. We also have a demo of how this works for mobile apps (<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Om-k08GDoZ4" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Om-k08GDoZ4</a>). We are fully open source (MIT licensed). We intend to monetize with consulting and private hosting. Users are more than welcome to self-host and build their own distributions of the desktop application and all the plugins we have created.<p>This is really our launch (anticipate some bugs but nothing serious, restarting the app(s) takes care of most things). We’ve now built four applications with Floro (including our website) and feel confident that it’s ready. We’ve spent 18 months getting here, we hope some of you like it!<p>Thanks!<p>Jamie &amp; Jacqueline

14 comments

ThinkBeatabout 1 year ago
Version control needs to be visual and pervasive.<p>It also needs to deal with whatever files you want to dump into it.<p>Dropbox (as you guys mention) as well as Google Drive and OneDrive and I am certain a lot of others have already implemented.<p>All files are versioned and for the most part you dont have to do anything.<p>All of this is clear with it comes to Git, with the 100+ different programs trying to give people a visual experience, over cryptic and inconsistent command line interface.<p>I am working on a simple proof of concept on a new way to visualize changes in code. Still early. It is far from trivial, but I think it is needed. There is a good chance I will fail of course. But if enough people think about it someone will figure out a better way than what we have now.<p>Well some of the work has already been done, for a long time in more integrated IDEs where the environment is much more interactive and interlaced.
评论 #39913584 未加载
评论 #39912029 未加载
ActionHankabout 1 year ago
I don&#x27;t know if I am your target audience, but it seems like it&#x27;s doing a whole lot more than most people would need.<p>I feel like there is huge value in version control that supports various binaries with custom diff support. Perforce, git-lfs, etc. offer binary version control, but not custom and useful diff tooling per binary type. Kaleidoscope, Beyond Compare, etc. offer some improved diff tooling, but not for a wide variety of file types.<p>That seems like it would be the essence of a product like this.<p>I suspect that many of the people who influence the adoption of VCS are likely deeply technical and will likely actively avoid products that are opinionated on the target output when using the VCS.
评论 #39908373 未加载
评论 #39908709 未加载
account_createdabout 1 year ago
I was building a very similar solution two years back after seeing the struggle of managing the assets for the design teams. Mostly people were using google-drive to share&#x2F;collect&#x2F;update the assets which was not very systematic. I envision my solution to fix this with the similar insiparation of VCS and proper integration with existing design tools, but after some time realized that the solution was not good enough and it quickly became too technical for the design folks.
评论 #39908460 未加载
ramesh31about 1 year ago
Love the idea but please pay for a UX professional. This UI just screams &quot;we have $component_library, why would we ever need a designer?&quot;.
评论 #39910916 未加载
1123581321about 1 year ago
The two part technical overview was a fantastic writeup and illustration! I didn&#x27;t understand why you were using that JSON structure to illustrate everything until I watched the demo video of your diffable UI. I hope it catches on, but am wondering if you&#x27;re planning to apply the same techniques to traditional designer working files.
评论 #39912670 未加载
vouaobrasilabout 1 year ago
Hey this is cool. I think there could be a place for a new kind of version control. I&#x27;ll test it out.
评论 #39908761 未加载
ugh123about 1 year ago
In this youtube video example <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5fjixBNKUbM" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5fjixBNKUbM</a><p>you demonstrate adding the new icon to the page and then modifying it with a hover alternative color. But the rest of the compare&#x2F;diff&#x2F;review workflow only focuses on the change between non-highlighted -&gt; highlighted. To me, the important part is the addition of the icon to the page, and as a reviewer it would be of upmost importance to see the visual diff of the <i>page</i> before and after, rather than just an icon and it&#x27;s hover alternative.
评论 #39911620 未加载
seltzered_about 1 year ago
Have you talked to folks behind prior startups in the space like layervault?<p>See <a href="http:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150424103031&#x2F;http:&#x2F;&#x2F;layervault.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150424103031&#x2F;http:&#x2F;&#x2F;layervault....</a> and <a href="https:&#x2F;&#x2F;kellysutton.com&#x2F;2015&#x2F;07&#x2F;21&#x2F;startup-theory-of-relativity.html" rel="nofollow">https:&#x2F;&#x2F;kellysutton.com&#x2F;2015&#x2F;07&#x2F;21&#x2F;startup-theory-of-relativ...</a>
评论 #39911880 未加载
extraduder_ireabout 1 year ago
I like the &quot;I&#x27;m not a software engineer&quot; checkbox on the about page that changes the page content.
kissgyorgyabout 1 year ago
Great idea, but it seems more complicated than simply adding files to a git repo.
评论 #39909514 未加载
Pwntasticabout 1 year ago
Why does the main product page attempt to connect to a localhost port? It looks like it&#x27;s trying to hit a socket.io port, but that seems pretty unnecessary for a landing page?
评论 #39909545 未加载
amir734jjabout 1 year ago
One of struggles we had at Microsoft is versioning power bi pbix files. Someone publishes a change and the old version is gone unless they saved it somewhere else.
SkyMarshalabout 1 year ago
Pretty cool. What framework&#x2F;tech did you use for the multiplatform app? Curious for a future side project I may start on soon.
评论 #39923620 未加载
password4321about 1 year ago
Plastic SCM was acquired by Unity so I guess there&#x27;s precedent.