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).
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.
- 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
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
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.
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.
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.
- 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