Commit Graph
14 Commits
Author SHA1 Message Date
nlevesque 0c6fa47c84 Fix focus ring shape on input-group children
The global :focus-visible outline was drawing a square border around the
inner (square-cornered) input, sticking out of the group's rounded
focus-within ring. Suppress child outlines inside .input-group.
2026-07-29 00:29:32 +02:00
nlevesque 9d3261718f Remove quantity field; normalize missing prices to 0,00 €
Each collection row is a unique card (own condition/notes), so quantity
was noise: dropped the field in Directus and removed it from the add
dialog, collection/grid/table views, dashboard stats and sort options.
Cards without Cardmarket data now consistently show 0,00 € (base price
row is always displayed on the card page).
2026-07-29 00:07:53 +02:00
nlevesque 1cfbf1db49 Scope /mycards and dashboard to own cards only
The Directus read permission intentionally allows friends' collections
(used by /friends/[username]); the own-collection pages need an explicit
user = current-user filter on top of it.
2026-07-28 23:55:31 +02:00
nlevesque fd2d5408d6 Fix login error feedback + load basecoat toast module
- inline error message on the login form (401 shows a visible French
  message, hidden again on submit)
- import basecoat-css/toast in BaseLayout: every showToast in the app
  was silently no-oping because the toast JS was never loaded
2026-07-28 23:30:18 +02:00
nlevesque c5378f6008 Make the app installable (PWA metadata)
- manifest.webmanifest with name, standalone display, theme color
- PNG icons 192/512 + maskable variant + apple-touch-icon (from the
  Poké Ball favicon)
- minimal pass-through service worker (installability requirement)
- apple/mobile web app meta tags
2026-07-28 21:30:32 +02:00
nlevesque 458d2a1e55 Replace favicon with Poké Ball icon (Wikimedia SVG + multi-size ICO) 2026-07-28 21:24:58 +02:00
nlevesque fc51371dad Migrate backend from PocketBase to Directus
Full cutover: auth, users, collection and friendships now run on Directus
via @directus/sdk, with owner/visibility rules enforced by Directus
permissions.

- middleware: Directus session (directus_auth cookie) with token refresh
- /login is Directus (email normalized to lowercase), new /register page
  (first/last name, username) backed by public registration
- collection, friends and profile pages + all API endpoints ported;
  ownership and addressee-only accept/decline enforced by permissions
- display names use first_name/last_name everywhere (nav, friends, profile)
- PocketBase SDK, POCKETBASE_URL and pb_schema.json removed
- README and compose updated for DIRECTUS_URL
2026-07-28 20:33:46 +02:00
nlevesque a3a69e0eae Build with npm and ECR Public node image (dodge Docker Hub rate limits)
Base images now come from public.ecr.aws instead of docker.io, whose
anonymous pull quota kept failing Coolify builds. bun stays the local dev
toolchain; the image build uses npm + the existing package-lock.json.
2026-07-28 14:20:09 +02:00
nlevesque fee2155a18 Drop bundled PocketBase: app-only deployment via POCKETBASE_URL
The external PocketBase instance is referenced by the POCKETBASE_URL env
variable (compose and Dockerfile build packs both supported). The schema
export stays at pb_schema.json as a reference for provisioning.
2026-07-28 14:13:10 +02:00
nlevesque 445ed8892f Add healthchecks: app checks /login (200), pocketbase checks /api/health
Coolify's default healthcheck hits / expecting 200, but the app answers
302 (redirect to /login), which marked the stack exited:unhealthy and
stopped it. app also now waits for pocketbase to be healthy.
2026-07-28 13:03:51 +02:00
nlevesque 9eb3ca137f Fix migration: use plain-JSON field defs (JSVM has no Text/Select globals) 2026-07-28 12:42:00 +02:00
nlevesque 2df1325a09 Add env-driven SMTP and app identity settings for PocketBase
- pb_hooks/main.pb.js: bootstrap hook applying SMTP + meta settings from
  env vars on every boot (mail disabled when SMTP_HOST is unset)
- docker-compose.yml: expose SMTP_* / PB_APP_URL on the pocketbase service
- pocketbase/Dockerfile: bundle pb_hooks
- README: document the new variables
2026-07-28 10:29:04 +02:00
nlevesque 3d712b8c57 Add self-hosted PocketBase stack with auto-migrations
- docker-compose.yml: app + pocketbase services (PB internal to the network)
- pocketbase/: pinned PocketBase image, superuser bootstrap via env vars
- pb_migrations: production schema (collections, rules, public_users view)
  applied automatically on first boot
- pocketbase/pb_schema.json: schema export kept as reference
- README: full-stack deployment docs
2026-07-28 09:38:07 +02:00
nlevesque c3c1f5e216 Initial commit 2026-07-28 08:58:44 +02:00