Files
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

2.7 KiB

PokeShare

A French-language Pokémon TCG collection tracker and sharing app. Users search cards from the TCGdex catalog, track their personal collection with Cardmarket price valuations, and share collections with friends.

Stack

Commands

Command Action
bun install Install dependencies
bun run dev Start dev server at localhost:4321
bun run build Build the production site to ./dist/
bun run preview Preview the production build locally

Production runs as a standalone Node server (node dist/server/entry.mjs), Node >= 22.12.

Environment variables

Variable Description Default
DIRECTUS_URL URL of the Directus backend (auth + data) https://directus.namarusaja.me

Read at runtime (process.env), so the same Docker image can be deployed against different Directus instances. For local dev, copy .env.example to .env. HOST and PORT are also honored by the standalone server.

Docker

Single container (external Directus):

docker build -t pokeshare .
docker run -p 4321:4321 -e DIRECTUS_URL=https://directus.example.com pokeshare

Or with the compose file:

DIRECTUS_URL=https://directus.example.com docker compose up --build
  • The app listens on 4321; expose it on your domain (Coolify: expose the app service, or use the plain Dockerfile build pack).
  • Collections, roles and permissions are managed from the Directus Data Studio; public registration is enabled with the "App User" role.

Structure

  • src/pages/ — routes (/, /search, /mycards, /card/[id], /series/[id], /sets/[id], /friends, /profile, /login, /register) and JSON API endpoints under src/pages/api/
  • src/middleware.ts — Directus session (directus_auth cookie) with token refresh, exposes locals.directus and locals.user
  • src/lib/ — Directus client + types, TCGdex cache, collection pricing, auth helper, type theming
  • src/layouts/, src/components/ — base layout and nav