Spec-driven ASP.NET Razor Pages application for the V bodláčí brand.
- .NET 10, ASP.NET Core Razor Pages
- Entity Framework Core + PostgreSQL
- ASP.NET Identity (local admin auth)
- GitHub Actions CI
SPECIFICATION.md- frozen MVP product contractVbodlaci.Web- web applicationVbodlaci.Web.Tests- unit/integration teststests/browser-smoke- headless browser smoke checks
- Start DB:
docker compose up -d- Configure development admin (optional override):
dotnet user-secrets set "Admin:Email" "admin@vbodlaci.local" --project .\Vbodlaci.Web\Vbodlaci.Web.csproj
dotnet user-secrets set "Admin:Password" "Admin12345" --project .\Vbodlaci.Web\Vbodlaci.Web.csproj- Run app:
dotnet run --project .\Vbodlaci.Web\Vbodlaci.Web.csproj- Open:
http://localhost:5270- admin login:
/Identity/Account/Login
dotnet build .\Vbodlaci.sln -c Debug
dotnet test .\Vbodlaci.sln -c DebugIf your local PostgreSQL still contains old prototype schema, the app now auto-detects incompatible Courses columns in Development and recreates the database.
- The reset terminates active connections for the target DB before
DROP DATABASE, so the common "cannot drop open database" issue is handled automatically. - This auto-reset is Development only. It is not active in production.
pwsh .\scripts\run-browser-smoke.ps1- CI/CD runbook:
docs/staging-cicd.md - One-time VM bootstrap helper:
scripts/staging/bootstrap-vm.ps1
Configure Email:Smtp in appsettings/environment:
EnabledHost,Port,UserName,PasswordEnableSslFrom
When SMTP is disabled, app uses noop delivery but still logs attempts.
LegalIdentity values are placeholders in non-production.
Production startup blocks if LegalIdentity contains TODO placeholder values.