LeaderboardApp is a web application designed to track and manage scores for individual participants and teams in the GitHub Copilot Adoption Challenge. The application leverages configurable weights for different activities, allowing scores to be adjusted dynamically based on the type of activity and its importance.
The app is structured to provide real-time updates to the leaderboard, ensuring that both individual contributions and team performances are accurately reflected. Participants and teams earn scores by completing various activities, which are recorded in the system. The app is fully integrated with Docker for easy deployment and PostgreSQL for data persistence.
- Participant and Team Management: The app allows you to manage participants and teams, associating them with specific activities that contribute to their scores.
- Activity-Based Scoring Scores are assigned based on activities performed by participants or teams. Each activity has a configurable weight (fixed or multiplier) to reflect its importance.
- Leaderboard: A Leaderboard View that updates based on the activities recorded for participants and teams.
- Daily Summaries: Teams can submit daily github copilot summaries of their activities, which are factored into their overall score. (GitHub API integration coming soon)
- Configurable Scoring Weights: The app allows the configuration of scoring weights for different activities, enabling flexible and customizable scoring systems.
📋 Security and Privacy Statement - Please review the official Microsoft security and privacy statement before deploying this application.
- Azure Developer CLI (azd): https://aka.ms/azd-install
- Azure CLI: https://aka.ms/azcli-install
- dotnet 10 SDK: https://dotnet.microsoft.com/en-us/download/dotnet/10.0
- PowerShell 7.4 or higher: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.4
- Python (only for challenges-util scripts): https://www.python.org/downloads/
- Have an Azure subscription
Deploy the entire application with a few commands using Azure Developer CLI and PowerShell scripts:
## set the necessary environment variables first. Make sure to replace the placeholders with your actual values.
## for <env-name> use a 5 letter unique env-name like iu87w
pwsh ./setup-azd.ps1 -TenantId <tenant-id> -SubscriptionId <subscription-id> -Location <azure-region> -EnvironmentName <env-name>
## run azd up to deploy the infra and app
azd up
## execute sql script to grant web app the db roles
pwsh ./src/infra/scripts/grant-sql-managed-identity-roles.ps1
## execute sql script to add seed data
pwsh ./src/infra/scripts/seed-database.ps1
## create app registration name LeaderboardApp-<env-name> in azure and update web app settings
pwsh ./src/infra/scripts/app-reg-setup.ps1 -passwordDaysToExpiration <number of days before password expires>
This will provision all Azure infrastructure (App Service, SQL Database, VNet, Key Vault) and deploy your application in one step.
the script adds the ip address of your current machine to the sql server firewall rules so that the sql scripts can be executed successfully. It also adds the ip address to the web app firewall rules. Make sure to update your firewall rules accordingly after the deployment/setup.
Use below command to get the web app URL after deployment:
azd env get-value APP_SERVICE_HOSTNow all you have to do is to review and add challenges
💻Technical Overview: See TechnicalOverview.md for architecture and component details. Also app configuration settings.
📖 Detailed Step-by-Step Guide: See DEPLOYMENT.md for comprehensive instructions as well as optional features such as SMTP email or GitHub connection. Troubleshooting tips are also included. Note that the deployment scripts above does all the non-optional steps for you already when you deploy.
Alternative deployment options:
- Step-by-step: Use
azd provisionthenazd deployfor more control - Local development: Use Docker and PostgreSQL (see prerequisites section)
Read about the challenges participants can complete in Participant Challenges Overview
Read about how the scoring system works and how to configure activity weights in Activity Scoring Overview
At this time, the repository does not use continuous integration. Use azd up for deployment.
- Supports only Microsoft Entra Id for authentication
- Supports only single Microsoft Entra Id tenant for SSO
- Supports only single GitHub organization
This repository prefers outside contributors start forks rather than branches. For pull requests more complicated than typos, it is often best to submit an issue first.