Skip to main content

Clace

Hypermedia Driven Web Tools Platform

GitOps Workflow - Staged deployments, versioning and preview environments with no infra to manage
No build step - Backend and frontend development with no build step, the source repo is the deployment artifact
Hypermedia web apps - Fast and lightweight backend driven apps, minimal frontend complexity
Go binary, Starlark config - Performance and stability of Go, easy Python like backend config with no dependencies
Secure app sandboxing - Apps runs in security sandbox, apply app code updates confidently
SQLite data persistence - Easy access to SQLite based app data persistence, with auto-schema management

What is Clace?

Clace is an Apache-2.0 licensed project building a 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) and deployment infrastructure like containers/VMs/k8s (for isolation across apps, versioning and staged deployments, gitops). For internal tools, Clace provides similar functionality in a single lightweight binary.


What can it do?

Clace can be used to easily develop and deploy hypermedia driven web applications which are secure and portable. Clace can run web apps for personal use and also host applications for access over the public internet. Clace can be used by teams to host internal applications. Clace supports building a hypermedia driven web interface for an existing API's, a backend-for-frontend type pattern. Developing a web UI for command line applications is another use-case. CRUD applications and applications which glue together backend APIs are good candidates for Clace apps.

How does it work?

Clace and its plugins are implemented in go. User applications are developed and configured in Starlark, which uses a python inspired syntax. Users of Clace write only Starlark and HTML templates. The backend code runs in a security sandbox and access to plugins need to be explicitly permitted. The API routes are defined to be Hypermedia first, using template partials to drive the UI interactions. HTMX is used for server interactions from the UI.

There are no Python or Javascript dependencies to install, no containers to create, no yaml files to manage. Application updates are done with a gitops workflow, with no-build step. Staging and preview environments are available for apps. Clace integrates with TailwindCSS/DaisyUI for UI styling and has esbuild built-in for ESM support. Data persistence to sqlite is supported using a document store interface. Clace manages request routing and TLS certificates creation and renewal, so a separate web server is not required.

Installation

To install, start the service and create an app on Linux or OSX, run:
$ curl -L https://clace.io/install.sh | sh
# Note down the generated password
$ source $HOME/clhome/bin/clace.env
$ clace server start & 
# Any new app can be installed by running $ clace app create --approve /disk_usage github.com/claceio/clace/examples/disk_usage/

To install Clace on Windows, run:
$ pwsh -Command "iwr https://clace.io/install.ps1 -useb | iex" 

Use powershell if pwsh is not available. Start a new command window (to get the updated ENV values) and run:

$ clace server start 

To install apps on Windows, use the same command as Linux/OSX. To install a bookmark manager app, run:

$ clace app create --approve /book github.com/claceio/apps/utils/bookmarks 

The disk usage app is available at https://localhost:25223/disk_usage (use port 25222 for HTTP). admin is the username, use the password printed by the install script. The bookmark manager is available at https://localhost:25223/book.

See here for more details about installation.

Samples

See documentation for steps to create Clace apps. See examples and apps repo for sample applications. See here for an online demo showing some Clace apps.

See quick start for details on getting started with Clace.