colophon

what this site is made of, and why it's built the way it is

the player

sleepcast is a podcast player made for falling asleep. It plays your own feeds on shuffle and slowly fades to silence on a timer. It all runs in your browser — your feeds live in local storage and never touch a server. There's no account and nothing about you on our side to leak.

the stack

  • Astro site with React islands, served from Fly.io
  • the player is plain browser JavaScript — an <audio> element, a sleep timer, and a slow volume fade; nothing about your listening is sent anywhere
  • your nights live in your browser's local storage — nothing about your listening is on our side. The server keeps one small SQLite file, and the only thing in it is the feedback people type into the footer

what we deliberately don't use

  • nothing here is generated — no text, no audio, no images. The one exception is opt-in and never runs unless you press it: "varied mix" downloads a small embedding model (MiniLM, ~23MB) from Hugging Face and runs it in your browser to pick episodes unlike each other
  • no third-party player, with one opt-in exception. You can add a YouTube channel, and because YouTube publishes no audio file we could play, it plays inside Google's embedded player — Google sees your IP and may show you ads, which we can't mute or skip. Nothing about that happens unless you add a channel yourself, and it is spelled out in the privacy policy
  • no accounts, and no record of you. Google Analytics runs only if you accept the banner — decline and the script is never fetched, so nothing reaches Google at all. We also count whole numbers on our own server — which pages were hit, which sites linked here, which crawlers came by, and a handful of named UI events like "started a mix" — with no IP, no cookie and nothing per-visitor. That tally is written out in full
  • there is one table on the server, and you fill it yourself: the "tell us something" box in the footer keeps what you typed, the page you were on and the time, and nothing else. No address, no identifier, no way to tell two messages apart by who sent them. It exists because there is no account system here to reach anyone through, so a box is the only way you can tell us something — the privacy policy is precise about it
  • no subscription — there is nothing here expensive enough to bill for

contact

Questions, broken things, or a persona you'd love to hear: [email protected]