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
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00
2026-07-28 08:58:44 +02:00

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
POCKETBASE_URL URL of the PocketBase backend (auth + data) https://pokeshare.namarusaja.me

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

Docker

Single container (external PocketBase):

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

Full stack (app + PocketBase)

docker-compose.yml runs the app together with a PocketBase container. On first boot, PocketBase applies pocketbase/pb_migrations/, which creates the users profile fields, the public_users view, and the mycards and friendships collections with their API rules — no manual setup needed.

PB_SUPERUSER_EMAIL=admin@example.com PB_SUPERUSER_PASSWORD=changeme123 \
    docker compose up --build
  • The app listens on 4321; PocketBase listens on 8090 (internal network, admin UI at /_/ if you expose it).
  • In Coolify, deploy as a Docker Compose resource and expose the app service on your domain. Set PB_SUPERUSER_* in the environment variables.
  • Accounts are created from the PocketBase admin UI (public registration is disabled by the migration).
  • To move existing data, use the PocketBase admin UI backups (Settings → Backups) on the old instance and restore into pb_data.

Structure

  • src/pages/ — routes (/, /search, /mycards, /card/[id], /series/[id], /sets/[id], /friends, /profile) and JSON API endpoints under src/pages/api/
  • src/middleware.ts — per-request PocketBase client + pb_auth cookie auth
  • src/lib/ — TCGdex cache, collection pricing helpers, type theming
  • src/layouts/, src/components/ — base layout and nav
S
Description
No description provided
Readme
562 KiB
Languages
Astro 77%
TypeScript 20.8%
CSS 1.3%
Dockerfile 0.5%
JavaScript 0.4%