Cloudflare R2 and D1 together
37 open-source projects on Cloudsteading use Cloudflare R2 and D1 together, including My AX, Web Archive and EdgeChat. The usual split: R2 holds files such as images, attachments and backups, and D1 holds the rows that describe them, each storing its R2 object key. A Worker binds both and keeps them in step.
How each one is built
Every project uses D1 and R2. The rest of its Cloudflare setup, and its license, decide how much work it is to run.
Frequently asked
When should I use R2 instead of D1?+
Use R2 for files: images, uploads, attachments, backups. Use D1 for rows you filter, sort or join. D1 caps a row, string or blob at 2 MB, so binary data belongs in R2 with its key in D1.
How do I keep R2 and D1 in step?+
There is no transaction across the two. A common order is to write the file to R2 first and insert the D1 row second, so a failed insert leaves an unused file rather than a row pointing at nothing. A scheduled Worker can sweep unused files later.
What else do these projects use besides D1 and R2?+
Counting the 37 projects listed here: Workers (37), KV (16), Durable Objects (12), Workers AI (9), Queues (8), Analytics Engine (4). Each repository's Wrangler config shows exactly which bindings it needs.
What do people build with Cloudflare D1 and R2?+
Among the projects listed here, the SaaS most often replaced are Fastmail, Gmail, Ghost, WordPress, Cloudinary. Each project page shows its full set of Cloudflare primitives and its license.
37 projects using D1 and R2

My AX

Web Archive

EdgeChat

CloudFlare ImgBed

WeaveLedger
Needs fixes before production use

vibecms

Traks

Synch

SonicJS

Seeder

Quickinbox

OmniMail

microfeed

MailySend

L Harness

EdgeEver

child-video

Sink

Punctual

Open Beans

nodrix

Monolith

minshop

Mailflare

888wiki

roim-picx

Projektor

Open Artifacts

mindash

mail2telegram

Glance
Needs fixes before production use

FlareMo

EmailFlare
Needs fixes before production use

Cloud Mail

Church4Christ

CattoPic
