Biff

Introduction

Biff is designed to make web development with Clojure fast and easy without compromising on simplicity. Biff aims to provide as much functionality as possible out-of-the-box, while making it easy to swap out, modify, or remove parts in cases where you need something different. It prioritizes small-to-medium sized projects.

Some of Biff's most distinctive features:

  • Built on XTDB, the world's finest database. It has flexible data modeling, Datalog queries, and immutable history. You can use the filesystem for the storage backend in dev and switch to Postgres for production.
  • Uses htmx (and hyperscript) for the frontend. Htmx lets you create interactive, real-time applications by sending HTML snippets from the server instead of using JavaScript/ClojureScript/React.
  • Ready to deploy. The template project comes with a script for provisioning an Ubuntu server, including Git push-to-deploy, HTTPS certificates, and NGINX configuration.
  • Develop in prod. If you choose to enable this, you can develop your entire application without ever starting up a JVM on your local machine. Whenever you hit save, files get rsynced to the server and evaluated.

Other things that Biff wraps/includes:

  • Rum and Tailwind CSS for rendering.
  • Jetty for the web server and Reitit for routing.
  • Malli for enforcing schema when submitting XTDB transactions.
  • Buddy for email link authentication (JWTs).
  • Chime for scheduling tasks.
  • In-memory job queues (via Java's BlockingQueues).
  • A minimalist, 15-line dependency injection framework, similar in spirit to Component.

Projects built with Biff:

About the author.

Have a question? Join the #biff channel on Clojurians Slack.