Raft Demo / Documentation

Development

  1. Development
    1. Tech Stack
    2. Git repository & issue tracker

Tech Stack

Raft uses:

The Postgres multitool: Typically, a web application might use RabbitMQ for messages, Reddis for session storage & push notifications & caching, and Elastic Search for full text queries. To simplify hosting, Raft uses Postgres for all that. Postgres has fairly robust features that allow it to be used in this way, although for a large installation it is better to reduce load on the database as much as possible.

Traditional web app, with a twist: Raft is a traditional “server-rendered” web app with little rendering of HTML handled by javascript presentation code. However, like many Rails apps these days, it relies heavily Turbo Drive & Turbo Streams, which has the effect of the application really being a single page javascript app that simulates a traditional web app by fetching element updates pre-rendered from the server. The goal with Turbo is to provide the interactivity of a single page javascript app with the easy of development of a traditional web app. Your mileage may vary, but it more or less works as advertised in most cases.

Javascript required: Raft requires that javascript is enabled in the browser, since the webauthn authentication protocol does not work without it.

Modern browser required: Only the most recent browsers correctly support webauthn. For example, Safari did not support it until late 2025.

Git repository & issue tracker

The upstream code for Raft can be found at https://tangled.org/rewire.host/raft