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↗$15/mo
$180/yr
Read off the official pricing page.
$100one-off40 h to build
$0/mo6 h/mo upkeep
On cash alone, building overtakes the subscription at 1 seat.
The code exists. It is not what you are paying for.
This project is real, published, and does the core job — and this page still says keep paying. What the subscription buys is infrastructure at scale, proprietary models and execution quality, and none of that ships in a repository. Fork it anyway if you want to. Go in knowing what it does not carry. What stays hard ↓ · All SmugMug alternatives, with the arithmetic →
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.




