| output/pdf | ||
| scripts | ||
| wwwroot | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| appsettings.json | ||
| compose.yaml | ||
| Dockerfile | ||
| Program.cs | ||
| README.md | ||
| skydedag-qr-plakat.pdf | ||
| SkydesportensDag.csproj | ||
Skydesportens Dag besøgsregistrering
Lille standalone ASP.NET Core app til Vestfalster Skytteforening.
Funktioner
- Offentlig registrering uden login på
/ - Felter: navn, adresse, fødselsdag og email
- Postby udfyldes automatisk ved indtastning af et kendt dansk postnummer og kan redigeres manuelt
- Adminliste på
/admin - Sletning med bekræftelse på adminlisten
- CSV-download og udskrivning via browserens dialog (vælg Gem som PDF for PDF)
- Adminlisten bruger enkel HTTP Basic Auth via konfiguration
- Data gemmes lokalt i SQLite uden databaseserver eller databaselogin
- Frontend serveres direkte fra samme dotnet app
Opsætning
-
Sæt adminlogin via environment variables eller user secrets (kun nødvendigt for adminlisten):
$env:Admin__Username="admin" $env:Admin__Password="change-me" -
Start appen:
dotnet run
Appen opretter selv databasefilen data/visitors.db og visitors-tabellen. Data bevares efter genstart. Stien regnes fra projektmappen og kan ændres med Database__Path. Der kræves ingen databaseopsætning. En eventuel gammel ConnectionStrings__Default bruges ikke længere.
Tag backup af databasefilen, når appen er stoppet. Databasefiler er udeladt fra Git. Eksisterende data i PostgreSQL flyttes ikke automatisk.
Appen kører typisk på den URL, dotnet run skriver i terminalen, fx http://localhost:5000.
Postnummerlisten ligger lokalt i wwwroot/postnumre.json, så opslag virker uden internet. Data er hentet fra GeoNames den 2. oktober 2026 og bruges under CC BY 4.0. Ukendte postnumre kan udfyldes manuelt. Opdater listen med ./scripts/update-postal-codes.ps1 (kræver internet).
Docker-server uden Git-runner
Overfør Dockerfile, compose.yaml, SkydesportensDag.csproj, Program.cs, appsettings.json, .dockerignore, .env.example og mappen wwwroot til samme mappe på serveren med SCP/SFTP. Docker bygger appen på serveren; der kræves ingen .NET-installation eller Git-runner dér.
På serveren:
cp .env.example .env
chmod 600 .env
# Rediger .env og sæt Admin__Password samt ønsket port.
docker compose up -d --build
docker compose logs --tail=100 web
Appen lytter som standard på 127.0.0.1:5187 på serveren. En eksisterende reverse proxy kan sende trafik hertil; brug HTTPS ved adgang over internettet, da adminlogin bruger Basic Auth. Ved direkte adgang på det lokale netværk kan APP_BIND sættes til serverens LAN-adresse. En proxy i en anden container kræver tilpasning af Docker-netværket.
Databasen oprettes i Docker-volumenet visitors-data og bevares ved genstart og nye builds. docker compose down -v sletter databasen. Lokale registreringer overføres ikke automatisk; aftal overførsel af databasefilen, hvis de skal med.
Ved opdateringer overføres kodefilerne igen, og docker compose up -d --build køres. Bevar serverens .env og databasevolumen. Tag databasebackup, mens appen er stoppet.
Adminlisten viser et interaktivt kort med antal deltagere pr. postnummer. Positioner fra GeoNames ligger i wwwroot/postnummer-positioner.json og opdateres sammen med postnummerlisten. Leaflet 1.9.4 ligger lokalt i wwwroot/vendor/leaflet med licens. Baggrundskort fra OpenStreetMap kræver internet; navne og adresser sendes ikke til korttjenesten. Kortet opdateres efter sletning og udelades fra listeudskrift.