DEV Community

Cover image for I Built the Open Source “Microsoft Edge Drop” Replacement Using Cloudflare R2 + Turso
Russell 👨🏾‍💻
Russell 👨🏾‍💻

Posted on

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

I recently built Cliff Drop, a self-hosted, cross-device text and file sharing app inspired by Microsoft Edge Drop.

But the interesting part isn’t the UI.

It’s the storage architecture.

Instead of going traditional:

  • ❌ Monolithic server
  • ❌ Local disk storage
  • ❌ Single-instance SQLite

I split concerns properly.

Data => Turso (Edge-hosted SQLite)

For structured data (messages, metadata, auth):

I used Turso (libSQL).

Why?

• Edge-hosted SQLite
• Low-latency global reads
• Familiar SQL
• Zero heavy database ops
• Works perfectly with Drizzle ORM

It gives you SQLite simplicity with distributed database characteristics.

No managing Postgres clusters.
No complex replication configs.

Just SQL at the edge.

☁️ 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
• Works seamlessly with Node.js
• Easy local fallback option

That means I can:

  • Store large file uploads
  • Generate thumbnails
  • Serve files globally
  • Avoid bandwidth surprises

All without vendor lock-in, since it’s S3-compatible.

⚡ Real-Time + Secure

On top of that:

• 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

This isn’t just a side project.

It demonstrates:

• Cloud-native storage design
• Separation of structured vs object storage
• Distributed edge database usage
• S3-compatible infrastructure
• Full-stack + DevOps ownership
• Production-ready Linux deployment (systemd / PM2 / Nginx)

Modern full-stack engineering isn’t just React + API.

It’s choosing the right storage layer for the right responsibility.

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

Cliff Drop is small - but architected like a real system.

If you’re building side projects, stop defaulting to “everything in one server.”

Split storage properly.
Think about latency.
Think about scale.
Think about cost.

That’s how you level up.

Github Repo: https://github.com/RussellJapheth/cliff-drop

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.