Product Docs Pricing Changelog
Start free Sign in
The product

Four backend services. All yours.

Auth, a database, object storage, and email — each running on your own Cloudflare account, each wired to the others, all managed from one calm dashboard and one type-safe SDK.

Au

Authentication that lives in your database.

Email + password, OAuth (Google + GitHub), magic links, and email verification — with every user record written to your own D1. No external identity vendor holding your users hostage.

  • Sessions live in KV for sub-ms auth checks; users in D1
  • BetterAuth under the hood — battle-tested, not rolled by us
  • Attach a custom domain to your auth Worker in one click
auth.ts
import { createFlarelink } from "@flarelink/client" const fl = createFlarelink({ url }) // sign in — session lands in your D1 await fl.auth.signInWithSocial({ provider: "github", })
active users
1,284
providers
3
sessions 24h
612
Db

A real SQL database with a visual editor.

Cloudflare D1 with versioned migrations, a 3-pane table + schema editor, a multi-tab SQL console with saved snippets, and a type-safe client.

  • Logical types — UUID, JSON, Email, DateTime — over plain SQLite
  • Inline cell edits with query duration shown on every write
  • Type-safe SDK with chainable from(...).where(...) + tagged-template SQL
query.ts
// chainable + type-safe const posts = await fl .from<Post>("posts") .where({ author: user.id }) .orderBy("createdAt", "desc") .limit(20) // or raw — values are auto-bound await fl.sql`SELECT * FROM ${table} WHERE id = ${id}`
rows
92,418
size
3.2 GB
latency
~12 ms
St

Object storage with zero egress fees.

R2 buckets with signed upload URLs and an S3-compatible API. Files go straight from the browser to your bucket — Flarelink stays out of the byte path entirely.

  • Signed URLs for direct browser uploads — no Worker CPU per file
  • S3-compatible — point existing tools straight at it
  • File browser with prefix navigation and per-bucket CORS rules
upload.ts
const { url } = await fl.storage .from("acme-assets") .createSignedUploadUrl("avatars/u_1284.png") await fetch(url, { method: "PUT", body: file }) // egress this month $0.00
objects
8,011
size
14 GB
egress
$0.00

Transactional email from your own domain.

Password resets, magic links, and verification — sent through Cloudflare Email Sending or Resend. Editable templates with live previews, fully wired to BetterAuth's flows.

  • Pick CF Email Sending or Resend — switch any time without redeploying
  • Inline subject + HTML + text editor with side-by-side preview
  • Send a test message to your inbox before flipping the flow on
templates.tsx
// configured in the dashboard once, // then auth flows fire automatically: await fl.auth.requestPasswordReset({ email: user.email, }) // → your edited template arrives in their inbox // → BetterAuth handles token + verify
sent 24h
2,140
provider
Resend
delivered
99.4%
Built in

The plumbing, already done.

The unglamorous parts of running a backend — provisioning, environments, query metadata, access control — handled so you can stay in your editor.

Typed SDK

One install for all four services. Generics on from<T>(), chainable builders, tagged-template SQL.

Per-project isolation

Each project gets its own D1, R2 bucket, and auth Worker. Switch projects from the chip in the header.

Query metadata

Every D1 response shows duration, rows read, and rows written — surfaced on every table view and SQL run.

Scoped tokens

You hand Flarelink a scoped CF token. Provisioning only happens when you explicitly ask in the dashboard.

Bring your own domain

Attach auth.yourdomain.com to your auth Worker. TLS issued automatically — no DNS dance.

Honest costs

Cloudflare bills you directly at their published rates. Flarelink is a flat fee — no markup on egress, ever.

See it on your own account.

Connect a scoped Cloudflare token and provision your backend in about a minute.