Bug fix: During resolution phase (dice rolling), isMyTurn was false for both players, preventing anyone from seeing the dice roller. Now the batting team has control during resolution since they read their card. Demo mode: myTeamId now returns whichever team needs to act, allowing single-player testing of both sides. Changes: - Add creator_discord_id to GameState (backend + frontend types) - Add get_current_user_optional dependency for optional auth - Update quick-create to capture creator's discord_id - Fix isMyTurn to give batting team control during resolution - Demo mode: myTeamId returns active team based on phase Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .claude | ||
| .git-hooks | ||
| alembic | ||
| app | ||
| scripts | ||
| terminal_client | ||
| tests | ||
| .dockerignore | ||
| .env.dev | ||
| .env.example | ||
| .env.prod | ||
| .gitignore | ||
| alembic.ini | ||
| CLAUDE.md | ||
| clean_test_data.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| mypy.ini | ||
| pyproject.toml | ||
| pyrightconfig.json | ||
| pytest.ini | ||
| README.md | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| TEST_COVERAGE_SUMMARY.md | ||
| test_db_playground.py | ||
| test_pd_api_live.py | ||
| test_pd_api_mock.py | ||
| test_redis_cache.py | ||
| uv.lock | ||
Paper Dynasty Backend
FastAPI-based real-time baseball game engine with WebSocket support.
Quick Start
# Install UV
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
# Apply database migrations
uv run alembic upgrade head
# Run server
uv run python -m app.main
Database Migrations
This project uses Alembic for database schema migrations.
Initial Setup (New Database)
# Apply all migrations to create schema
uv run alembic upgrade head
Creating New Migrations
# Auto-generate from model changes
uv run alembic revision --autogenerate -m "Description of changes"
# IMPORTANT: Always review the generated migration before applying!
# Then apply:
uv run alembic upgrade head
Viewing Migration Status
# Show migration history
uv run alembic history
# Show current revision
uv run alembic current
Rolling Back
# Rollback one migration
uv run alembic downgrade -1
# Rollback to specific revision
uv run alembic downgrade 001
# Rollback all (dangerous!)
uv run alembic downgrade base
Migration Best Practices
- Always review auto-generated migrations before applying - autogenerate is helpful but not perfect
- Test migrations on dev/staging before production
- Keep migrations small and focused - easier to rollback
- Never edit migrations that have been applied to shared databases
- Include both upgrade and downgrade for reversibility
Existing Migrations
| Revision | Description |
|---|---|
| 001 | Initial schema (games, plays, lineups, rolls, etc.) |
| 004 | Materialized views for statistics |
Documentation
See CLAUDE.md for full documentation.