Overview
The Tournament Management App uses a combination of environment variables, configuration files, and ASP.NET Core’s configuration system. This guide covers all available configuration options.Environment Variables
Required Variables
Database connection string for SQLite or SQL Server.Default:
Data Source=/app/Torneo.dbExamples:Optional Variables
Runtime environment setting that controls error handling, logging, and features.Values:
Development, Staging, ProductionDefault: ProductionEffects:Development: Detailed error pages, developer exception page, no HSTSProduction: Generic error pages, HSTS enabled, optimized performance
Controls globalization behavior. Must be set to
0 for proper Spanish text handling.Default: 0 (in Dockerfile)Values: 0 (false), 1 (true)The HTTP port the application listens on.Default:
80 (in Docker), 5000 (local development)Setting Environment Variables
Docker Compose
Add variables to yourdocker-compose.yml:
docker-compose.yml
.env File
Create a.env file in the project root:
.env
Linux/Mac
Windows PowerShell
Windows CMD
Application Configuration
Program.cs Configuration
The application is configured inProgram.cs (lines 8-101):
Program.cs
Identity Options
Lockout Settings
Configured inProgram.cs (lines 23-29):
Program.cs
Users are locked out for 5 minutes after 5 failed login attempts. This helps prevent brute-force attacks.
Password Requirements
Configured inProgram.cs (lines 31-40):
Program.cs
SecureP@ss1
Customization: Modify these settings in Program.cs to adjust password complexity requirements.
Data Protection
Configured inProgram.cs (lines 46-49):
Program.cs
Data protection keys are stored in the database to ensure cookie encryption keys persist across container restarts and work in load-balanced scenarios.
Health Checks
Configured inProgram.cs (lines 42-44):
Program.cs
GET /health
Response:
Middleware Pipeline
Configured inProgram.cs (lines 82-99):
Program.cs
appsettings.json
While the app primarily uses environment variables, you can createappsettings.json for additional settings:
appsettings.json
Environment-Specific Settings
Create environment-specific configuration files:ASPNETCORE_ENVIRONMENT.
User Secrets (Development)
For local development with sensitive data:Initialize user secrets
UserSecretsId to the .csproj file (already present: Your_UserSecrets_Id).Future Authentication Providers
The code includes placeholders for external authentication (lines 56-77 inProgram.cs):
Program.cs (Commented for Future Sprint)
Repository Registration
All repositories are registered as singletons inProgram.cs (lines 16-21):
Program.cs
Singleton lifetime means one instance is created and shared across all requests. This is efficient for stateless repositories.
Production Considerations
HTTPS Configuration
In production, always use HTTPS. The app includes HSTS (HTTP Strict Transport Security):Program.cs
- Use Let’s Encrypt for free certificates
- Configure reverse proxy (nginx, Caddy) to handle TLS
- Or use cloud provider SSL termination (AWS ALB, Azure App Gateway)
Database Configuration
For production with SQL Server:Logging Configuration
Configure structured logging for production:appsettings.Production.json
Configuration Checklist
Development Environment
Development Environment
- Set
ASPNETCORE_ENVIRONMENT=Development - Use SQLite:
Data Source=./Torneo.db - Enable detailed error pages
- Use
dotnet user-secretsfor sensitive data - Configure hot reload with
dotnet watch
Staging Environment
Staging Environment
- Set
ASPNETCORE_ENVIRONMENT=Staging - Use SQL Server or production-equivalent database
- Configure HTTPS with valid certificate
- Test with production-like data
- Enable health checks monitoring
Production Environment
Production Environment
- Set
ASPNETCORE_ENVIRONMENT=Production - Use SQL Server with encrypted connection
- Configure HTTPS with valid SSL certificate
- Set strong password requirements
- Enable HSTS
- Configure structured logging
- Set up health check monitoring
- Configure backup strategy
- Use environment variables for all secrets
Troubleshooting
Configuration not loading
Configuration not loading
Solution: Check the priority order:
- Environment variables (highest priority)
- User secrets (development only)
- appsettings..json
- appsettings.json
- Default values in code
builder.Configuration.GetDebugView() to inspect loaded configuration.Database connection fails
Database connection fails
Solution: Verify connection string format:
Identity configuration not applied
Identity configuration not applied
Solution: Ensure configuration is set BEFORE calling
AddDefaultIdentity:User secrets not working
User secrets not working
Solution:
- Verify
UserSecretsIdexists in.csproj - Ensure you’re in Development environment
- Secrets location:
~/.microsoft/usersecrets/{UserSecretsId}/secrets.json - Use
dotnet user-secrets listto verify
Next Steps
Database Setup
Configure databases and run migrations
Docker Deployment
Deploy using Docker containers
User Authentication
Learn about authentication and authorization
Health Checks
Monitor application health