Skip to main content

Features

Goals #

The goals Clace is being built to support are:

  • Enable easy development and deployment of self-hosted web applications.
  • Simplify ongoing maintenance of such apps by removing build and dependency related issues.
  • Flexible deployment options, allowing use on personal machine and also shared across teams.

App Development Features #

The dev time features supported currently by Clace are:

  • Hypermedia driven backend API design, simplifying UI development.
  • Live reload using SSE (Server Sent Events) with HTTP/2 for all application changes, backend and frontend.
  • Automatic creation of ECMAScript modules using esbuild.
  • Automatic download for JavaScript and CSS dependencies.
  • Support for TailwindCSS and DaisyUI watcher integration.
  • Template caching and automatic reload on changes.

App Deployment Features #

The deployment features supported currently by Clace are:

  • Backend app code runs in a security sandbox, with allowlist based permissions.
  • No build step, the development artifacts are ready for production use.
  • Support for github integration, apps being directly deployed from github code.
  • Database backed application file system, for atomic version updates and rollbacks.
  • Zero downtime application updates.
  • Support for OAuth authentication
  • Support for application data persistance to sqlite with full database schema management.
  • Scalable backend, all performance critical code is in Go, only application handler code is in Starlark.
  • Support for domain based and path based routing at the app level.
  • Virtual filesystem with content hash based file names backed by SQLite database, enabling aggressive static content caching.
  • Brotli compression for static artifacts, HTTP early hints support for performance.
  • Automatic SSL certificate creation based on certmagic.
  • Staging mode for app updates, to verify whether code and config changes work on prod before making them live.
  • Preview app creation support, for trying out code changes.

Roadmap #

Clace is early in its development. The feature roadmap for Clace is:

  • All plugins are internal (built into Clace binary) currently. The plan is to move to an external plugin model, plugins being loaded dynamically using go-plugin.
  • SQLite is used as the metadata storage currently. Support for postgres and other systems is planned.
  • Support for workflow jobs, which would have a form based interface with limited customizability, but with support for triggered and scheduled execution.
  • UI interface for Clace admin operations.
  • Record replay based automatic integration test creation. Record all responses at the plugin boundary and use that to replay integration test scenarios.
  • Distributed agent model, where the Clace server does the initial routing but the actual application execution happens on remote worker nodes.