# [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.

• 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.

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.

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.

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.