4 ms·
Show HN: Clace – Platform for hypermedia driven internal web tools
I am building https://github.com/claceio/clace 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 https://clace.io/install.ps1 -useb | iex" to install Clace (or use powershell).
The installed apps are available at https://localhost:25223/disk_usage https://localhost:25223/disk_usage and https://localhost:25223/book https://localhost:25223/book.
Do try it out, would appreciate any feedback.