StarHeart

A file host with nothing to sign up for. Upload, arrange, protect, publish, and hand out a link that stops working when you say so.

Role
Our own product. Product, design, build, hosting
Stack
.NET, React, TypeScript, MySQL, Docker
Status
Live
starhe.art
Screenshot
StarHeart does not allow embedding, so this is a screenshot. The real thing is one click away.

The problem. Sharing a batch of files means an account, an upload page, and a file that lives forever.

Most hosts want a login before you can do anything, then a form and a file picker for every upload. What you share stays up indefinitely, and anything personal about you lives on their server. For something people do dozens of times a day, every one of those is a reason to paste a screenshot into chat instead.

The approach. Nobody signs in. Holding the link is what lets you see the album.

Drop or paste files anywhere on the page and they are in your album. Arrange them, watermark or turn or convert what needs it, set an expiry and publish. Anyone with the URL can view the album until it expires; only the browser that published it holds the key to take it down. Everything personal to a visitor stays in their browser, and a draft survives closing the tab.

Any kind of fileImages, video, audio, documents, plain text and drawings made in the app. Large files go over a resumable upload, and HEIF photos from a phone are converted on arrival.
Albums that expireInclude, exclude and reorder, give the album a title and an expiry, and publish. Nothing is permanent by design, and an album can only ever be taken down sooner, never extended.
Heavy work off the requestWatermarking a video takes as long as the video, so transforms are queued and run in a separate worker container. Rate limits, per-album quotas and an abuse-report route keep the host answerable without a login in sight.
Syncopation (syncopation.app), captured Sept 2026
Next project. SyncopationOurs · A launch site for messages that travel phone to phone.
Read the case study