Announcing nuPodder: A New Take on Podcast Synchronization
After months of heads-down work on evenings and weekends, I’m excited to share a side project finally: nuPodder, a lightweight podcast synchronization service now live at https://nupodder.app/.
What It Does
nuPodder implements the gPodder protocol, which means if you listen to podcasts on more than one device or across different apps, you can sync your subscriptions and playback progress across all of them. You can also manage your podcast library directly from the web UI, and any changes propagate down to your connected clients automatically.
Why I Built It
The gPodder ecosystem already has a hosted sync service, but in my experience it leaves a lot to be desired. Written in .NET, it tends to be sluggish and unstable, frequently returning HTTP 500 errors due to problematic SQL queries and database design decisions that don’t scale well under load.
Rather than patch around someone else’s stack, I decided to build something fresh. nuPodder is designed to be 100% API-compatible with the existing service, so any podcast client that currently connects to gPodder-based sync should work with nuPodder as a drop-in alternative. No client-side changes needed.
Under the Hood
| Layer | Technology |
|---|---|
| Language | Go |
| Web Framework | Goravel (a Laravel-inspired framework for Go) |
| Frontend | HTMX, WebAssembly, TailwindCSS |
| Design | Prototyped with Google’s Stitch (https://stitch.withgoogle.com/) |
| Distribution | Progressive Web App (installable on any device) |
I chose Goravel because it brings the developer ergonomics of Laravel, the framework I know and love from PHP, into Go’s type-safe, compiled ecosystem. HTMX keeps the frontend simple without dragging in a heavy JavaScript framework, and WebAssembly handles the interactive bits where vanilla JS would get unwieldy.
On the design side, I experimented with Google’s Stitch tool for rapid layout prototyping. It’s an interesting approach to “vibe design”, describing what you want and iterating on generated layouts, which helped me move quickly on UI without getting bogged down in CSS architecture early on.
What’s Next
nuPodder is live and functional today, but these are still early days. I’m treating this as a public beta and actively looking for feedback on everything UX, API compatibility, performance, and edge cases you hit while syncing.
I haven’t decided yet whether to pursue listing it in the App Store or Play Store; the PWA installation experience covers most use cases for now, but I’m open to arguments either way.
Give it a try at https://nupodder.app/ and reach out with any feedback. Happy listening!
Comments
No comments yet. Be the first to share your thoughts!
Leave a comment