Skip to content

Neha82Lonare/test-repository

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

329 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Setlist Studio 🎡

A comprehensive music management application designed to help musicians organize songs and create professional setlists for their performances.

CI/CD Pipeline .NET 8 Blazor Server Material Design Docker WCAG 2.2 AA

🎀 For Musicians - Get Started Now!

New to Setlist Studio? These guides will get you performing in minutes:

πŸš€ Quick Start Options

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

🎯 Popular Resources

🎸 Built for Real Musicians

"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

✨ Features

🎼 Song Management

  • 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.)

πŸ“‹ Setlist Creation

  • 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

πŸ” Secure Authentication

  • 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

🎨 Modern UI/UX

  • 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

🎡 Perfect for Every Musical Scenario

🎹 Solo Artists & Acoustic Performers

🎸 Rock & Cover Bands

  • Collaborative setlist planning for all members
  • Difficulty ratings for skill-appropriate assignments
  • Professional exports for sound engineers
  • β†’ Band Collaboration Features

πŸ’ Wedding & Event Musicians

  • Multi-hour performance planning (dinner, dancing, special moments)
  • Genre organization for different event phases
  • Client-friendly export formats
  • β†’ Wedding Gig Setup Example

🎺 Jazz & Classical Ensembles

  • Complex time signature support (5/4, 7/8, etc.)
  • Authentic musical key notation
  • Professional repertoire management
  • β†’ Jazz Club Workflow

πŸš€ Quick Start

Prerequisites

Run with Docker (Recommended)

  1. Clone the repository

    git clone https://github.com/your-username/setlist-studio.git
    cd setlist-studio
  2. Set up environment variables

    cp .env.example .env
    # Edit .env with your OAuth credentials (optional for basic testing)
  3. Run with Docker Compose

    docker-compose up -d
  4. Access the application

    • Open your browser to http://localhost:5000
    • The app will create a SQLite database and sample data automatically

Run Locally (Development)

  1. Clone and restore packages

    git clone https://github.com/your-username/setlist-studio.git
    cd setlist-studio
    dotnet restore
  2. Run the application

    cd src/SetlistStudio.Web
    dotnet run
  3. Access the application

πŸ”§ Configuration

OAuth Setup (Optional)

To enable social login, configure OAuth providers:

Google OAuth

  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Enable Google+ API
  4. Create OAuth 2.0 credentials
  5. Add http://localhost:5000/signin-google to authorized redirect URIs

Microsoft OAuth

  1. Go to Azure Portal
  2. Register a new application
  3. Add http://localhost:5000/signin-microsoft to redirect URIs

Facebook OAuth

  1. Go to Facebook Developers
  2. Create a new app
  3. Set up Facebook Login product
  4. Add http://localhost:5000/signin-facebook to Valid OAuth Redirect URIs

Environment Variables

Development Configuration

# 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=Development

Production Configuration with Azure Key Vault

For 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:

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

πŸ§ͺ Testing

Run Unit Tests

dotnet test

Run with Coverage

dotnet test --collect:"XPlat Code Coverage"

Integration Tests

cd tests/SetlistStudio.Tests
dotnet test --filter "Category=Integration"

πŸ—οΈ Project Structure

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

Architecture

  • 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

🎯 Sample Data

The application includes realistic sample music data for development and testing:

Songs Include:

  • "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

Setlists Include:

  • Wedding Reception Set - Perfect mix for celebrations
  • Jazz Evening Template - Sophisticated standards for intimate venues

🌐 Accessibility Features

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

Accessibility Testing

  • 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

🌍 Internationalization

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

🚒 Deployment

Docker Deployment

# Build and run
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Manual Deployment

# Publish the application
dotnet publish src/SetlistStudio.Web -c Release -o publish

# Run the published app
cd publish
dotnet SetlistStudio.Web.dll

Production Considerations

  • 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

πŸ”„ CI/CD Pipeline

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

Viewing Results

  1. Status Badge: The badge at the top shows current build status
  2. Actions Tab: Visit Actions to see all workflow runs
  3. Pull Requests: Each PR shows build status and includes test/coverage reports
  4. Artifacts: Download test results and coverage reports from completed runs

Manual Triggers

You can manually trigger the CI/CD pipeline:

  1. Go to the Actions tab
  2. Select "CI/CD Pipeline" from the left sidebar
  3. Click "Run workflow" and choose your branch

Pipeline Stages

  • 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

🀝 Contributing

We welcome contributions! Setlist Studio maintains high standards for security, maintainability, and user experience to ensure musicians can rely on our tool during performances.

πŸš€ Quick Start for Contributors

  1. Read our comprehensive guides:

  2. 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
  3. 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

🎼 Development Process

# 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 validation

πŸ“‹ Pull Request Requirements

Every 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.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

οΏ½ Ready to Transform Your Performances?

πŸš€ Get Started Right Now

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:

πŸ’¬ Join the Community

�🎡 About

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

πŸ”— Essential Links

🎡 For Musicians

πŸ› οΈ For Developers

🌐 Live Resources


Made with ❀️ for the music community

Ready to rock your next performance? Get started with Setlist Studio today!

About

for dot net

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •