paper-dynasty-database/CLAUDE.md
Cal Corum e0d0ba59ff Optimize CLAUDE.md from 158 to 43 lines
Remove full router listing, production ops examples, and boilerplate.
Keep commands, architecture, environment table, and key constants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 17:10:25 -06:00

1.6 KiB

Paper Dynasty Database API

FastAPI backend for baseball card game data. Peewee ORM with SQLite (WAL mode).

Commands

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000  # Dev server
python main.py                                              # Alt start
python db_migrations.py                                     # Run migrations
docker build -t paper-dynasty-db .                          # Build image

Architecture

  • Routers: Domain-based in app/routers_v2/ (cards, players, teams, packs, stats, gauntlets, scouting)
  • ORM: Peewee with SQLite (storage/pd_master.db, WAL journaling)
  • Card images: Playwright/Chromium renders HTML templates → screenshots (see routers_v2/players.py)
  • Logging: Rotating files in logs/database/{date}.log

Key Constants

  • LIVE_CARDSET_ID: 24 (current active cardset, in db_engine.py)
  • ranked_cardsets: Legal cardsets for ranked play
  • CARDSETS: Configuration for game modes and card availability

Environments

Env URL SSH Container Port
Prod pd.manticorum.com akamai pd_api 815
Dev pddev.manticorum.com pd-database dev_pd_database 816

Prod compose path: ssh akamai/root/container-data/paper-dynasty Dev PostgreSQL: sba_postgres on 10.10.0.42:5432, user sba_admin, db paperdynasty_dev

Important

  • Docker image installs only Playwright Chromium (not all browsers) to optimize size
  • Teams have dynamic card pricing based on market activity
  • Supports both human players and AI teams
  • Gauntlet events use special reward structures and card pools