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.
69 lines
2.8 KiB
Markdown
69 lines
2.8 KiB
Markdown
# PokeShare
|
|
|
|
A French-language Pokémon TCG collection tracker and sharing app. Users search
|
|
cards from the [TCGdex](https://tcgdex.dev) catalog, track their personal
|
|
collection with Cardmarket price valuations, and share collections with friends.
|
|
|
|
## Stack
|
|
|
|
- [Astro](https://astro.build) (SSR, Node standalone adapter) — no UI framework
|
|
- [Tailwind CSS v4](https://tailwindcss.com) + [basecoat-css](https://basecoatui.com)
|
|
- [PocketBase](https://pocketbase.io) for database and authentication
|
|
- [TCGdex API](https://api.tcgdex.net) (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):
|
|
|
|
```sh
|
|
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).
|
|
|
|
```sh
|
|
POCKETBASE_URL=https://pb.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).
|
|
- 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
|
|
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
|