A comprehensive music management application designed to help musicians organize songs and create professional setlists for their performances.
New to Setlist Studio? These guides will get you performing in minutes:
| Experience Level | Best Option | Time to Setup | Guide |
|---|---|---|---|
| Just want to try it | Local Docker | 5 minutes | β Quick Start |
| Solo artist / small band | Cloud deployment | 15 minutes | β Full Onboarding |
| Professional band | PostgreSQL setup | 30 minutes | β Deployment Guide |
- πΌ Musician Features Overview - See what makes Setlist Studio perfect for performers
- π 5-Minute Quick Start - Get running immediately
- βοΈ Band Deployment Guide - Professional setups for collaborating bands
- π± Performance Day Guide - Using Setlist Studio during shows
"Finally, a setlist app built by musicians who understand backstage chaos, poor venue WiFi, and the need for quick song changes during a show." - Verified musician feedback
- Comprehensive Library: Add songs with artist, album, BPM, musical key, duration, and genre
- Smart Organization: Tag songs and rate difficulty levels (1-5 scale)
- Performance Notes: Add custom notes for each song (chords, lyrics, special instructions)
- Search & Filter: Quickly find songs by title, artist, genre, or tags
- Realistic Data: Supports authentic musical metadata (BPM 40-250, standard keys, etc.)
- Drag & Drop Ordering: Intuitive reordering with accessibility alternatives
- Performance Planning: Set venue, date, and expected duration
- Transition Notes: Add notes between songs for smooth performances
- Custom Settings: Override BPM and key per performance
- Templates: Create reusable setlist templates
- Encore & Optional: Mark songs as encore or optional pieces
- OAuth Integration: Sign in with Google, Microsoft, or Facebook
- User Isolation: All data is user-specific and secure
- Session Management: Secure login/logout with session handling
- Material Design: Clean, professional interface using MudBlazor components
- Responsive Layout: Works perfectly on mobile and desktop
- Dark/Light Themes: Automatic theme detection with manual toggle
- Accessibility First: WCAG 2.2 AA compliant with screen reader support
- Quick song lookup during intimate venues
- BPM tracking for smooth transitions
- Offline mode when venue WiFi fails
- β Solo Artist Setup Guide
- Collaborative setlist planning for all members
- Difficulty ratings for skill-appropriate assignments
- Professional exports for sound engineers
- β Band Collaboration Features
- Multi-hour performance planning (dinner, dancing, special moments)
- Genre organization for different event phases
- Client-friendly export formats
- β Wedding Gig Setup Example
- Complex time signature support (5/4, 7/8, etc.)
- Authentic musical key notation
- Professional repertoire management
- β Jazz Club Workflow
- .NET 8 SDK
- Git
- Docker (optional, for containerized deployment)
-
Clone the repository
git clone https://github.com/your-username/setlist-studio.git cd setlist-studio -
Set up environment variables
cp .env.example .env # Edit .env with your OAuth credentials (optional for basic testing) -
Run with Docker Compose
docker-compose up -d
-
Access the application
- Open your browser to http://localhost:5000
- The app will create a SQLite database and sample data automatically
-
Clone and restore packages
git clone https://github.com/your-username/setlist-studio.git cd setlist-studio dotnet restore -
Run the application
cd src/SetlistStudio.Web dotnet run -
Access the application
- Navigate to https://localhost:5001 or http://localhost:5000
- Sample data will be created automatically in development mode
To enable social login, configure OAuth providers:
- Go to Google Cloud Console
- Create a new project or select existing
- Enable Google+ API
- Create OAuth 2.0 credentials
- Add
http://localhost:5000/signin-googleto authorized redirect URIs
- Go to Azure Portal
- Register a new application
- Add
http://localhost:5000/signin-microsoftto redirect URIs
- Go to Facebook Developers
- Create a new app
- Set up Facebook Login product
- Add
http://localhost:5000/signin-facebookto Valid OAuth Redirect URIs
# OAuth Configuration (Development)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
MICROSOFT_CLIENT_ID=your_microsoft_client_id
MICROSOFT_CLIENT_SECRET=your_microsoft_client_secret
FACEBOOK_APP_ID=your_facebook_app_id
FACEBOOK_APP_SECRET=your_facebook_app_secret
# Database Configuration
CONNECTION_STRING=Data Source=setliststudio.db
# Environment
ASPNETCORE_ENVIRONMENT=DevelopmentFor production deployments, OAuth secrets are securely stored in Azure Key Vault:
# Azure Key Vault Configuration
KeyVault__VaultName=your_keyvault_name
# Azure Authentication (Managed Identity recommended)
AZURE_CLIENT_ID=your_managed_identity_client_idπ Production OAuth Setup:
- Azure Key Vault Setup Guide - Complete step-by-step setup instructions
- OAuth Configuration Summary - Implementation overview and deployment workflow
Includes:
- Creating and configuring Azure Key Vault
- Deploying OAuth secrets securely with automated scripts
- Setting up managed identity authentication
- GitHub Actions CI/CD integration
- Security best practices and troubleshooting
dotnet testdotnet test --collect:"XPlat Code Coverage"cd tests/SetlistStudio.Tests
dotnet test --filter "Category=Integration"setlist-studio/
βββ src/
β βββ SetlistStudio.Core/ # Domain models and interfaces
β βββ SetlistStudio.Infrastructure/ # Data access and services
β βββ SetlistStudio.Web/ # Blazor Server web application
βββ tests/
β βββ SetlistStudio.Tests/ # Unit and integration tests
βββ docker-compose.yml # Container orchestration
βββ Dockerfile # Container definition
βββ README.md # This file
- Clean Architecture: Separation of concerns with distinct layers
- Domain-Driven Design: Rich domain models with business logic
- Repository Pattern: Abstracted data access via Entity Framework Core
- Dependency Injection: Built-in ASP.NET Core DI container
- CQRS Principles: Command and query separation where appropriate
The application includes realistic sample music data for development and testing:
- "Bohemian Rhapsody" by Queen (BPM: 72, Key: Bb) - Epic, Opera, Classic Rock
- "Billie Jean" by Michael Jackson (BPM: 117, Key: F#m) - Dance, Pop, 80s
- "Sweet Child O' Mine" by Guns N' Roses (BPM: 125, Key: D) - Guitar Solo, Rock
- "Take Five" by Dave Brubeck (BPM: 176, Key: Bb) - Jazz, Instrumental, 5/4 Time
- "The Thrill Is Gone" by B.B. King (BPM: 98, Key: Bm) - Blues, Guitar
- Wedding Reception Set - Perfect mix for celebrations
- Jazz Evening Template - Sophisticated standards for intimate venues
Setlist Studio is built with accessibility as a core requirement:
- WCAG 2.2 AA Compliance: Meets accessibility guidelines
- Keyboard Navigation: Full app functionality via keyboard
- Screen Reader Support: Proper ARIA labels and semantic HTML
- High Contrast: Sufficient color contrast ratios
- Focus Management: Clear focus indicators and logical tab order
- Reduced Motion: Respects user's motion preferences
- Touch Targets: Minimum 44px touch targets for mobile
- Error Prevention: Clear validation and confirmation dialogs
- Use NVDA, JAWS, or VoiceOver to test screen reader compatibility
- Navigate the entire app using only keyboard
- Check color contrast with tools like WebAIM's contrast checker
The application is ready for internationalization:
- Resource Files: Text strings externalized for translation
- Culture Support: Built-in support for multiple cultures
- RTL Support: Right-to-left language support via Material Design
- Date/Time Formatting: Locale-specific formatting
# Build and run
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down# Publish the application
dotnet publish src/SetlistStudio.Web -c Release -o publish
# Run the published app
cd publish
dotnet SetlistStudio.Web.dll- Use SQL Server or PostgreSQL for production databases
- Configure HTTPS with proper certificates
- Set up OAuth redirect URIs for your domain
- Enable logging and monitoring
- Configure backup strategies for user data
This project uses GitHub Actions for continuous integration and deployment. The pipeline automatically:
- β Builds the solution using .NET 8
- οΏ½ Runs tests with detailed reporting
- π Generates code coverage reports
- π Performs security scans for vulnerabilities
- π³ Builds Docker images for deployment
- π Deploys preview environments for pull requests
- Status Badge: The badge at the top shows current build status
- Actions Tab: Visit Actions to see all workflow runs
- Pull Requests: Each PR shows build status and includes test/coverage reports
- Artifacts: Download test results and coverage reports from completed runs
You can manually trigger the CI/CD pipeline:
- Go to the Actions tab
- Select "CI/CD Pipeline" from the left sidebar
- Click "Run workflow" and choose your branch
- Build & Test: Compiles code, runs tests, generates reports
- Security Scan: Checks for vulnerable packages
- Docker Build: Creates containerized version
- Deploy Preview: Sets up preview environment for PRs
We welcome contributions! Setlist Studio maintains high standards for security, maintainability, and user experience to ensure musicians can rely on our tool during performances.
-
Read our comprehensive guides:
- CONTRIBUTING.md - Complete development setup and guidelines
- Code Review Standards - Quality requirements and review process
- Copilot Instructions - Detailed technical standards
-
Security-First Development:
- CodeQL Analysis: Zero tolerance for high/critical security issues
- Input Validation: All user inputs must be validated and sanitized
- Authorization: Every data access must verify user ownership
-
Quality Requirements:
- 100% Test Success: Zero failing tests allowed
- 80%+ Coverage: Line AND branch coverage for new code
- Zero Build Warnings: Clean builds required
- Performance Standards: <500ms API responses, <100ms DB queries
# 1. Setup and validation
git clone https://github.com/eugenecp/setlist-studio.git
cd setlist-studio
dotnet test # Must achieve 100% success rate
.\scripts\run-codeql-security.ps1 # Must pass with zero security issues
# 2. Create feature branch
git checkout -b feature/[issue-number]-[description]
# 3. Security-first development with musician focus
# - Implement input validation first
# - Add authorization checks
# - Use realistic musical data (BPM: 40-250, standard keys)
# - Follow test naming: {SourceClass}Tests.cs
# 4. Quality validation before PR
dotnet test --collect:"XPlat Code Coverage" # Verify 80%+ coverage
dotnet build --verbosity normal # Check for zero warnings
.\scripts\run-codeql-security.ps1 # Final security validationEvery PR must complete our comprehensive quality checklist:
- Security & Testing: CodeQL passes, all tests pass, adequate coverage
- Maintainability: Clear business purpose, team handover readiness
- Musical Context: Features serve real musician workflows
- Performance: Response times and scalability considered
All contributions go through our Code Review Standards ensuring security, maintainability, and musician-focused excellence.
This project is licensed under the MIT License - see the LICENSE file for details.
For Individual Musicians:
git clone https://github.com/eugenecp/setlist-studio.git
cd setlist-studio
docker-compose up -d
# Visit http://localhost:5000 - You're ready to rock! πΈFor Bands & Professional Use:
- π Full Setup Guide - Complete walkthrough
- βοΈ Cloud Deployment - Professional band setup
- πΌ Feature Overview - See what you can do
- Share Your Setup - Show us your creative setlist organization
- Get Help - Community support from fellow musicians
- Request Features - Help us build what musicians need
Setlist Studio was created to solve a real need in the music community. Whether you're a solo artist, part of a band, or a DJ, organizing your music and planning performances shouldn't be complicated.
The app focuses on:
- Reliability: Your setlists need to work when you're on stage
- Simplicity: Intuitive interface that musicians can learn quickly
- Flexibility: Adapts to different musical styles and performance types
- Accessibility: Everyone should be able to use music technology
- Privacy: Your music data stays secure and private
- π Get Started in 5 Minutes - Try Setlist Studio right now
- π Complete Musician Guide - From setup to your first gig
- πΌ Features for Performers - Why musicians love Setlist Studio
- βοΈ Professional Deployment - Setup for bands & organizations
- GitHub Repository - Source code and contributions
- Issues & Bug Reports - Report problems or request features
- Community Discussions - Get help and share ideas
- Technical Documentation - Architecture, security, and deployment guides
- Live Demo: setlist-studio.demo.com (Coming soon)
- Documentation Site: docs.setlist-studio.com (Coming soon)
Made with β€οΈ for the music community
Ready to rock your next performance? Get started with Setlist Studio today!