mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 06:21:09 +02:00
Replaces the cross-origin call to https://mana-api.mana.how with a SvelteKit catch-all server route that proxies internally to the mana-api container over the docker network. Why --- The mana-api.mana.how cloudflared route was added as part of the production deploy of apps/api, but reloading the cloudflared LaunchDaemon to pick up the new ingress rule needs sudo. The deploy automation runs unattended (no interactive password prompt), so the cloudflared route ends up registered with Cloudflare DNS but not yet served by the local tunnel — every browser request to mana-api.mana.how gets a 404 from the catch-all rule until someone manually restarts the daemon. Same-origin proxy through mana-web sidesteps the whole problem: browser → cloudflared → mana-web (mana.how) → mana-api (docker net) mana.how is already routed, mana-web is already up, mana-api is already on the same docker network — no new cloudflared work needed. The deploy is now fully sudo-free and self-contained. What's in this commit --------------------- routes/api/v1/who/[...path]/+server.ts (NEW) Catch-all SvelteKit handler. Forwards GET/POST/PUT/DELETE to http://mana-api:3060/api/v1/who/<path> with the Authorization header from the incoming request. 30s timeout, body streamed through, status + content-type passed through 1:1, errors surface as 502 so DevTools clearly distinguishes "proxy failed" from "handler crashed". modules/who/stores/games.svelte.ts Drop the getManaApiUrl() import. API_BASE is now the constant string '/api/v1/who' — same-origin, no env injection needed. modules/who/ListView.svelte Same change for the deck-catalogue fetch on mount. The MANA_API_INTERNAL_URL env var on the proxy lets the upstream hostname be overridden for local-dev use (default http://mana-api:3060 matches the docker compose service name). Trade-off: one extra hop (mana-web in the middle) for every request. Measured in single-digit ms over the bridge network so the practical cost is invisible. The big win is the sudo-free deploy. Pattern can be reused for the other apps/api modules as their compute features come online in production — same shape, just swap [...path] segment to /api/v1/calendar/[...path], /api/v1/picture/[...path], etc. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api | ||
| calc/packages/shared | ||
| calendar | ||
| cards | ||
| chat | ||
| citycorners | ||
| contacts | ||
| context | ||
| docs | ||
| guides | ||
| inventar | ||
| mana | ||
| manavoxel | ||
| memoro | ||
| moodlit | ||
| mukke | ||
| news | ||
| nutriphi | ||
| photos | ||
| picture | ||
| planta | ||
| presi | ||
| questions | ||
| skilltree | ||
| storage | ||
| times | ||
| todo | ||
| traces | ||
| uload | ||
| zitare/packages/content | ||