Commit graph

8 commits

Author SHA1 Message Date
Till JS
5859e202c5 feat(cards): deck management UI + production auth portal wiring
Deck schema, API routes, and SvelteKit UI for creating and browsing decks
(DeckStack component, inline creation, floating nav). Production compose
updated with PUBLIC_AUTH_WEB_URL so cards-web redirects to auth.mana.how
for login/register instead of the raw API.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 18:50:27 +02:00
Till JS
87a7a31ece fix(web): SvelteKit-env via \$env/dynamic/public statt import.meta.env
Some checks are pending
CI / validate (push) Waiting to run
Bug: Browser-Client requested localhost:3081 statt cardecky-api.mana.how
nach Login. Ursache: API_BASE und authBaseUrl() lasen die Variable
über import.meta.env.PUBLIC_*, was unter SvelteKit nicht zuverlässig
inlined wird (Vite-direct, ohne SvelteKit-Wrapper-Hook).

Fix: \$env/dynamic/public liest die env zur Runtime aus den Node-
Server-Variablen (adapter-node) — Browser bekommt sie über den
SSR-Init-Snapshot. Damit muss die Variable nur als runtime-env am
Container hängen, nicht als Build-Arg.

docker-compose.production.yml: PUBLIC_CARDS_API_URL und
PUBLIC_MANA_AUTH_URL aus build.args nach environment verschoben.
Build-Pipeline: cards-web muss neu gebaut werden, sonst greift der
Wechsel von static→dynamic env nicht.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 22:03:35 +02:00
Till JS
5b6d096f56 fix(prod-compose): pass MANA_AUTH_URL/MANA_CREDITS_URL/SERVICE_KEY/DEV_STUB into cards-api container
Some checks are pending
CI / validate (push) Waiting to run
2026-05-08 20:45:55 +02:00
Till JS
0dff79826d fix(prod): public URLs auf cardecky.* (war cards.* — bookmarks via nginx-301)
Some checks are pending
CI / validate (push) Waiting to run
2026-05-08 20:18:10 +02:00
Till JS
78a6c8fc77 fix(prod-compose): cards-api port 3091→3191 (3091 belegt)
Some checks are pending
CI / validate (push) Waiting to run
2026-05-08 20:13:46 +02:00
Till JS
464aee1661 fix(prod-compose): cards-minio port 9110→9210 (cadvisor belegt 9110)
Some checks are pending
CI / validate (push) Waiting to run
2026-05-08 20:13:06 +02:00
Till JS
a993cc28ca fix(prod-compose): cards-api needs NPM_AUTH_TOKEN build-arg
Some checks are pending
CI / validate (push) Waiting to run
cards-web hatte den Arg, cards-api nicht — Build schlägt 401 gegen
Verdaccio fehl, weil das .npmrc im Container die env nicht aufgelöst
bekommt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 20:10:39 +02:00
Till JS
045903b5b9 Phase 10a: Production-Deploy-Stack (Mac Mini)
Some checks are pending
CI / validate (push) Waiting to run
infrastructure/docker-compose.production.yml mit 4 Services:
  - cards-postgres :5436    (Plattform-Postgres :5432, Dev :5435 belegt)
  - cards-minio :9110/9111  (Plattform-MinIO :9000/9001 belegt)
  - cards-api :3091         (alt war :3072 — Cutover via Tunnel-Reroute)
  - cards-web :5181         (alt war :5180)

Persistente Volumes auf /Volumes/ManaData/cards/{postgres,minio} —
außerhalb des Repo-Verzeichnisses (überlebt repo-wipes, gleicher
Pfad wie mana-platform-Daten).

Dockerfiles:
  - apps/api: oven/bun:1.1-alpine, single-stage. pnpm via npm install.
    Verdaccio-Auth via NPM_AUTH_TOKEN-Build-Arg + .npmrc.
  - apps/web: 2-stage node:20-alpine. SvelteKit-build mit
    PUBLIC_CARDS_API_URL als Build-Arg (kommt direkt in den
    Client-Bundle via vite). Runtime startet adapter-node-Bundle
    direkt mit `node build/index.js`.

infrastructure/.env.production.example als committable Skeleton —
echte .env.production bleibt git-ignored. Vier Secrets nötig:
CARDS_DB_PASSWORD, CARDS_S3_SECRET_KEY, CARDS_DSGVO_SERVICE_KEY,
NPM_AUTH_TOKEN.

Hard-Cutover-Plan: alte mana-app-cards-{server,web} bleiben kurz
parallel laufend, Tunnel zeigt nach dem Build/Verify-Cycle auf die
neuen Container, dann werden die alten gestoppt + entfernt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 20:09:19 +02:00