I Built the Open Source “Microsoft Edge Drop” Replacement Using Cloudflare R2 + Turso

Published: (February 22, 2026 at 03:58 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

Cover image for I Built the Open Source “Microsoft Edge Drop” Replacement Using Cloudflare R2 + Turso

Overview

I recently built Cliff Drop, a self‑hosted, cross‑device text and file sharing app inspired by Microsoft Edge Drop. The interesting part isn’t the UI—it’s the storage architecture.

Storage Architecture

Structured Data → Turso (Edge‑hosted SQLite)

For messages, metadata, and authentication I used Turso (libSQL).

Why Turso?

  • Edge‑hosted SQLite
  • Low‑latency global reads
  • Familiar SQL syntax
  • No heavy database operations
  • Works perfectly with Drizzle ORM

It provides SQLite simplicity with distributed‑database characteristics—no need for Postgres clusters or complex replication configs.

File Storage → Cloudflare R2 (S3‑compatible)

For file uploads and images I used Cloudflare R2.

Why R2?

  • S3‑compatible API
  • Zero egress fees
  • Object storage at scale
  • Seamless Node.js integration
  • Easy local fallback option

This allows:

  • Storing large file uploads
  • Generating thumbnails
  • Serving files globally
  • Avoiding bandwidth surprises

All without vendor lock‑in.

Real‑Time & Security

  • Native WebSockets for real‑time sync
  • Argon2id password hashing
  • HTTP‑only cookies
  • CSRF protection
  • CSP headers
  • Secure file handling

Built with

  • SvelteKit (adapter‑node)
  • Tailwind CSS
  • Node.js
  • Drizzle ORM
  • Turso
  • Cloudflare R2

Why This Architecture Matters

Cliff Drop demonstrates a cloud‑native storage design that separates structured data from object storage, leverages an edge database, and uses S3‑compatible infrastructure. It’s ready for production on Linux (systemd / PM2 / Nginx).

Modern full‑stack engineering isn’t just React + API; it’s choosing the right storage layer for each responsibility:

  • Database for data integrity
  • Object storage for files
  • Edge for performance
  • Node for control

Even a small side project can be architected like a real system. Split storage properly, consider latency, scale, and cost to level up your projects.

GitHub Repo:

0 views
Back to Blog

Related posts

Read more »