An Astro 5 starter for Webflow Cloud with Cloudflare bindings (D1, R2, KV) wired in.
At deploy time, Webflow Cloud provisions the configured services and injects them into your app as typed bindings — no API keys, no connection strings.
Looking for the plain vanilla variant (no bindings)? See
hello-world-astro-app.
- Astro 5 with
@astrojs/cloudflareadapter (SSR mode) - Tailwind CSS v3
wrangler.jsonwith D1, R2, KV · Sessions, KV · Flagssrc/pages/api/binding-status.ts— live health check for every binding- Branded landing page that renders real-time binding status
npm install
# Run locally (no bindings)
npm run dev
# Build + preview against real bindings (wrangler)
npm run dev:cf- Fork this repo.
- In your Webflow site, open Apps → Webflow Cloud → Create new app and select this repo.
- Webflow Cloud reads
wrangler.jsonand provisions D1, R2, and KV automatically. - Pick a mount path and click Deploy.
Full walkthrough: https://developers.webflow.com/webflow-cloud/quickstart.
| Binding | Type | Declared in | Docs |
|---|---|---|---|
DB |
D1 | wrangler.json |
D1 |
MEDIA |
R2 | wrangler.json |
R2 |
SESSIONS |
KV | wrangler.json |
KV |
FLAGS |
KV | wrangler.json |
KV Flags |
Access them from any API route via locals.runtime.env:
import type { APIRoute } from 'astro';
export const GET: APIRoute = async ({ locals }) => {
const env = locals.runtime?.env;
const row = await env?.DB.prepare('SELECT 1').first();
return new Response(JSON.stringify({ row }));
};See src/pages/api/binding-status.ts for a full working example.
Built with Astro · Deployed on Webflow Cloud.