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

PocketBase container (compose only):

Variable Description
PB_SUPERUSER_EMAIL / _PASSWORD Create/update the admin account on boot
PB_APP_URL Public app URL used in transactional email links
SMTP_HOST / SMTP_PORT Mail server (mail disabled if SMTP_HOST empty)
SMTP_USERNAME / SMTP_PASSWORD Mail server credentials
SMTP_TLS true (default) / false
SMTP_SENDER_NAME / _ADDRESS From header of transactional emails

SMTP settings are applied on every boot by pocketbase/pb_hooks/main.pb.js from these env vars, so they can be changed without touching the admin UI.

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%