|
1 | | -# :musical_note: :mag: Discovraphy |
2 | | -A web application for discovering new music based on a provided song or parameters. Aims to streamline the process of finding and adding new music to playlists by adopting the swiping approach found in many dating apps. |
| 1 | +<h1 align="center"><img src="src/assets/discovraphy_logo.svg" height="100"></h1> |
3 | 2 |
|
4 | | -Currently a work in progress :smile: |
| 3 | +Discovraphy is a web application that lets you browse and discover new music by swiping through an artist's discography. It streamlines the process of listening to a series of tracks and adding the ones you like to your library or a playlist by using the swipe-based interface inspired by modern dating apps. |
| 4 | + |
| 5 | +While listening to new releases or exploring an artist's catalog on Spotify, I frequently find new tracks that pique my interest, which I add to my "Trial" playlist for further consideration. But I found right-clicking, selecting "Add to playlist" and then searching for the correct playlist to be mildly disruptive to my listening experience. I thought to myself, this doesn't need to be so hard (and I wanted an excuse to learn some frontend development and React), so I created Discovraphy. |
| 6 | + |
| 7 | +>[!NOTE] |
| 8 | +> Spotify Premium is required to use Discovraphy. |
| 9 | +
|
| 10 | + |
| 11 | +## Preview |
| 12 | +<img src="src/assets/preview.gif"> |
| 13 | + |
| 14 | +## Features |
| 15 | +- Responsive layout |
| 16 | +- Dark/light mode |
| 17 | +- Spotify integration |
| 18 | +- Search for artists |
| 19 | +- Browse artist's albums and filter by type |
| 20 | +- Save tracks to your library or add them to a playlist |
| 21 | +- Swipe through tracks using mouse, keyboard, or touch gestures |
| 22 | +- Playback controls: play, pause, next, previous, seek, adjust volume |
| 23 | + |
| 24 | +## Getting Started |
| 25 | +If you want to try out Discovraphy you have two options: |
| 26 | +### Option 1: Request Access |
| 27 | +To interact with Spotify, Discovraphy relies on the [Spotify Web API](https://developer.spotify.com/documentation/web-api) and [Web Playback SDK](https://developer.spotify.com/documentation/web-playback-sdk) and is in [development mode](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) with no plans to move to extended quota mode. As of February 2026, development mode allows a maximum of 5 Spotify users to authenticate with Discovraphy. |
| 28 | + |
| 29 | +There are currently 5 free spots. If you would like to claim one of them, send an email to dylanpitherdev@gmail.com with the name and email associated with your Spotify account. |
| 30 | + |
| 31 | +### Option 2: Self-Host |
| 32 | +To clone and run Discovraphy you will need [Git](https://git-scm.com/), [Node.js](https://nodejs.org/en/download) v24+ and a Spotify account with Spotify Premium. |
| 33 | + |
| 34 | +#### 1. Clone the repository |
| 35 | +``` bash |
| 36 | +git clone https://github.com/dpither/discovraphy.git |
| 37 | +``` |
| 38 | +#### 2. Navigate to the repository |
| 39 | +``` bash |
| 40 | +cd discovraphy |
| 41 | +``` |
| 42 | +#### 3. Install dependencies |
| 43 | +``` bash |
| 44 | +npm install |
| 45 | +``` |
| 46 | +#### 4. Create a Spotify app |
| 47 | +Go to the [Spotify developer dashboard](https://developer.spotify.com/dashboard) and click "Create app" |
| 48 | +>[!NOTE] |
| 49 | +>As of February 2026, a Spotify account is limited to one app. |
| 50 | + |
| 51 | +Under "Redirect URIs" enter: |
| 52 | +``` bash |
| 53 | +http://127.0.0.1:3000/discovraphy/callback |
| 54 | +``` |
| 55 | +Under "Which API/SDKs are you planning to use?", check Web API and Web Playback SDK. |
| 56 | + |
| 57 | +Fill in the rest of the form with whatever you like and click "Save". |
| 58 | + |
| 59 | +The Client ID needed for the next step can be found under Basic Information. |
| 60 | +#### 5. Setup environment variables |
| 61 | +``` bash |
| 62 | +cp .env.example .env |
| 63 | +``` |
| 64 | +Edit the created `.env` file use your app's Client ID. |
| 65 | +#### 6. Build the project |
| 66 | +``` bash |
| 67 | +npm run build |
| 68 | +``` |
| 69 | +#### 7. Run the application |
| 70 | +``` |
| 71 | +npm run preview |
| 72 | +``` |
| 73 | +You now have a local instance of discovraphy running at http://127.0.0.1:3000/discovraphy/. |
| 74 | + |
| 75 | +## Tech Stack |
| 76 | +- Language: TypeScript |
| 77 | +- Framework: React |
| 78 | +- Styling: Tailwind CSS |
| 79 | +- Routing: React Router |
| 80 | +- State Management: Zustand |
| 81 | +- Animations: Motion |
| 82 | +- Build Tool: Vite |
| 83 | + |
| 84 | +## Roadmap |
| 85 | +Due to increasing restrictions and reducing capabilities of the Spotify API for development mode, further development on this project will be unlikely outside of some quality of life updates such as: |
| 86 | +- Pagination of form results (especially artists search since the limit is being reduced from 50 to 10) |
| 87 | +- Option to create a new playlist when selecting a destination |
| 88 | +- Graceful handling and recovery from rate limits (under normal conditions, I have not found this to be an issue yet) |
0 commit comments