~/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.
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.
