A web-based bingo game that uses Spotify tracks to create and manage musical bingo cards.
Foute Muziek Bingo is a Flask-based web application that allows you to:
- Generate bingo cards from Spotify playlists
- Play tracks through Spotify
- Validate bingo cards in real-time
- Generate PDF versions of bingo cards
- Track game progress with WebSocket updates
- Python 3.8 or higher
- Spotify Developer Account
- Spotify Premium Account (for playback features)
- Go to Spotify Developer Dashboard
- Create a new application
- Note down your Client ID and Client Secret
- Add the following Redirect URI to your app settings:
http://localhost:1313/auth/callback
- Or your custom domain if deployed
- Configure environment variables:
export SPOTIFY_CLIENT_ID="your_client_id" export SPOTIFY_CLIENT_SECRET="your_client_secret" export SPOTIFY_REDIRECT_URI="http://localhost:1313/auth/callback"
-
Clone the repository:
git clone [repository-url] cd FouteMuziekBingo
-
Create and activate virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Start the Flask server:
export FLASK_DEBUG=1 # Optional: for development python app.py
-
Open your browser and navigate to:
http://localhost:1313
- Playlist Management: Load and manage Spotify playlists
- Card Generation: Create bingo cards from playlist tracks
- Real-time Updates: WebSocket integration for live game state
- PDF Export: Generate printable bingo cards
- Device Selection: Choose Spotify playback device
- Game State Management: Track played songs and card status
- Add a Spotify playlist
- Generate bingo cards
- Select a playback device
- Start playing tracks
- Players validate their cards
- System checks for winning patterns (rows, columns)
The application uses:
- Flask for the backend
- Flask-SocketIO for real-time updates
- ReportLab for PDF generation
- Spotify Web API for music playback
- Tailwind CSS for styling
FouteMuziekBingo/
FouteMuziekBingo git:(main) tree
.
├── LICENSE
├── README.md
├── app
│ ├── __init__.py
│ ├── __pycache__
│ ├── auth_routes.py
│ ├── bingo_logic.py
│ ├── card_routes.py
│ ├── card_status.py
│ ├── dashboard_routes.py
│ ├── device_routes.py
│ ├── game_management.py
│ ├── game_routes.py
│ ├── helpers.py
│ ├── pdf_generator.py
│ ├── playback_routes.py
│ ├── playlist_routes.py
│ ├── routes.py
│ ├── socket_handler.py
│ ├── sound_routes.py
│ ├── spotify.py
│ ├── state.py
│ └── utils.py
├── app.py
├── archive
├── check_devices.py
├── game_state.json
├── logs
├── playlists.json
├── requirements.txt
├── saved_games
├── sounds
│ ├── applaus.wav
│ ├── game_over.mp3
│ ├── hartslag.mp3
│ ├── mario.mp3
│ ├── mario_grasland.mp3
│ ├── mario_riedel.mp3
│ ├── pauze.mp3
│ ├── quiz_intro.mp3
│ └── toeter.wav
├── static
│ ├── css
│ ├── js
│ │ ├── dashboard.js
│ │ ├── game_management.js
│ │ └── sound_player.js
│ └── svg
│ └── tree.svg
└── templates
└── dashboard.html
Feel free to submit issues and pull requests.
This project is licensed under the MIT License - see the LICENSE file for details