Commit Graph
16 Commits
Author SHA1 Message Date
Admin 18d3aea853 feat(frontend): play tracks from the explore page 2026-07-06 02:40:44 +02:00
Admin 9b34f2db84 feat(frontend): music player component with separated controls and stream proxy 2026-07-06 02:40:44 +02:00
Admin fef788462d feat(frontend): add /explore page with track listing and name search 2026-07-06 02:05:47 +02:00
Admin b9cd3533dc chore(frontend): regenerate api types with track name search 2026-07-06 02:04:04 +02:00
Admin 5d2c9d3986 chore(frontend): generate backend API types from live OpenAPI spec 2026-07-06 01:54:28 +02:00
Admin 93fe2fb942 feat(frontend): add typed backend API client (openapi-fetch) with codegen script 2026-07-06 01:52:25 +02:00
Admin f58f6a0aa5 refactor(frontend): require refresh/id token in Session, validate at callback boundary 2026-07-05 23:57:19 +02:00
Admin ac5fc49800 refactor(frontend): restrict insecure HTTP issuer to dev / explicit opt-in 2026-07-05 23:56:35 +02:00
Admin 6a49b17e38 refactor(frontend): make SessionUser fields non-null and normalize claims at boundary 2026-07-05 23:45:18 +02:00
Admin ea36816777 refactor(frontend): centralize configurable auth/session values in config.ts 2026-07-05 23:43:50 +02:00
Admin 9613cd928d feat(frontend): encrypt session cookie (JWE) and auto-refresh access token 2026-07-05 23:41:49 +02:00
Admin 33ead1daab chore(frontend): remove scaffold comments and add conventions doc 2026-07-05 23:41:42 +02:00
AdminandClaude Opus 4.8 66cb970dd2 fix(frontend): full-page nav for auth links; land on home after login
- Add data-sveltekit-reload to the /login links so the browser performs a full
  navigation (the client router intercepted them and aborted on the external
  Zitadel redirect)
- Default post-login returnTo to / (home) since /explore is not built yet
- 'Empezar gratis' now starts the register flow (/login?mode=register)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:16:25 +02:00
AdminandClaude Opus 4.8 454bffe4ba feat(frontend): make Zitadel client secret optional (support PKCE apps)
Configure openid-client with None auth (public client + PKCE) when no secret is
provided, so both PKCE and confidential (Code) Zitadel web apps work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:01:44 +02:00
AdminandClaude Opus 4.8 0163da096e feat(frontend): server-side Zitadel OIDC auth (part 2)
Add Authorization Code + PKCE login/logout against Zitadel, handled entirely
server-side with an httpOnly signed session cookie:
- $lib/server/auth: openid-client discovery (config cached), jose-signed
  session encode/decode, cookie/name constants
- routes: /login (builds the authorize URL with PKCE/state/nonce, ?mode=register
  -> prompt=create), /auth/callback (code exchange + session cookie),
  /logout (clears session + Zitadel end_session)
- hooks.server populates locals.user/accessToken from the session
- +layout.server exposes the user; Navbar shows the signed-in user + Salir,
  or Iniciar sesión / Registrarse
- switch to adapter-node; env-driven config (.env gitignored, .env.example
  committed) with issuer http://host.docker.internal:8080

Verified: svelte-check + build clean; dev smoke test shows the landing in the
logged-out state and /login issuing a 302 to Zitadel's authorize endpoint with
PKCE/state/nonce (discovery reachable). Real client id/secret still needed to
complete the token exchange.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 22:58:47 +02:00
AdminandClaude Opus 4.8 6bb31ad7c5 feat(frontend): scaffold SvelteKit + Tailwind with landing (part 1)
New SvelteKit app in frontend/ (minimal template, TypeScript, TailwindCSS v4).
Adds the app shell (dark music theme navbar + footer) and a landing page with
hero and feature cards. CTAs point to /login and /explore (built in later parts).

Verified: production build succeeds and the page renders with Tailwind styles
applied (checked via preview).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 22:47:29 +02:00