cd ~/projects

~/projects $ cat emberly/README.md

Emberly

Products & platforms·Jul 2025 – Present·● live·Founder·43last push October 27, 2026

Open-source, self-hostable platform for file storage, sharing and URL shortening, with a hosted cloud that adds team workspaces, custom domains and billing.

Next.jsTypeScriptPostgreSQLPrismaRedisBullMQAmazon S3NextAuthStripeSentryTailwindCSS
home.png
Emberly — home

Why it exists#

Emberly is an open-source, self-hostable platform for file storage, sharing and URL shortening. You can run your own private instance, or use the hosted Emberly cloud for team features.

What it does#

On every instance

  • Uploads to local disk or any S3-compatible storage, with configurable limits
  • Sharing with access controls, plus tagging, search and OCR text extraction from images and documents
  • Short URLs with redirect tracking, and code pastes with syntax highlighting
  • An admin dashboard with roles, a report review queue, audit logs, health monitoring and custom branding

On the hosted cloud

  • Team workspaces ("squads") with seat-based pricing and granular roles
  • Custom domains, Stripe subscriptions, promo codes and storage add-ons

On a fresh install, a setup wizard walks you through creating the admin account and configuring storage.

How it's built#

A Next.js 16 and React 19 app in strict TypeScript, with about 180 REST endpoints. PostgreSQL and Prisma hold the data; Redis and BullMQ handle caching, rate limiting and a background event worker. Auth is NextAuth (Discord, GitHub or credentials). Uploads can be scanned with VirusTotal, and errors go to Sentry.

The ecosystem around it:

  • Flicker: a Tauri desktop app for capturing screenshots and uploading them to Emberly
  • Mocha: an open-source helpdesk built under the same organization

What I learned#

One codebase can serve two audiences, with a hard line between them. Emberly runs as both a self-hosted app and a hosted cloud. Keeping cloud-only features (marketing pages, team workspaces, billing, custom domains) clearly separated means a self-hosted instance works out of the box with no Stripe keys and no extra setup, while the cloud keeps everything it needs.

A platform is more than one app. Emberly grew into an ecosystem: Flicker for desktop uploads, docs, a status page, and Mocha under the same organization. Every one of those depends on Emberly's API staying stable, which made me treat its roughly 180 endpoints as a real public contract rather than internal plumbing.

available for work