robinnnnn / groove-machine Goto Github PK
View Code? Open in Web Editor NEWA pretty skin for your Spotify playlist ๐
Home Page: https://bit.ly/vip-music
A pretty skin for your Spotify playlist ๐
Home Page: https://bit.ly/vip-music
A user should be able to navigate to the search page from playlist view
A sidebar that comes out from the left should display the main view to the right
This is why device selection (#4) would be helpful
Would require persisting user info + playlists in a DB
This will make token rotation easier
Use onSubmit
Currently the controller shows up when the user moves their mouse near the bottom of the viewport. The controller itself is also quite broken.
It might be more fun to stick the GUI on the left side, that pushes the UI over to the right as it comes out (like a narrow sidebar). The next / previous tracks can be controlled by "up" and "down" arrows respectively (rather than left / right) to indicate vertical music traversal.
Maybe a standalone button that plays a random song in the playlist? Rather than having to click "shuffle" then "next"
Track progress indicator. Not sure what's the best way to display this if the GUI is vertical. Maybe a bottom-to-top bar that fills up?
Icon / indicator for toggling shuffle state
Support absolute inputs
This would be very difficult since we don't have direct access to live audio data as a stream, but we do have the analysis API. It could also just be generic and not tied to the beat (maybe inherit from genre)
Cool inspiration: https://tympanus.net/Development/AnimatedMeshLines/demo4.html
Add icon to lock sidebar in view
Displaying the full screen loader can be jarring, unless artificially slowed down.
This would also allow for better error handling UX
Should the UI automatically follow the currently playing track? More specifically, if one song ends and the next one begins, should the view scroll accordingly?
This might be annoying if a user is actively searching / scrolling through the UI during a track change.
Not sure how to replicate this, but when it does happen the setInterval
network request retrieves the correct playback info; the view just doesn't update from props properly.
Update: can replicate by skipping to the end of a track and seeing the view not update to the next track. Sometimes it does update but it's slow to do so.
Update 2: could not reproduce as of 3/15
The app should support any playlist by ID / link.
The user should be prompted with an input bar upon successful first-time login, and this feature should be accessible at any future point.
Currently, pasting in /playlist/ABC
still defaults to loading /playlist/XYZ
upon successful OAuth. This is because custom query params are dropped during the OAuth exchange.
If a playlist contains many tracks, loading them all in the DOM may be prohibitively expensive.
However, not loading all tracks may throw a wrench in the "shuffle" or "skip to now playing" feature
App fails to route when deployed to prod
Refreshing the page often prevents token refresh as the first event happens after 10 minutes (#20). There are two potential solutions to this:
lastTokenIssueTime
in localStorage, and refresh the token after a sufficient amount of time has passed since then (rather than sinceLastPageRefresh)Configure prettier: https://prettier.io/
README should address:
Use refresh token to rehydrate access.
Would also be great to use a router to redirect the user from /#{access_token}
to /home
, with the access token cached in state / localStorage
App should have a fun error state when it fails to fetch a provided playlist link / ID
No idea what this should look like, but Spotify's FS view is a good precedent.
Arbitrary slice point of numVisibleAnimatedItems
in <Tracklist />
causes loading to fail is a playlist has too few tracks
Steps to reproduce:
Page title should be based on current route + playlist title; maybe even now playing track?
Sidebar should close entirely
There should be a separate way to search for a playlist within the main view, rather than being redirected to /search
Should be a grid of rounded squares.
Maybe album covers, artist, track title in each square?
in favor of inline search feature @ /playlist
Actual route where people can enter a playlist.
Relates to #9
Should be able to search for specific artists / tracks within a playlist, and the view should respond accordingly
A user should know that they are OAuth'd with Spotify. A logged in state should display:
The devices list should recognize:
Is there an onDeviceUpdate
handler in any of the SDKs? If not, we may have to use polling.
Spotify has a bug where certain tracks in a playlist may have a null
value. Example playlist: https://open.spotify.com/user/spotify/playlist/37i9dQZEVXbstzyFsCgtMd?si=jMtOScvkQmKGAPJK28_QuA
Should have thinner rows
Controls
Controls UI
There should be some pop-up UI that displays the available keyboard shortcuts to the user
There should be an easy way to arrive at the currently playing track, which will be especially helpful for longer playlists.
User should be able to skip to certain parts of a track.
This should be available either in the Track Container or Sidebar
Some gif / placeholder should indicate that playlist data is being fetched from the server
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.