Systemet til håndtering af Fælles Vinindkøb
Find a file
carsten d360e704df Tilføj permanent test-rute + rute-vælger i admin-UI'et
Opretter en ny, rigtig rute ("Fælles Vinindkøb (test)", id 9,
test.vinindkoeb.dk, afsender "Test - Fælles Vinindkøb"
<test@vinindkoeb.dk>) direkte i databasen, så brugeren kan teste hele
flowet — inkl. rigtig mail-udsendelse via Postal — uden at røre de
308 rigtige deltagere. Mere robust end de midlertidige isolerede
sandboxes brugt til verifikation indtil nu.

Med to ruter under samme organisation kan admin-UI'et ikke længere
antage "der er kun én rute": RouteContext.tsx (samme mønster som
AuthContext) henter ruterne én gang efter login og holder det valgte
rute-id (persisteret i localStorage). Layout.tsx får en rute-vælger i
navbaren (kun vist når der er mere end én rute). ParticipantsPage,
RoundsPage og TemplatesPage havde hver deres egen "GET /routes, brug
routes[0]"-logik — omskrevet til at læse fra useRoute() i stedet, så
de automatisk genindlæser når man skifter rute.

DNS-post og reverse proxy-indgang for test.vinindkoeb.dk skal
stadig sættes op manuelt uden for denne kodebase, samme mønster som
vinindkoeb.dk/admin.vinindkoeb.dk.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 03:11:28 +02:00
admin-ui Tilføj permanent test-rute + rute-vælger i admin-UI'et 2026-09-29 03:11:28 +02:00
app Opgave 11b (del 1): frontend-infrastruktur + Deltagere-CRUD 2026-09-29 01:24:40 +02:00
migrations Opgave 10: fortløbende ordrenummer pr. runde + afhentningsliste 2026-09-29 00:21:45 +02:00
scripts Add one-off participant import script for legacy MongoDB data 2026-09-27 19:16:26 +02:00
.env.example Opgave 11a: React admin-scaffold + domænebaseret hosting 2026-09-29 00:41:03 +02:00
.gitignore Opgave 11a: React admin-scaffold + domænebaseret hosting 2026-09-29 00:41:03 +02:00
.python-version Scaffold FastAPI + SQLModel + Alembic project, Postgres-backed 2026-09-27 15:57:44 +02:00
alembic.ini Scaffold FastAPI + SQLModel + Alembic project, Postgres-backed 2026-09-27 15:57:44 +02:00
CLAUDE.md Tilføj permanent test-rute + rute-vælger i admin-UI'et 2026-09-29 03:11:28 +02:00
pyproject.toml Add Postal webhook receiver for delivery status (task 7c) 2026-09-28 20:50:24 +02:00
README.md Opgave 11a: React admin-scaffold + domænebaseret hosting 2026-09-29 00:41:03 +02:00
uv.lock Add Postal webhook receiver for delivery status (task 7c) 2026-09-28 20:50:24 +02:00

Vinindkøb v2

Admin-backend til fælles vinindkøb (FastAPI + SQLModel + PostgreSQL + Alembic). Se CLAUDE.md for projektplan og datamodel.

Kom i gang

uv sync
cp .env.example .env   # udfyld DATABASE_URL med din egen Postgres-instans
uv run alembic upgrade head
uv run fastapi dev app/main.py

GET /health bekræfter at appen kan nå databasen.

Admin-UI (React)

Serveres af samme app på et dedikeret domæne (ADMIN_DOMAIN, default admin.localhost) — se CLAUDE.md's "Admin-UI-arkitektur". Skal bygges før admin-domænet virker (API'et og den offentlige side kører fint uden):

cd admin-ui
npm install
npm run build   # skriver til ../app/admin_dist

Til udvikling af selve admin-UI'et: npm run dev i admin-ui/ (Vites egen dev-server, proxier API-kald til 127.0.0.1:8001).