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.
2.8 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
- Astro (SSR, Node standalone adapter) — no UI framework
- Tailwind CSS v4 + basecoat-css
- PocketBase for database and authentication
- TCGdex API (French locale) for card data, with an
in-memory server-side cache (
src/lib/tcgdex-cache.ts)
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 just the app; it expects an external PocketBase
instance referenced by POCKETBASE_URL (see above). A schema export of the
expected collections is kept at pb_schema.json for reference when setting
up a new PocketBase instance (admin UI → Settings → Import collections).
POCKETBASE_URL=https://pb.example.com docker compose up --build
- The app listens on
4321; expose it on your domain (Coolify: expose theappservice, or use the plain Dockerfile build pack). - Accounts are managed from the PocketBase admin UI (
/_/).
Structure
src/pages/— routes (/,/search,/mycards,/card/[id],/series/[id],/sets/[id],/friends,/profile) and JSON API endpoints undersrc/pages/api/src/middleware.ts— per-request PocketBase client +pb_authcookie authsrc/lib/— TCGdex cache, collection pricing helpers, type themingsrc/layouts/,src/components/— base layout and nav