fc51371dade75df102082195dd2bd9007df29756
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
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
- Directus for database, authentication and permissions
(via
@directus/sdk) - 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 |
|---|---|---|
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 theappservice, 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 undersrc/pages/api/src/middleware.ts— Directus session (directus_authcookie) with token refresh, exposeslocals.directusandlocals.usersrc/lib/— Directus client + types, TCGdex cache, collection pricing, auth helper, type themingsrc/layouts/,src/components/— base layout and nav
Languages
Astro
77%
TypeScript
20.8%
CSS
1.3%
Dockerfile
0.5%
JavaScript
0.4%