204941a1dc
- Created a detailed database schema document outlining tables, relationships, and key fields. - Added OAuth integration documentation covering Spotify and Dropbox authentication processes. - Introduced a FAQ section addressing common user inquiries about the application. - Developed a user-friendly index page for easy navigation of the documentation. - Specified documentation dependencies in requirements.txt for building the documentation site. - Expanded user guide with sections on account management, creating rounds, exporting rounds, getting started, importing songs, and user interface navigation. - Updated mkdocs.yml for improved site structure and navigation.
255 lines
7.2 KiB
Markdown
255 lines
7.2 KiB
Markdown
# Configuration Guide
|
|
|
|
This guide explains how to configure Quizzical Beats for different environments and use cases.
|
|
|
|
## Environment Variables
|
|
|
|
Quizzical Beats uses environment variables for configuration. These can be set in the `.env` file or directly in your environment.
|
|
|
|
### Core Configuration
|
|
|
|
```bash
|
|
# Debug settings
|
|
DEBUG=True
|
|
DEBUG2=False
|
|
SECRET_KEY=your-secret-key-here-make-it-long-and-random
|
|
```
|
|
|
|
### API Keys and Services
|
|
|
|
```bash
|
|
# OpenAI API settings
|
|
OPENAI_API_KEY=your-openai-api-key
|
|
OPENAI_URL=https://api.openai.com/v1
|
|
OPENAI_MODEL=gpt-4o-mini
|
|
OPENAI_SEARCH_MODEL=gpt-4o-mini-search-preview
|
|
|
|
# Translation and language services
|
|
DEEPL_API_KEY=your-deepl-api-key
|
|
MEANINGCLOUD_API_KEY=your-meaningcloud-api-key
|
|
|
|
# Audio services
|
|
ELEVENLABS_API_KEY=your-elevenlabs-api-key
|
|
ACRCLOUD_TOKEN=your-acrcloud-token
|
|
|
|
# Music APIs
|
|
LASTFM_API_KEY=your-lastfm-api-key
|
|
```
|
|
|
|
## Music Metadata APIs
|
|
|
|
Quizzical Beats uses multiple API services to gather comprehensive music metadata. Configuring these services enhances the quality and completeness of your music library.
|
|
|
|
### Last.fm
|
|
|
|
Last.fm provides genre information and tag data that's often missing from streaming services:
|
|
|
|
- **Configuration**: Set the `LASTFM_API_KEY` environment variable
|
|
- **Usage**: Automatically enriches tracks with genre metadata
|
|
- **Benefits**: Improves genre-based round generation
|
|
- **Obtain API Key**: [Last.fm API](https://www.last.fm/api/account/create)
|
|
|
|
### Spotify
|
|
|
|
Spotify provides comprehensive track metadata and audio features analysis:
|
|
|
|
- **Configuration**: Set `SPOTIFY_CLIENT_ID` and `SPOTIFY_CLIENT_SECRET`
|
|
- **Usage**: Primary source for song previews, artwork, and audio characteristics
|
|
- **Benefits**: Enables audio feature analysis (tempo, danceability, energy, etc.)
|
|
- **Obtain API Keys**: [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/)
|
|
|
|
### Deezer
|
|
|
|
Deezer serves as an alternative source for track metadata and previews:
|
|
|
|
- **Configuration**: Set `DEEZER_APP_ID` and `DEEZER_APP_SECRET`
|
|
- **Usage**: Alternative source when Spotify data is unavailable
|
|
- **Benefits**: Provides additional preview URLs and metadata
|
|
- **Obtain API Keys**: [Deezer Developers](https://developers.deezer.com/myapps)
|
|
|
|
### ACRCloud
|
|
|
|
ACRCloud can be used for music recognition and metadata enrichment:
|
|
|
|
- **Configuration**: Set `ACRCLOUD_TOKEN`
|
|
- **Usage**: Identify songs from audio samples
|
|
- **Benefits**: Enhanced metadata lookups using audio fingerprinting
|
|
- **Obtain API Keys**: [ACRCloud](https://www.acrcloud.com/)
|
|
|
|
### Metadata Enrichment Process
|
|
|
|
When a song is imported into Quizzical Beats:
|
|
|
|
1. The system first checks if the song has an ISRC (International Standard Recording Code)
|
|
2. If an ISRC is available, it's used to find metadata across all configured services
|
|
3. The system consolidates data from multiple sources to create a comprehensive record
|
|
4. If an ISRC is unavailable, the system relies on the original source's data
|
|
5. Genre information is converted to tags for improved searchability
|
|
|
|
For optimal metadata quality, we recommend configuring at least Spotify and Last.fm APIs.
|
|
|
|
### Database Configuration
|
|
|
|
```bash
|
|
# SQLite (default)
|
|
SQLALCHEMY_DATABASE_URI=sqlite:///data/song_data.db
|
|
SQLALCHEMY_TRACK_MODIFICATIONS=False
|
|
|
|
# For MySQL/MariaDB:
|
|
# SQLALCHEMY_DATABASE_URI=mysql+pymysql://username:password@localhost/musicround
|
|
|
|
# For PostgreSQL:
|
|
# SQLALCHEMY_DATABASE_URI=postgresql://username:password@localhost/musicround
|
|
```
|
|
|
|
### OAuth Provider Configuration
|
|
|
|
```bash
|
|
# Spotify API configuration
|
|
SPOTIFY_CLIENT_ID=your-spotify-client-id
|
|
SPOTIFY_CLIENT_SECRET=your-spotify-client-secret
|
|
SPOTIFY_REDIRECT_URI=http://localhost:5000/auth/spotify/callback
|
|
|
|
# Deezer API configuration
|
|
DEEZER_APP_ID=your-deezer-app-id
|
|
DEEZER_APP_SECRET=your-deezer-app-secret
|
|
DEEZER_REDIRECT_URI=http://localhost:5000/deezer-callback
|
|
|
|
# Google OAuth configuration
|
|
GOOGLE_CLIENT_ID=your-google-client-id
|
|
GOOGLE_CLIENT_SECRET=your-google-client-secret
|
|
|
|
# Authentik OAuth configuration
|
|
AUTHENTIK_CLIENT_ID=your-authentik-client-id
|
|
AUTHENTIK_CLIENT_SECRET=your-authentik-client-secret
|
|
AUTHENTIK_METADATA_URL=https://authentik.example.com/.well-known/openid-configuration
|
|
|
|
# Dropbox OAuth configuration
|
|
DROPBOX_APP_KEY=your-dropbox-app-key
|
|
DROPBOX_APP_SECRET=your-dropbox-app-secret
|
|
DROPBOX_REDIRECT_URI=http://localhost:5000/users/dropbox/callback
|
|
```
|
|
|
|
### Email Configuration
|
|
|
|
```bash
|
|
# Email settings
|
|
MAIL_HOST=smtp.example.com
|
|
MAIL_PORT=587
|
|
MAIL_USE_TLS=True
|
|
MAIL_USE_SSL=False
|
|
MAIL_USERNAME=your-email-username
|
|
MAIL_PASSWORD=your-email-password
|
|
MAIL_SENDER=quizzical-beats@example.com
|
|
MAIL_RECIPIENT=admin@example.com
|
|
```
|
|
|
|
### Automation Settings
|
|
|
|
```bash
|
|
# Used for automated tasks and API access
|
|
AUTOMATION_TOKEN=your-secure-automation-token
|
|
```
|
|
|
|
## Configuration File (.env)
|
|
|
|
Create a `.env` file in the root directory with your configuration variables. You can copy the provided `.env.demo` file as a starting point:
|
|
|
|
```bash
|
|
cp .env.demo .env
|
|
```
|
|
|
|
Then edit the `.env` file with your actual configuration values:
|
|
|
|
```bash
|
|
# Example .env file (simplified)
|
|
SECRET_KEY=your-secure-secret-key
|
|
DEBUG=True
|
|
SQLALCHEMY_DATABASE_URI=sqlite:///data/song_data.db
|
|
SPOTIFY_CLIENT_ID=your-spotify-client-id
|
|
SPOTIFY_CLIENT_SECRET=your-spotify-client-secret
|
|
# Add other variables as needed
|
|
```
|
|
|
|
## Configuration Priority
|
|
|
|
Quizzical Beats loads configuration in the following order of priority:
|
|
|
|
1. Environment variables set in the system
|
|
2. Variables in the `.env` file
|
|
3. Default values defined in the `config.py` file
|
|
|
|
## Docker Environment Variables
|
|
|
|
When using Docker, you can pass environment variables through the `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
version: '3'
|
|
services:
|
|
app:
|
|
build: .
|
|
environment:
|
|
- SECRET_KEY=your-secure-secret-key
|
|
- SQLALCHEMY_DATABASE_URI=postgresql://postgres:password@db/musicround
|
|
- SPOTIFY_CLIENT_ID=your-spotify-client-id
|
|
- SPOTIFY_CLIENT_SECRET=your-spotify-client-secret
|
|
# Add other variables as needed
|
|
volumes:
|
|
- ./data:/app/data
|
|
```
|
|
|
|
## Required Configuration
|
|
|
|
The following variables are required for core functionality:
|
|
|
|
- `SECRET_KEY`: Used for securing sessions and CSRF tokens
|
|
- `SQLALCHEMY_DATABASE_URI`: Database connection string
|
|
|
|
## Optional Configuration
|
|
|
|
These configurations enable additional features:
|
|
|
|
### Spotify Integration
|
|
|
|
Required for importing playlists and tracks from Spotify:
|
|
- `SPOTIFY_CLIENT_ID`
|
|
- `SPOTIFY_CLIENT_SECRET`
|
|
- `SPOTIFY_REDIRECT_URI`
|
|
|
|
### Dropbox Integration
|
|
|
|
Required for exporting rounds to Dropbox:
|
|
- `DROPBOX_APP_KEY`
|
|
- `DROPBOX_APP_SECRET`
|
|
- `DROPBOX_REDIRECT_URI`
|
|
|
|
### OAuth Authentication
|
|
|
|
Required for sign-in with external providers:
|
|
- Google: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`
|
|
- Authentik: `AUTHENTIK_CLIENT_ID`, `AUTHENTIK_CLIENT_SECRET`, `AUTHENTIK_METADATA_URL`
|
|
|
|
## Applying Configuration Changes
|
|
|
|
After changing configuration:
|
|
|
|
1. For a standard installation, restart the application:
|
|
```bash
|
|
sudo systemctl restart quizzical-beats
|
|
# Or if using Gunicorn directly:
|
|
kill -HUP $(cat gunicorn.pid)
|
|
```
|
|
|
|
2. For Docker installations:
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Verifying Configuration
|
|
|
|
To verify your configuration:
|
|
|
|
1. Check the application logs after startup
|
|
2. Visit the Admin > System > Settings page in the web interface
|
|
3. Check the system health on the Admin > System > Health Dashboard page |