FrontierJS

The backbone

Built on a short list, on purpose.

FrontierJS writes its own framework, but not its own runtime, database, bundler or proxy. It stands on a small number of projects that are each the best at one job, and it picks one per job so you never have to.

  1. 01

    Runtime and data

    One runtime and one database, everywhere the app runs.

    Bun
    The runtime, the test runner and the HTTP server. Junction serves every API with Bun.serve, so FrontierJS runs on Bun and nothing else.
    SQLite
    Every database. bun:sqlite on the server, and SQLite's own WebAssembly build in the browser, so Litestone is one codebase in both places.

    One runtime, one database, no driver matrix.

  2. 02

    Build and toolchain

    How a .mesa file becomes a page, and how the code stays checked.

    Vite
    The dev server and the build behind Sierra, Mesa, Jetty, site-kit and every app's web/, this site included.
    TypeScript
    Typechecking for the server packages. Each package's baseline only goes down.
    Biome
    Lint and format in one tool. @frontierjs/config hands an app the same settings in one line.

    One build, one checker, one formatter.

  3. 03

    Every surface

    Mesa compiles one component language to many targets. These are the projects that make a target real.

    OpenTUI
    The terminal. Haven and fli dev:tui draw Mesa components as a full terminal interface.
    Lynx + Rsbuild
    Native mobile. Mesa's native backend renders through Lynx, built with Rsbuild.
    Tauri 2
    The desktop. The desktop/ surface wraps the app in a small Rust shell that fli scaffolds for you.
    xterm.js
    A terminal inside the browser, for Basecamp's server consoles and Haven on the web.

    One component language, a real native target for each surface.

    See: Flow

  4. 04

    Deploy and operations

    None of these are npm packages. fli deploy and Outpost install and drive them on your servers.

    Caddy
    The front door: reverse proxy and automatic TLS. Outpost re-points it when a new release goes live.
    Docker
    The box each app runs in on a fleet server, managed by Outpost.
    Litestream
    Continuous SQLite replication to a remote replica, so a database on one server is never the only copy.

    A server is set up by a command, not a wiki page.

    See: Outpost