|
1 | 1 | # Spotifort |
2 | 2 |
|
3 | | -Match your Spotify Liked Songs against the [Treefort Music Fest 2026](https://treefortmusicfest.com/) lineup. Find out which artists you already love are playing in Boise this March. |
| 3 | +<p align="center"> |
| 4 | + <img src="public/spotifort_transparent.png" alt="Spotifort Logo" width="200"> |
| 5 | +</p> |
4 | 6 |
|
5 | | -**This project is not affiliated with, endorsed by, or associated with Treefort Music Fest or Spotify.** This is an independent, open-source community tool built by an enthusiast. |
| 7 | +<p align="center"> |
| 8 | + <strong>Find which artists you love are playing Treefort 2026</strong> |
| 9 | +</p> |
| 10 | + |
| 11 | +<p align="center"> |
| 12 | + <a href="https://spotifort.com">spotifort.com</a> · <a href="https://spotifort.com/setup">Setup Guide</a> · <a href="https://spotifort.com/lineup">Full Lineup</a> |
| 13 | +</p> |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## What Is This? |
6 | 18 |
|
7 | | -## Status |
| 19 | +Spotifort matches your Spotify Liked Songs against the [Treefort Music Fest 2026](https://treefortmusicfest.com/) lineup (March 25–29, Boise, Idaho). Connect your Spotify account and instantly see which artists you already like that are playing the festival. |
8 | 20 |
|
9 | | -🚧 Under active development — targeting launch before Treefort 2026 (March 25–29). |
| 21 | +## Privacy First |
| 22 | + |
| 23 | +All processing happens **client-side in your browser**. Spotifort has no backend, no database, no analytics, no cookies, and no tracking. Your Spotify data never leaves your device. When you close the tab, everything is gone. |
10 | 24 |
|
11 | 25 | ## How It Works |
12 | 26 |
|
13 | | -1. You authenticate with Spotify using your own credentials (PKCE flow — no server, no data stored) |
14 | | -2. Spotifort pulls your Liked Songs and compares artists against the Treefort 2026 lineup |
15 | | -3. You get a list of matches — artists you already like who are playing the festival |
| 27 | +1. Create a free Spotify Developer app ([setup guide](https://spotifort.com/setup)) |
| 28 | +2. Paste your Client ID into Spotifort |
| 29 | +3. Authorize with Spotify (read-only access to your Liked Songs) |
| 30 | +4. See your matches |
| 31 | + |
| 32 | +### Why Do I Need a Client ID? |
| 33 | + |
| 34 | +Spotify's [February 2026 API changes](https://developer.spotify.com/blog/2026-02-06-update-on-developer-access-and-platform-security) restrict Development Mode apps to 5 authorized users. Rather than limiting Spotifort to 5 people, each user creates their own Spotify Developer app — making you user #1 on your own app. This is the only way an independent, open-source project can work within Spotify's current restrictions. |
| 35 | + |
| 36 | +**Requirements:** |
| 37 | +- Spotify Premium account (required by Spotify for Developer Mode) |
| 38 | +- A desktop/laptop computer to create the Developer app (Spotify's dashboard doesn't work on mobile) |
| 39 | +- Once set up, Spotifort works on any device |
16 | 40 |
|
17 | | -All processing happens client-side in your browser. No personal data is stored, transmitted, or logged. |
| 41 | +## Lineup Data |
| 42 | + |
| 43 | +The Treefort lineup is maintained as a static JSON file sourced from the [official Treefort website](https://treefortmusicfest.com/lineup/) and cross-referenced with Spotify's catalog. It is updated manually and may not reflect last-minute changes. |
| 44 | + |
| 45 | +You can view the full lineup data, including which artists are and aren't on Spotify, at [spotifort.com/lineup](https://spotifort.com/lineup). |
18 | 46 |
|
19 | 47 | ## Tech Stack |
20 | 48 |
|
21 | | -- Vanilla JS + Vite |
22 | | -- Spotify Web API (PKCE auth) |
23 | | -- Hosted on Cloudflare Pages |
| 49 | +- Vanilla JavaScript |
| 50 | +- [Vite](https://vitejs.dev/) build tool |
| 51 | +- [Spotify Web API](https://developer.spotify.com/documentation/web-api) with PKCE authentication |
| 52 | +- Hosted on [Cloudflare Pages](https://pages.cloudflare.com/) |
24 | 53 |
|
25 | | -## License |
| 54 | +## Development |
26 | 55 |
|
27 | | -MIT — see [LICENSE](LICENSE) for details. |
| 56 | +```bash |
| 57 | +# Clone the repo |
| 58 | +git clone https://github.com/commitconfirm/spotifort.git |
| 59 | +cd spotifort |
| 60 | + |
| 61 | +# Install dependencies |
| 62 | +npm install |
| 63 | + |
| 64 | +# Create your env file with your Spotify Client ID |
| 65 | +echo "VITE_SPOTIFY_CLIENT_ID=your_client_id_here" > .env.local |
| 66 | + |
| 67 | +# Start dev server (runs on port 9090) |
| 68 | +npm run dev |
| 69 | + |
| 70 | +# Build for production |
| 71 | +npm run build |
| 72 | +``` |
| 73 | + |
| 74 | +### Updating Lineup Data |
| 75 | + |
| 76 | +```bash |
| 77 | +# Regenerate lineup.json from Treefort website + Spotify search |
| 78 | +# Prompts for a Spotify access token |
| 79 | +node scripts/fetch-lineup.js |
| 80 | + |
| 81 | +# Add genre data to existing lineup.json |
| 82 | +node scripts/add-genres.js |
| 83 | +``` |
28 | 84 |
|
29 | 85 | ## Disclaimer |
30 | 86 |
|
31 | | -Use at your own risk. No guarantees of accuracy or availability. Lineup data is manually maintained and may not reflect the most current information. This is free and open-source software (FOSS). |
| 87 | +**This project is not affiliated with, endorsed by, or associated with Treefort Music Fest or Spotify.** This is an independent, open-source community tool built by an enthusiast. |
| 88 | + |
| 89 | +Use at your own risk. No guarantees of accuracy or availability. Lineup data is manually maintained and may not reflect the most current information. |
| 90 | + |
| 91 | +## Contributing |
| 92 | + |
| 93 | +Contributions are welcome. If you find an artist missing from the lineup or matched incorrectly, open an issue. If you want to add a feature, check the issues or open a discussion first. |
| 94 | + |
| 95 | +## Built With |
| 96 | + |
| 97 | +This project was built with [Claude Code](https://claude.ai/code) by Anthropic. |
| 98 | + |
| 99 | +## Contributors |
| 100 | + |
| 101 | +- [commitconfirm](https://github.com/commitconfirm) — creator and maintainer |
| 102 | +- [Claude Code](https://claude.ai/code) — AI pair programmer |
| 103 | + |
| 104 | +## License |
| 105 | + |
| 106 | +MIT — see [LICENSE](LICENSE) for details. |
| 107 | + |
| 108 | +--- |
32 | 109 |
|
33 | | -Built with [Claude Code](https://claude.ai/code) | [commitconfirm.com](https://commitconfirm.com) |
| 110 | +<p align="center"> |
| 111 | + <a href="https://commitconfirm.com">commitconfirm.com</a> |
| 112 | +</p> |
0 commit comments