# Plays Hub A Rails application for tracking and visualizing your Spotify listening statistics. ## Setup Instructions ### 1. Prerequisites - Ruby (see `.ruby-version` or Gemfile for version) - PostgreSQL - Node.js & Yarn (for JS/CSS assets) - Redis (if using caching or background jobs) ### 2. Clone the Repository ```sh git clone cd plays-hub ``` ### 3. Install Dependencies ```sh bundle install yarn install --check-files ``` ### 4. Environment Variables Create a `.env` file (or set these in your environment): | Variable | Description | |----------------------------------|------------------------------------------| | `SPOTIFY_CLIENT_ID` | Your Spotify App Client ID | | `SPOTIFY_CLIENT_SECRET` | Your Spotify App Client Secret | | `SPOTIFY_REDIRECT_URI` | Your app's public base URL (no trailing slash), e.g. `https://yourdomain.com` | | `PLAYS_HUB_DATABASE_PASSWORD` | Password for the main production database | | `PLAYS_HUB_QUEUE_DATABASE_PASSWORD` | Password for the Solid Queue DB (production) | | `RAILS_ENV` | (optional) Rails environment, e.g. `development` | | `PORT` | (optional) Port to run the Rails server | ### 5. Database Setup ```sh rails db:create db:migrate rails db:queue_migrate ``` ### 6. Running the App ```sh rails server ``` ### 7. Background Jobs - This app uses [Solid Queue](https://github.com/basecamp/solid_queue) for background jobs. - Jobs are scheduled via `config/recurring.yml` (e.g., to fetch Spotify activities regularly). - To run background jobs: ```sh bin/rails solid_queue:start ``` ### 8. Spotify Integration - On first login, users must connect their Spotify account. - Make sure your Spotify app's redirect URI matches `SPOTIFY_REDIRECT_URI` + `/spotify_callback`. ### 9. Running Tests ```sh bundle exec rspec ``` --- ## Environment Variables Summary - `SPOTIFY_CLIENT_ID` - `SPOTIFY_CLIENT_SECRET` - `SPOTIFY_REDIRECT_URI` - `PLAYS_HUB_DATABASE_PASSWORD` - `PLAYS_HUB_QUEUE_DATABASE_PASSWORD` Set these in your `.env` or via your deployment provider's secrets manager. --- ## Additional Notes - See `config/recurring.yml` for scheduled jobs. - See `Gemfile` for required gems. - For any issues, check logs and ensure all ENVs are set correctly.