Go to file
2026-10-02 21:53:40 +02:00
output/pdf Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
scripts Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
wwwroot Add target numbers, results and X-10 with sortable admin table 2026-10-02 21:53:40 +02:00
.dockerignore Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
.env.example Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
.gitattributes Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
.gitignore Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
appsettings.json Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
compose.yaml Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
Dockerfile Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
Program.cs Add target numbers, results and X-10 with sortable admin table 2026-10-02 21:53:40 +02:00
README.md Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
skydedag-qr-plakat.pdf Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00
SkydesportensDag.csproj Add visitor registration app with SQLite, admin tools and Docker deployment 2026-10-02 21:39:38 +02:00

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

  1. Sæt adminlogin via environment variables eller user secrets (kun nødvendigt for adminlisten):

    $env:Admin__Username="admin"
    $env:Admin__Password="change-me"
    
  2. 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.