Code Monkey home page Code Monkey logo

spotsync's People

Contributors

hibroseph avatar johnreiley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

spotsync's Issues

Add logic to generate queue from all current party attendees top recommended songs

Currently the queue is generated from the party hosts top tracks. I want to generate the queue from all current party attendees top recommended songs. You will need to follow some of the Spotify API documentation such as the recommendation endpoint can only accept 5 seed tracks.

There will need to be logic to determine which 5 seed tracks are used if there are more than 5 people or which 5 seed tracks to use from which people.

Add Exception Logging

There currently is no logging. We need to add exception logging. I believe I would like to write the exceptions to a file to be retrieved later since we do not have a database. This will probably require a logging framework that can thread safely add exceptions to a file

Remove wrench.js from build

wrench.js has been depreciated. I don't explicitly use wrench.js but I believe it is used on the file-loader for webpack. The webpack site says file-loader is deprecated in v5. Let's remove file-loader for modules and see if that fixes the build

Add feature flags service

It would be ideal that we could add new features without making it available to everyone that uses our software. Ideally this would be database driven so we could change it on the fly without restarting the app.

Discussion:

  • If this is stored in the database, how should it be stored? Column per feature? A complex datatype such as JSON (we are using POSTGRES which JSON is a supported datatype)?
  • Should the user be able to enable all beta features or enable specific features?

Notes

  • This could be a framework used for showing new features

Go to party not joined (with URL) will show some information/incorrect information

If you go to a party that is real but you are not joined in with a url (https://spotibro.com/party?partyCode=SQXJC6) It will never show the queue or history but will show that you can leave the party when you are not joined.

Ideally this page would show current playing song, queue, and history. You could even sync music for the current song but still have an option to join. Probably joining this party would remove you from other parties

Add Docker Compose file to start up all services

Currently running the app in Docker only work if you run it from Visual Studio if you already have the dependency containers running (such as postgres). We should be able to start all the necessary service containers with a single command

Update footer

Right now the footer is very simple. It just has the app name with who created it. It would look much more professional if it followed the same idea that most web sites do.

This probably means having multiple columns with related links on those columns

Links we could include

  • Github url (maybe as a Github icon)
  • Link to my profile
  • Privacy Policy
  • Feature Request
  • Report an issue

This should be created in a way that adding more footer values are easy to add

research history api implementation

It would be nice if back and forward buttons could be used to go through different component states. I am not sure what that would look like since it wasn't thought of like that from the start

Documentation

This project needs basic documentation of architecture, getting set up and running, etc.

Chat with me if you'd like to do this and I can explain what needs to be explained

Party page shows blank song list and blank playing dashboard

The party page shows a blank song list. This needs to either be conditionally rendered on the party page or passed to another page . I think I would rather a lot of the functionality that is currently in the party page be moved to other pages.

Code Coverage with Unit Tests and Integration Tests

There are some essential parts of our application that we need to have unit tested. This is to have the end goal of enabling continuous integration. We need to have enough confidence in our tests that we can release automatically

Parts to get code coverage first:

  • Playlists can be created
  • Events are emitted (such as when the next song comes)
  • You can join a party
  • You can leave a party (also include while being in a weird state, being in 2 or more parties at once)
  • Make sure when you logout, you leave all parties

Implement generic paging

We have a few views that return paged data. This happens most often on the track list but it would be nice to have this be generic so we could add the functionality anywhere that has paging.

Things to think about:

  • What is different between all the different ways to page?
  • What is the same

Move the things that are the same to the generic functionality and pass in the differences as parameters

Disconnected Spotify Popup is more helpful

Right now the text in the disconnected Spotify Popup is not the clearest.

We could clear it up by:

  1. Rewriting it with clearer language
  2. Have feedback when the press sync (either give it more things to try or tell it that it failed, maybe a loading icon while it is trying)

Cache data

We can cache the users playlists as well as users top songs to reduce API calls

Unit testing SpotifyHttpClient

Currently trying to write code to unit test the parsing logic of the SpotifyHttpClient. This relies on the JSON that Spotify returns to me. I was thinking that I could easily test the parsing logic but mocking the HttpClient.SendAsync method to return the JSON of a specific API endpoint and comparing the parsed output to what I expect to make sure it is parsing correctly.

I am not sure if I am going about this the right way. The code resides SpotSync.Tests > UnitTests > SpotifyHttpClientTests

Make logout / leave party functionality more robust

If a user leaves a party or wants to log out, we need to make sure the app doesn't modify their Spotify app anymore. This needs to be fault tolerant and robust.

If an error occurs, we need to make sure the operation of leaving a party happens no matter what

A global error page

If there is an unhandled error, it would be great if we displayed a page with that verbage. It would be great if the user could easily add more information and tie it to an exception so it can be solved faster

An idea but we might be able to hash a unique part of the exception and keep track of what exceptions are most common.

Complex search UI

We need to create a UI that will allow us to use our complex queries to add songs to the queue

Handle explicit songs

you can specify to have explicit songs in your party or not.

If there are no explicit songs allowed and a person tries to add one, it will warn them before adding it

Run app on specific port

We need to be able to run the app on a specific port when debugging so we can simplify the getting started process. This means we explicitly state what port to use so we do not need to modify the Redirect Url.

Automatic Retrying on Failed API Requests to Spotify

Currently if a request fails to Spotify (such as play this song), it will not retry that request.

We should bake in a retry API request logic. We might roll our own or look at existing solutions (such as Polly)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.