Releases
What is deployed where, and one button to undo it
Every environment, its current release, what changed since the last one, and a rollback that does not require finding the right host first.
The app for managing your apps — and itself a FrontierJS app.
$ git clone frontierjs/basecamp && bun run dev
What is deployed where, and one button to undo it
Every environment, its current release, what changed since the last one, and a rollback that does not require finding the right host first.
Applied, pending and drifted, per environment
Read from each app's own manifest endpoint, so drift between the schema in your repo and the database in production is visible before it bites.
Queues across every app — in flight, failed, retry
One view over every Caravan queue you run, with failures and their reasons, and retries triggered from here.
Every trail, searchable by model, actor and window
The @@trail(audit) trails from all your apps in one place, so answering "who changed this record" does not start with a database console.
Each app's declared targets — everything it can reach
Because Conduit targets are declared, the complete outbound surface of an application is a list rather than an audit. Useful for review, and for self-hosters who want to know.
Registries, sizes, migration state, and a way in
Database-per-tenant means many databases. This is the list, their sizes, whether each is migrated, and a route into any one of them.
Liveness and metrics, including plugin-contributed
Every app exposes /health and /metrics, and plugins add their own providers — so a new battery appears here with no configuration.
Over the same channels your apps use — not polling
Basecamp subscribes the way any client does. It is a demonstration that the realtime layer works, because it is the thing depending on it.
The rest of the stack