Image and video decision
SmugMug
A consolation build is possible, but the paid product's decisive value sits outside a solo rebuild. For SmugMug, publish a self-hosted client gallery from user-owned photo storage. The hard boundary is image hosting, global delivery, print commerce, client proofing, and support, plus image pipeline quality, models, and workflow polish.
Visit website↗Open-source builds that already do this
Every project below is open source and already does this job today. Fork one, self-host it, or take the parts you need — the build prompt further down assumes an empty file, and this is the shortcut past that. Licences differ; check the one on each card before you ship.
What a replacement has to do
- Catalog local photos from user-owned storage, generate previews, apply non-destructive adjustments, and publish selected images to a self-hosted client gallery.
What it still won’t have
- image hosting, global delivery, print commerce, client proofing, and support
- proprietary raw-processing quality
- cloud sync and sharing
- large AI models
- camera and print ecosystem
What remains hard
- Infrastructure at scale
- Proprietary models
- Execution quality
First-year cost
The build hours below are a category default, not an estimate for this product. Change them to your own numbers and the comparison follows.
Keep paying
Paying is—cheaper in year one.
On cash alone, building overtakes the subscription at 1 seat.
Money you would actually spend
Time you would spend
—
What you would spend
What we assumed
The verdict above measures whether you could build it. This one is only about money.
Runnable build prompt
Build a closest honest personal substitute for SmugMug in an empty repository. Use Tauri 2, React, TypeScript, Rust image libraries, SQLite, and local filesystem access; do not offer alternative stacks. The core loop is: catalog local photos from user-owned storage, generate previews, apply non-destructive adjustments, and publish selected images to a self-hosted client gallery. Make the first run work locally with one documented command. Store all user data locally by default and make export straightforward. Put secrets in .env, ship .env.example, and never commit credentials. Index selected folders without moving or rewriting originals and store only catalog data in SQLite. Generate thumbnails and previews, read EXIF, detect duplicates by hash, and monitor file changes. Provide timeline, folders, albums, ratings, flags, tags, search, and side-by-side compare. Store edits as reversible parameters for crop, rotate, exposure, contrast, white balance, and saturation. Render exports to a new folder with explicit color space, quality, size, and metadata choices. Add catalog backup, missing-file repair, integrity scan, and a clear original-safety guarantee. Include clear empty, loading, success, and recoverable error states. Add input validation, safe filenames, and graceful handling of unavailable APIs. Write focused tests for the core transformation and one end-to-end happy path. Create a README with setup, architecture, permissions, data location, and backup steps. Do not add accounts, billing, telemetry, analytics, or a hosted control plane. Do not claim to reproduce proprietary data, network liquidity, regulated access, or frontier infrastructure. Deliberately leave out a proprietary raw-rendering engine. Deliberately leave out hosted cross-device photo sync and client galleries. Deliberately leave out frontier culling, retouching, and generative models. Finish by running the tests and listing the exact commands used.





