Description from the developer:

Pinepods is a podcast server that’s self hosted. It aims to be a multi-client version of what you might already have on your phone that allows you to listen anywhere. Host pinepods and get a web client, mobile apps, desktop apps, even a CLI app. Your progress syncs between all these. It supports gpodder sync for use with your existing apps if you want (though I’ve put 100 plus hours into the mobile apps and really would appreciate people at least giving them a go) and it has tons of features. Think Notifications on release, smart playlists, multi user, sharing, chapter support, YouTube channel to podcast support. Loads of stuff, and loads more still to come.

With 0.8.0 the mobile apps are now on Google Play and the Apple app stores, and the api has been fully rewritten in rust. It’s a lean mean podcasting machine. And actually the real current version is 0.8.1.

Excerpts from the Changelog:

Introducing PinePods 0.8.0 – The absolute biggest Pinepods release to date. Pinepods mobile clients are officially released! Additionally the backend api has gotten a complete rewrite in rust!


📱 Official Native Mobile App

  • Flutter-Based App – Brand new official mobile app built with Flutter for iOS and Android
  • Cross-Platform Synchronization – Seamless sync between mobile, web, and other Pinepods clients (More to come on other very soon)
  • Offline Support – Download episodes for offline listening with intelligent storage management
  • Native Mobile Features – Background playback, lock screen controls, notification management, and mobile-optimized UI
  • Professional Distribution – Will be available on both iOS App Store and Google Play Store along with open stores such as f-droid and izzyondroid

The android apk will be attached to the github release. As well as released to the Google Play Store, f-droid, and izzyondroid Shortly after the 0.8.0 release. I need to get this release out in order to get them on the android stores fully.

Links:

iOS App Store


🦀 Complete Rust API Transformation

  • Python Elimination – All Python dependencies have been completely removed from the container, resulting in a dramatically smaller and more efficient deployment
  • Horust Process Management – Switched from supervisor to Horust for robust, lightweight process supervision and startup management. This is part of removing the python dependency and also utilizes more great rust based dependancies
  • Internal Task Scheduler – Background processes now run directly within the Rust API service using tokio-cron-scheduler, eliminating the Celery dependency entirely
  • Enhanced Reliability – Background tasks are more reliable with better error handling, automatic retries, and integrated logging
  • Streamlined Container – Significantly reduced container size and complexity with the removal of Python runtime and associated dependencies

🔧 Infrastructure & Reliability Improvements

  • Horust Service Management – All services now managed by Horust with proper process supervision, automatic restarts, and clean shutdown handling
  • Integrated Background Processing – Podcast refresh, nightly maintenance, and cleanup tasks now run as scheduled jobs within the main Rust API service
  • Database Operation Reliability – Improved server backup and restore operations with better error handling and validation
  • Timezone Configuration – Runtime timezone configuration without container rebuilds, properly affecting all time-sensitive operations
  • Simplified Deployment – Reduced container complexity and startup time with streamlined process management

🏗️ Development & Performance

  • Pure Rust API – Complete rewrite of the Python API in Rust for improved performance, memory efficiency, and type safety
  • Eliminated Dependencies – Removed Python runtime, Celery worker system, and associated packages from the container
  • Better Resource Usage – Significantly reduced memory footprint and CPU usage with native Rust performance
  • Improved Error Handling – Better error messages, logging, and debugging capabilities throughout the system
  • Type Safety – Enhanced reliability through Rust’s type system and memory safety guarantees

🐞 General App Fixes and Improvments

  • Better Youtube Support – The youtube search api is now embeded in the standard Pinepods Search api. This makes searching Youtube much faster and more consistent.
  • Multi-Select Episodes – On the page for any given podcast you can now select and take actions on any given number of episodes. This allows you to mark all episodes of a given podcast as complete in one fell swoop. Arrows also appear on the episodes allowing you to mark all episodes newer or older than a particular episode.
  • Playlist Limits – System Playlists are now limited to a max of 1000 episodes. This will take the most relevant 1000 for the playlist.
  • Playlist Fixes - Also fixed an issue with the Almost Complete playlist where the completed percentage wasn’t working correctly.
  • Category Fixes - Categories throughout the app have been improved. Sometimes they would previously show as a strange looking vector. This will no longer occur.
  • Premium Feeds - Premium feeds should now be fully functional everywhere.
  • Backup/Restore Database - The Backup and Restore functionality has been 100% totally rebuilt. This should fix some issues that it previously had with actually restoring. There’s also an option to schedule backups now. So that they run on a regular basis. The restore option will automtically see these backups as options to restore from.
  • Subscribed People Fixes - The functionality around subscribed people has gotten some major fixes as well. This should fix numerous bugs related to people subscription
  • Match Podcast Index IDs - There’s a new option in settings to match a podcast to it’s podcast index counterpart. Having this ID correct will allow for more consistent host following.
  • Auto Complete Options - There’s also been an option added to playback settings in the settings area to auto complete an episode if it gets to a certain amount of seconds to the end of it. For example, you can set it to 30 seconds and if an episode is within 30 seconds of the end it will automatically mark it complete.
  • Authenciation options added to NTFY Notifications - The NTFY notification settings now support username and passwords or authentication tokens. These can be skipped entirely still if you have no auth.
  • Additional OIDC Settings - Experimental name claim settings added to to OIDC setup area. Name, email, user, roles claim options. As well as admin and user roles have all been added.

🕸️ Website Rebuild

  • The Pinepods Website has gotten a complete revamp! It’s looking much nicer!
  • Many more docs have been written as well. There’s documentation for just about every option in Pinepods. If you find something missing please let me know!

Pinepods is a podcast server that’s self hosted. It aims to be a multi-client version of what you might already have on your phone that allows you to listen anywhere. Host pinepods and get a web client, mobile apps, desktop apps, even a CLI app. Your progress syncs between all these. It supports gpodder sync for use with your existing apps if you want (though I’ve put 100 plus hours into the mobile apps and really would appreciate people at least giving them a go) and it has tons of features. Think Notifications on release, smart playlists, multi user, sharing, chapter support, YouTube channel to podcast support. Loads of stuff, and loads more still to come.

With 0.8.0 the mobile apps are now on Google Play and the Apple app stores, and the api has been fully rewritten in rust. It’s a lean mean podcasting machine. And actually the real current version is 0.8.1.

  • flightyhobler@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    7 hours ago

    Hey, I just got it running via docker compose. Gotta say it was a very smooth startup. I usually mess up my ports (I keep them incremental), but not even that. It was up and running in under a minute. I am currently importing my podcasts via opml. Themes are awesome. Hot dog stand threw me back a few years! 😄 👍🏼