Initial clean commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# 🎧 Quizzical Beats – Brand Identity
|
||||
|
||||
## 🧠 Tagline
|
||||
|
||||
**Primary:**
|
||||
> *"Where trivia meets the rhythm."*
|
||||
|
||||
**Alternate options:**
|
||||
- "The soundtrack to your smartest guesses."
|
||||
- "Play the quiz. Feel the beat."
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Mission Statement
|
||||
|
||||
*Quizzical Beats empowers quiz hosts to create unforgettable music rounds that blend knowledge and rhythm. We make music-based trivia engaging, easy to set up, and endlessly fun for players of all ages.*
|
||||
|
||||
---
|
||||
|
||||
## 🌍 Purpose Statement
|
||||
|
||||
*We aim to make pub quizzes more interactive and exciting by elevating the music round. Whether you're a professional quizmaster or a casual host, Quizzical Beats provides the tools to bring sound, style, and smarts together.*
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Color Scheme
|
||||
|
||||
| Color | Usage | Hex Code | Description |
|
||||
|------------------|----------------------------|-----------|-----------------------------|
|
||||
| Deep Navy Blue | Primary text/logo | `#1A237E` | Bold, trustworthy, smart |
|
||||
| Vibrant Teal | Accents/highlights | `#00ACC1` | Energetic, fresh, modern |
|
||||
| Bright Orange | Call-to-actions/buttons | `#FF7043` | Playful, attention-grabbing |
|
||||
| Light Gray | Background/secondary UI | `#F5F5F5` | Clean, soft, minimalist |
|
||||
| Dark Gray | Text/subtle UI elements | `#212121` | Contrast, structure |
|
||||
|
||||
---
|
||||
|
||||
## 🖋️ Typography
|
||||
|
||||
**Primary Font:** Montserrat
|
||||
> Modern, geometric sans-serif font with excellent readability.
|
||||
|
||||
**Secondary Font:** Open Sans
|
||||
> Humanist sans-serif for body copy and UI elements.
|
||||
|
||||
---
|
||||
|
||||
## 🖼️ Visual Assets
|
||||
|
||||
- ✅ **Logo:** Stylized note and magnifying glass, symbolizing *music + discovery*
|
||||
- ✅ **Textlogo:** “Quizzical Beats” in bold *Montserrat*
|
||||
- ✅ **Monogram:** Clean *"QB"* + musical-symbol monogram
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Optional Brand Assets
|
||||
|
||||
Would you like any of the following?
|
||||
|
||||
- [ ] Favicon pack (.ico, .png, .svg)
|
||||
- [ ] Social media banners (e.g., Twitter/X, YouTube, Instagram)
|
||||
- [ ] Brand style guide (PDF)
|
||||
- [ ] Pitch deck slide template or Keynote theme
|
||||
|
||||
---
|
||||
|
||||
## 🔊 Voice & Tone
|
||||
|
||||
- Friendly and playful
|
||||
- Confident but not arrogant
|
||||
- Fun, musical, and clever
|
||||
- Inclusive for all trivia lovers
|
||||
@@ -0,0 +1,106 @@
|
||||
# OAuth Integration Callback URLs
|
||||
|
||||
This document provides information about the OAuth callback URLs used in Quizzical Beats for various authentication providers.
|
||||
|
||||
## Overview
|
||||
|
||||
When configuring OAuth providers (Google, Authentik, Spotify, Dropbox), you need to set up redirect/callback URLs in each provider's developer console. These URLs tell the provider where to send users after they authenticate.
|
||||
|
||||
## Callback URLs by Provider
|
||||
|
||||
### Google OAuth
|
||||
|
||||
**Callback URL:** `https://your-domain.com/users/login/google/callback`
|
||||
**Local Development:** `http://localhost:5000/users/login/google/callback`
|
||||
|
||||
When configuring Google OAuth in the Google Cloud Console:
|
||||
1. Go to "APIs & Services" > "Credentials"
|
||||
2. Create or edit an OAuth 2.0 Client ID
|
||||
3. Add the above URLs to the "Authorized redirect URIs" section
|
||||
|
||||
### Authentik OAuth
|
||||
|
||||
**Callback URL:** `https://your-domain.com/users/login/authentik/callback`
|
||||
**Local Development:** `http://localhost:5000/users/login/authentik/callback`
|
||||
|
||||
When configuring Authentik:
|
||||
1. Create an OAuth2/OIDC Provider
|
||||
2. Add the above URLs to the "Redirect URIs" field
|
||||
3. Ensure the scopes include "openid", "profile", and "email"
|
||||
|
||||
### Spotify API
|
||||
|
||||
**Callback URL:** `https://your-domain.com/users/spotify-callback`
|
||||
**Local Development:** `http://localhost:5000/users/spotify-callback`
|
||||
|
||||
When configuring Spotify in the Spotify Developer Dashboard:
|
||||
1. Go to your app's settings
|
||||
2. Add the above URLs to the "Redirect URIs" section
|
||||
3. Save the changes
|
||||
|
||||
### Dropbox API
|
||||
|
||||
**Callback URL:** `https://your-domain.com/users/dropbox-callback`
|
||||
**Local Development:** `http://localhost:5000/users/dropbox-callback`
|
||||
|
||||
When configuring Dropbox in the Dropbox Developer Console:
|
||||
1. Go to your app's settings in the [Dropbox App Console](https://www.dropbox.com/developers/apps)
|
||||
2. Under "OAuth 2", add the above URLs to the "Redirect URIs" section
|
||||
3. Make sure you've selected the correct permission scopes:
|
||||
- `files.content.read`
|
||||
- `files.content.write`
|
||||
- `sharing.write`
|
||||
- `offline_access` (for refresh tokens)
|
||||
4. Set the app status to "Production" if it's still in development mode
|
||||
5. In the "Permissions" tab, ensure all required scopes are selected
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Make sure to update the following environment variables in your `.env` file to match your configured callback URLs:
|
||||
|
||||
```
|
||||
# For Google OAuth
|
||||
GOOGLE_REDIRECT_URI=http://localhost:5000/users/login/google/callback
|
||||
|
||||
# For Authentik OAuth
|
||||
AUTHENTIK_REDIRECT_URI=http://localhost:5000/users/login/authentik/callback
|
||||
|
||||
# For Spotify API
|
||||
SPOTIFY_REDIRECT_URI=http://localhost:5000/users/spotify-callback
|
||||
|
||||
# For Dropbox API
|
||||
# DROPBOX_REDIRECT_URI=http://localhost:5000/users/dropbox-callback
|
||||
# Note: The Dropbox URL is automatically generated using Flask's url_for function
|
||||
```
|
||||
|
||||
In production, update these URLs to use your actual domain.
|
||||
|
||||
## Additional Notes
|
||||
|
||||
1. Make sure your application is properly configured to handle these callback routes.
|
||||
2. For security, always use HTTPS URLs in production environments.
|
||||
3. When testing locally with HTTP, some providers may require you to explicitly allow HTTP redirects for development.
|
||||
4. If you're using Docker or other containerization, ensure your application is accessible at the configured URLs.
|
||||
5. Dropbox requires the app to be in "Production" mode for non-developers to use it.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter OAuth errors such as "invalid_redirect_uri" or "redirect_uri_mismatch":
|
||||
|
||||
1. Verify that the callback URL is exactly the same in both your OAuth provider configuration and your application code.
|
||||
2. Check that the protocol (http vs https) matches what's configured.
|
||||
3. Ensure there are no trailing slashes unless specifically required.
|
||||
4. For development behind NAT/firewalls, you may need to use a service like ngrok to create a public URL.
|
||||
5. Check that the response data format matches what your code expects. For Google OAuth, ensure your code is accessing fields correctly (Google uses 'sub' for user IDs rather than 'id').
|
||||
6. Enable debug logging to inspect the full OAuth response payload to identify missing or incorrectly named fields.
|
||||
7. Verify that your OAuth scopes in the provider configuration match the scopes requested in your application code.
|
||||
8. Test with a minimal set of scopes first, then add more as needed once the basic flow works.
|
||||
|
||||
### Dropbox-Specific Troubleshooting
|
||||
|
||||
If you see "This app is not valid" error from Dropbox:
|
||||
1. Make sure your app is configured in the [Dropbox App Console](https://www.dropbox.com/developers/apps)
|
||||
2. Verify that your app key and app secret in your config match what's in the Dropbox console
|
||||
3. Ensure your redirect URI is correctly registered in the Dropbox console
|
||||
4. Check if your app needs to be in "Production" mode (it may be in development mode)
|
||||
5. Verify that you've selected all required permission scopes in the Dropbox console
|
||||
Reference in New Issue
Block a user