Skip to content

Flare

Batteries for Void apps on Cloudflare. Void owns dev, build, routing, auth, the database and deploys; Flare adds the rest a business app needs.

Flare makes Void batteries-included: roles and tenancy, an audit log, jobs, search, CSV, i18n, feature flags, API keys, an MCP server and an admin. It does this the same way in every app, so every app’s code looks the same.

Each plugin is optional and touches your app only through files you own: an import, a table re-export in db/schema.ts, an option in auth.ts, or a one-line route file. Nothing to eject.

Terminal window
pnpm dlx @recranet/flare create my-app
Plugin What
access Owner, admin, member and viewer roles on Better Auth’s organizations; requireMember(c, permission)
api-keys Per-organization API keys: a key acts as its member on the JSON API (x-api-key), optionally limited to fewer actions
rate-limit Middleware on a Workers rate-limiting binding, per session, user, organization plus IP, IP or your own key; 429 with Retry-After
turnstile Cloudflare Turnstile on Better Auth’s sign-in, sign-up and password reset; off without a secret
Plugin What
admin A table admin over the app’s Drizzle tables behind access; references shown by name
audit Who changed what per organization, written in the change’s batch; revisions and a sent-mail log as their own subpaths
csv CSV import and export validated with the resource’s Zod schema, sized for D1
flags Feature flags declared in code, switched per organization, user, or user in an organization in D1
i18n Translations for pages and server messages on Intl, with plurals, selects and a cookie override
search Full-text search per organization on D1’s FTS5; defineList for a list route’s cursor, search, filters and sort
Plugin What
jobs Named jobs on schedules from one cron: leases, a run history, “Run now”, fan-out over a queue
Plugin What
mcp An MCP server at /mcp with OAuth 2.1 sign-in and defineTool with Zod inputs

Planned: resource (a tenant-scoped resource’s table, schemas and routes) and openapi (an OpenAPI document from the routes’ Zod schemas).

Why each plugin exists, and what was left out to stay close to the platform: Decisions.