14 Commits

Author SHA1 Message Date
Julien Calixte
345f3c93aa Redirect to production for login when on local dev
OAuth PKCE state is origin-scoped — initiating from 127.0.0.1
and receiving callback on coffee.apoena.dev breaks the flow.
From local dev, redirect to production login with handle pre-filled.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:23:43 +01:00
Julien Calixte
d67aa41838 Show real auth error on OAuth callback instead of generic message
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:23:04 +01:00
Julien Calixte
6051d741b5 Restore 127.0.0.1 host for Vite dev server
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:21:47 +01:00
Julien Calixte
f591c2b0a0 Remove loopback redirect URIs — web apps can't use them per ATProto spec
OAuth only works on coffee.apoena.dev. Local dev is for UI only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:20:25 +01:00
Julien Calixte
5d3dcfb4bd Bind Vite dev server to 127.0.0.1 instead of localhost
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:18:52 +01:00
Julien Calixte
6167df084f Replace localhost with 127.0.0.1 in redirect_uris (RFC 8252)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:18:32 +01:00
Julien Calixte
3576ccf976 Fix signIn error swallowing — re-throw so LoginView shows the error
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:17:47 +01:00
Julien Calixte
eaa151dbe9 Fix OAuth redirect_uri for local dev
- client_id always points to production so PDS can fetch metadata
- redirect_uri is dynamic (window.location.origin) so dev login
  redirects back to localhost instead of production
- Add localhost:5173/5174 to allowed redirect_uris in metadata

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:14:11 +01:00
Julien Calixte
a40108ea04 Use Tabler coffee icon
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:11:36 +01:00
Julien Calixte
b2e10b85f2 Add SVG app icon, fix missing PWA icons
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:11:01 +01:00
Julien Calixte
f278c015b5 Fix duplicate Content-Type on client-metadata.json
Nginx sets application/json automatically for .json files via
MIME types; the explicit header caused a duplicate that broke
ATProto OAuth client metadata fetching.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:08:38 +01:00
Julien Calixte
31b6334bd7 Switch Nginx to port 3000 for Coolify
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:07:13 +01:00
Julien Calixte
99c2c92145 Fix TS build errors for Docker deploy
- Add vite-env.d.ts for ImportMeta.env type
- Bump tsconfig target/lib to ES2022 for Array.at()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:03:57 +01:00
Julien Calixte
645f93069c Initial commit: Coffee Map PWA
Vue 3 + Vite PWA backed by ATProto PDS (coffee.apoena.dev).
Stores coffee spots as dev.apoena.coffeespot records with name,
geolocation, note, and status. Map via MapLibre + OpenFreeMap,
auth via ATProto OAuth, deploy via Docker + Nginx on Coolify.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:01:17 +01:00