[SimplePod] Project Goals

Now with more GitHub

Missed my post about starting this project? Read it here.

GitHub

Now that I can code again, It’s now up on GitHub. Don’t expect it to be good right now, most if it still has temp data because I was still messing around with how I want it to look. How information is updated right now is a complete mess, and will need to be redone. After I think the user interface is good enough then I was planning on making it use real information.

On my last post I mentioned that there was a bug where if 4 bottom navigation bar items existed it would ignore the background color attribute. Unfortunately updating the Flutter API did not fix this. Possible temporary solution could be to create a bottom navigation bar from scratch.

Contributing

Thanks to Soumyajit for offering to help, and I welcome anyone else who wants to contribute.

Goals

So every project has goals. Below is what I’m thinking so far.

(This list is an active list, so it will probably change.)

Added December 6, 2019

  • Written in Flutter, with possible need to write some platform specific code for handling the audio.

  • Intuitive, but not overly simplistic: A lot of podcast apps are very simple in design, and while it looks out right gorgeous, features are more hidden and less intuitive.

  • A focus on chapters: While not every podcast has chapters, I want them to be very integrated into the UI. In the screenshots on my last post you can see I have both the chapter name, and time position within the chapter on the main player screen. I also have one of the “pages“ set to read chapters.

  • A focus on playlists: Ability to have multiple custom playlists, that both can add full podcast or individual episodes.

  • Syncing: One major disadvantage to the podcast app, that I think is the best, is the lack of proper syncing.

  • Minimal Data Collection: I want to collect the minimal amount of data needed, at least by default.

  • No Ads, No mandatory payment: I’d rather not require the user to pay to download the app, nor do I the free download act as a trial. Personally I’m not in it to monition it. I, of course, will have a donation link, which we can set up to be distributed to major contributors. If we need to monetize it, then personally I’d rather have a premium version with all features, and the free version still fully usable as a day-to-day podcast app. The reason I don’t want to do ads, is because of the privacy concerns. If, however, we want to do only a few home-made / verified ads, then I’d be okay with that, just no 3rd part ad companies.

  • Fully open-source

  • Ability to change most of these settings on a per-podcast base

  • App Icon and Artwork

  • Specific features I think we should include:

    • Ability to restrict downloading, streaming, and syncing to only use WiFi.

    • Themes: Dark (Default), Grey, Black (AMOLED), and Light

    • Ability to hide podcast/episodes if they have been listen to

    • Display podcast/episodes in both List (default) or grid view

    • Ability to change the function of the “quick action” button on episodes

    • Ability to choose to use the episode artwork (when available) or only the podcast’s artwork.

    • Add “quick buttons” that link to podcast support pages (like Patreon). This could be done by seeing if the link has a `payment` attribute. (Disable-able)

    • Ability to keep the screen on if on the player screen

    • Ability to change the speed of the podcast

    • Ability to combine left and right channels

    • Ability to change the set of controls on the player, mini-player, notification player, and the headset/Bluetooth.

    • A sleep timer:

      • Option to automatically start it whenever you start listening

      • Ability to shake the phone to reset it

    • Home widget with customizable colors and controls. Also one that can show the current playlist and can change which playlist you’re listening to.

    • Listening statistics

      • Will ask upon first start if they want the stats to only save locally or to also be synced.
    • Read and Ignore/Skip indicators. Having either of these indicators will make it so that episode isn’t included in the “how many episodes do I have left“ badge-thing.

    • UI intuitive enough to not need a side drawer. And if so, only for settings on that screen.

    • Add a podcast either via RSS or by a search. No pushing any podcasts, just display the results of the query. (Probably using iTunes database). When on a podcast also display other podcasts from the same author.

  • Late-Term: An online player.

  • Probably a lot more, but this is what I can think as of right now.



Soumyajit Pathak picture

Great post outlining the goals. It will a helpful guide to anyone wanting to contribute to the app (me :)).

What are your plans around the syncing problems you mentioned? That problem set sounds extra interesting to me. Would love to know what are the issues.

Love the designs btw.

Minenash picture

I didn't actually bring up any problems with syncing. I brought up the problem that Podcast Addict didn't have syncing, though. I'll probably host a database somewhere, (Firebase maybe?). The only problem I can see is what to do when the device and the cloud both want to update each other. I think I can get around this with one (or both) of these way: ask the user which one, or merge them, using what ever has a higher "value" (listened > 50%, ignored > no action, etc). The problem with the last one, is what if someone marks something as unplayed, despite possibly being never, it would get overridden in the sync because listened > no action.

Soumyajit Pathak picture

There are patterns out there that tackle this type syncing problems. I am not entirely sure but data structures like CRDT might be helpful here.