Hacker News

Backup Methods for iPhone

Hacker News - Fri, 03/29/2024 - 10:30am
Categories: Hacker News

Show HN: Floro – OSS Visual Version Control for Static Assets and Diffable UIs

Hacker News - Fri, 03/29/2024 - 10:21am

Demo Video: https://www.youtube.com/watch?v=5fjixBNKUbM

Website: https://floro.io

Hi HN, we’re building floro (floro.io), an open-source, offline-first visual version control system that allows you to merge and diff graphical content. 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.

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.

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.

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).

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/TMS for translators & copy editors.

2. Icons - This plugin allows you to recolor an SVG asset so that all the colors are consistent with a 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.

3. Themes - This plugin allows you to create themes from your color palette.

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.

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 (https://www.youtube.com/watch?v=Om-k08GDoZ4).

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.

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!

Thanks!

Jamie & Jacqueline

Comments URL: https://news.ycombinator.com/item?id=39864433

Points: 4

# Comments: 0

Categories: Hacker News

The Kekulé Problem

Hacker News - Fri, 03/29/2024 - 9:29am
Categories: Hacker News

Show HN: Clace – Platform for hypermedia driven internal web tools

Hacker News - Fri, 03/29/2024 - 9:27am

I am building https://github.com/claceio/clace, an open source platform to develop and deploy hypermedia driven web apps for internal tools. For running multiple web applications on a single machine, Clace provides functionality which usually requires stitching together multiple services: reverse proxy like nginx/caddy (for domain/path based routing, TLS certs, static file serving), application server like uwsgi/gunicorn with micro-framework like flask (for API handling, HTML templates) and deployment infrastructure like containers/VMs/k8s (for isolation across apps, versioning and staged deployments, gitops). For internal web apps, Clace provides similar functionality in a single lightweight binary.

Clace and its plugins are implemented in go. User applications are developed in Starlark, which uses a python inspired syntax. Clace is intended for use cases where internal tools need to provide access to backend infrastructure like databases, APIs or scripts. Each Clace app runs in a security sandbox, only operations approved by the admin are allowed for each app. App developer can make code changes but they need to stay within the defined rules. For internal tools, where the goal is to glue together external APIs, Starlark works great as the glue code. Being hypermedia driven, with HTMX support, there is no or minimal user javascript required on the frontend. Apps have no build step, so apps can be installed from github url directly.

The goal is to build a platform for developing internal tools. Since there are no python/nodejs dependencies to install, easy app distribution is the advantage of Clace for local use. The dev environment for Clace apps including live reload is available without any additional setup (just add the --dev option during app create). Rundeck like jobs for operational use cases are planned. Currently, free-form applications are supported.

To install and try it out, run

curl -L https://clace.io/install.sh | sh source $HOME/clhome/bin/clace.env clace server start & clace app create --auth-type=none --approve /disk_usage github.com/claceio/clace/examples/disk_usage # This installs a du like webapp clace app create --auth-type=none --approve /book github.com/claceio/apps/utils/bookmarks # This installs a bookmark manager using sqlite for persistence On Windows, use pwsh -Command "iwr https://clace.io/install.ps1 -useb | iex" to install Clace (or use powershell).

The installed apps are available at https://localhost:25223/disk_usage and https://localhost:25223/book.

Do try it out, would appreciate any feedback.

Comments URL: https://news.ycombinator.com/item?id=39863863

Points: 1

# Comments: 0

Categories: Hacker News

Pages