Dart-first serverless platform · in active development

Building the platform — one function, one site, one decision at a time.

A self-hostable, end-to-end serverless platform built in Dart. Think Vercel + Cloudflare Workers, but the entire stack is yours — functions, static sites, auth, storage, and observability live together in one open monorepo. The roadmap below is the source of truth for what's shipping, what's planned, and what we've learned along the way.

⚡ Planning pulse

A live snapshot of the work in flight, what's shipping, and what needs decisions.

✦ What we're building

A coherent, batteries-included serverless platform. Here's the full surface area, from the runtime up to the dashboard.

The platform lets developers ship Dart code as on-demand functions and full static sites without managing infrastructure. The backend runs on Shelf with PostgreSQL, Keycloak for identity, and Podman for container isolation. Functions ship as OCI images, sites serve through nginx behind Traefik, and every request flows through InfluxDB for observability.

The platform spans a CLI for deployment, a user dashboard (cloud panel) and an admin portal (both Flutter + Forui), plus a Jaspr-rendered docs site. Everything is Podman-native, no Docker required, and the entire stack can be self-hosted on a single VM.

▸ Runtime

Shelf-based HTTP backend. Functions run as Podman containers with HMAC-SHA256 signed invocation. Static sites served by nginx behind Traefik with automatic HTTPS.

▸ Identity

Keycloak with dynamic default roles, early-access gating, organization membership, and granular scope-based admin permissions across both the user and admin backends.

▸ Storage & data

PostgreSQL for the entity layer, S3-compatible object storage (MinIO) for site bundles, OpenBao (Vault fork) for secrets, and InfluxDB 3 Core for time-series observability.

▸ Frontends & CLI

Two Flutter apps (cloud panel + admin portal) built on Forui + Riverpod + AutoRoute. Dart CLI for deploy, init, invoke, and analyze. Jaspr-rendered docs site.

Dart functions Static site hosting Keycloak auth API keys & HMAC InfluxDB observability S3-compatible storage OpenBao secrets Self-hostable Podman-native

⌘ Planning tracks

Each track groups related plans. Click a card to jump into that section in the sidebar.

★ Decision bank

Architectural decisions flagged across all planning documents. Click a decision to jump to its source. These are the "why" notes that travel with the code.

↻ Recent activity

The most recently edited documents across the roadmap — anything you or your AI touched in the last few days.

? How to use this dashboard

A quick orientation if this is your first visit — or a refresher on the new arrange & decisions features.

1
Arrange your sidebarHit the ⇅ button in the sidebar header to enter Arrange mode. Drag section headers and items to reorder — put WIP on top, Done after. The layout is saved to your browser.
2
Read inlineClick any plan in the sidebar. Documents load inline in the main pane. Use back/forward, links between docs are intercepted.
3
Capture decisionsOpen the 📝 panel, click "Add note", then click any code block or heading. Toggle "Mark as Decision" to flag an architectural decision — it shows up in the Decision bank above.
4
Copy for AIWhen you're ready to hand off, hit "Copy for AI" — decisions are listed first, then all notes (including hidden ones), so the AI sees the full context even when you've cleared your view.