2 pointsby ciccada13376 hours ago1 comment
  • ciccada13376 hours ago
    Hi HN, I built SoundTime because I wanted a self-hosted music platform that could also share tracks across instances without relying on a central server.

    The stack:

    Backend: Rust (Axum 0.8, Sea-ORM, PostgreSQL) Frontend: SvelteKit 2, Svelte 5, Tailwind, shadcn-svelte

    P2P: iroh (by n0.computer) encrypted QUIC connections, content-addressed storage via BLAKE3 hashes

    Audio: Symphonia for decoding/waveforms, Lofty for metadata, OPUS adaptive streaming (320/128/64 kbps)

    Some things that might be interesting technically:

    - Tracks are identified by BLAKE3 hashes and transferred via iroh-blobs, so deduplication is built in

    - The P2P layer uses NAT traversal through relay servers, so it works without port forwarding

    - There's a public node directory where instances can optionally register themselves it's a separate lightweight service (Node.js + SQLite) that does health checks every 5 min

    - Full search across peers

    - AI-generated editorial playlists using any OpenAI-compatible API.

    It's one curl | bash to install (Docker Compose), works on x86_64 and ARM64. Licensed AGPL-3.0.

    I'd love feedback on the architecture, especially the P2P approach.