strat-gameplay-webapp/README.md
Cal Corum 909531b577 CLAUDE: Update project documentation for UV migration
Updated all developer-facing documentation to reflect UV package management.

## Changes

### README.md (root)
- Updated Python version: 3.11+ → 3.13+
- Added UV as package manager in tech stack
- Updated backend setup: pip → uv sync
- Updated all command examples to use `uv run`
- Updated virtual environment path: venv/ → .venv/
- Added UV installation instructions

### QUICKSTART.md
- Updated last modified date to 2025-11-04
- Updated backend setup to use UV installation
- Replaced pip install with `uv sync`
- Updated all development commands to use `uv run`
- Updated troubleshooting for UV-specific issues
- Updated virtual environment references: venv → .venv

## Documentation Status

 **Complete for new developers**:
- Root README.md - comprehensive setup guide
- QUICKSTART.md - fast onboarding path
- backend/CLAUDE.md - detailed backend guide
- backend/README.md - quick reference
- backend/.env.example - all required variables
- .claude/ directory - implementation guides

## New Developer Onboarding Path

1. Read root README.md - understand project structure
2. Follow QUICKSTART.md - get running in <15 minutes
3. Reference backend/CLAUDE.md - deep dive into backend
4. Check .claude/implementation/ - architecture details

All documentation now consistent with UV migration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 09:25:44 -06:00

288 lines
6.5 KiB
Markdown

# Paper Dynasty Real-Time Game Engine
Web-based real-time multiplayer baseball simulation platform replacing the legacy Google Sheets system.
## Project Structure
```
strat-gameplay-webapp/
├── backend/ # FastAPI game engine
├── frontend-sba/ # SBA League Nuxt frontend
├── frontend-pd/ # PD League Nuxt frontend
├── .claude/ # Claude AI implementation guides
├── docker-compose.yml # Full stack orchestration
└── README.md # This file
```
## Two Development Workflows
### Option 1: Local Development (Recommended for Daily Work)
**Best for:** Fast hot-reload, quick iteration, debugging
**Services:**
- ✅ Backend runs locally (Python hot-reload)
- ✅ Frontends run locally (Nuxt hot-reload)
- ✅ Redis in Docker (lightweight)
- ✅ PostgreSQL on your existing server
**Setup:**
1. **Environment Setup**
```bash
# Copy environment template
cp .env.example .env
# Edit .env with your database credentials and API keys
```
2. **Start Redis** (in one terminal)
```bash
cd backend
docker-compose up
```
3. **Start Backend** (in another terminal)
```bash
cd backend
uv run python -m app.main
# Or manually activate: source .venv/bin/activate && python -m app.main
```
Backend will be available at http://localhost:8000
4. **Start SBA Frontend** (in another terminal)
```bash
cd frontend-sba
npm run dev
```
SBA frontend will be available at http://localhost:3000
5. **Start PD Frontend** (in another terminal)
```bash
cd frontend-pd
npm run dev
```
PD frontend will be available at http://localhost:3001
**Advantages:**
- ⚡ Instant hot-reload on code changes
- 🐛 Easy debugging (native debuggers work)
- 💨 Fast startup times
- 🔧 Simple to restart individual services
---
### Option 2: Full Docker Orchestration
**Best for:** Integration testing, demos, production-like environment
**Services:**
- ✅ Everything runs in containers
- ✅ Consistent environment
- ✅ One command to start everything
**Setup:**
1. **Environment Setup**
```bash
# Copy environment template
cp .env.example .env
# Edit .env with your database credentials and API keys
```
2. **Start Everything**
```bash
# From project root
docker-compose up
```
Or run in background:
```bash
docker-compose up -d
```
3. **View Logs**
```bash
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f frontend-sba
```
4. **Stop Everything**
```bash
docker-compose down
```
**Advantages:**
- 🎯 Production-like environment
- 🚀 One-command startup
- 🔄 Easy to share with team
- ✅ CI/CD ready
---
## Development Commands
### Backend
```bash
cd backend
# Install UV (one-time setup)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
# Run server
uv run python -m app.main
# Run tests
uv run pytest tests/ -v
# Code formatting
uv run black app/ tests/
# Linting
uv run flake8 app/ tests/
# Type checking
uv run mypy app/
```
### Frontend
```bash
cd frontend-sba # or frontend-pd
# Install dependencies
npm install
# Run dev server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Lint
npm run lint
# Type check
npm run type-check
```
## Database Setup
This project uses an existing PostgreSQL server. You need to manually create the database:
```sql
-- On your PostgreSQL server
CREATE DATABASE paperdynasty_dev;
CREATE USER paperdynasty WITH PASSWORD 'your-secure-password';
GRANT ALL PRIVILEGES ON DATABASE paperdynasty_dev TO paperdynasty;
```
Then update `DATABASE_URL` in `.env`:
```
DATABASE_URL=postgresql+asyncpg://paperdynasty:your-password@your-db-server:5432/paperdynasty_dev
```
## Environment Variables
Copy `.env.example` to `.env` and configure:
### Required
- `DATABASE_URL` - PostgreSQL connection string
- `SECRET_KEY` - Application secret key (at least 32 characters)
- `DISCORD_CLIENT_ID` - Discord OAuth client ID
- `DISCORD_CLIENT_SECRET` - Discord OAuth secret
- `SBA_API_URL` / `SBA_API_KEY` - SBA League API credentials
- `PD_API_URL` / `PD_API_KEY` - PD League API credentials
### Optional
- `REDIS_URL` - Redis connection (auto-configured in Docker)
- `CORS_ORIGINS` - Allowed origins (defaults to localhost:3000,3001)
## Available Services
When running, the following services are available:
| Service | URL | Description |
|---------|-----|-------------|
| Backend API | http://localhost:8000 | FastAPI REST API |
| Backend Docs | http://localhost:8000/docs | Interactive API documentation |
| SBA Frontend | http://localhost:3000 | SBA League web app |
| PD Frontend | http://localhost:3001 | PD League web app |
| Redis | localhost:6379 | Cache (not exposed via HTTP) |
## Health Checks
```bash
# Backend health
curl http://localhost:8000/api/health
# Or visit in browser
open http://localhost:8000/api/health
```
## Troubleshooting
### Backend won't start
- Check `DATABASE_URL` is correct in `.env`
- Verify PostgreSQL database exists
- Ensure Redis is running (`docker-compose up` in backend/)
- Check logs for specific errors
### Frontend won't connect to backend
- Verify backend is running at http://localhost:8000
- Check CORS settings in backend `.env`
- Clear browser cache and cookies
- Check browser console for errors
### Docker containers won't start
- Ensure `.env` file exists with all required variables
- Run `docker-compose down` then `docker-compose up` again
- Check `docker-compose logs` for specific errors
- Verify no port conflicts (8000, 3000, 3001, 6379)
### Database connection fails
- Verify PostgreSQL server is accessible
- Check firewall rules allow connection
- Confirm database and user exist
- Test connection with `psql` directly
## Documentation
- **Full PRD**: See `/prd-web-scorecard-1.1.md`
- **Implementation Guide**: See `.claude/implementation/00-index.md`
- **Architecture Docs**: See `.claude/implementation/` directory
## Tech Stack
### Backend
- **Framework**: FastAPI (Python 3.13+)
- **Package Manager**: UV (modern Python package management)
- **WebSocket**: Socket.io
- **Database**: PostgreSQL 14+ with SQLAlchemy
- **Cache**: Redis 7
- **Auth**: Discord OAuth with JWT
### Frontend
- **Framework**: Vue 3 + Nuxt 3
- **Language**: TypeScript
- **Styling**: Tailwind CSS
- **State**: Pinia
- **WebSocket**: Socket.io-client
## Contributing
See `.claude/implementation/` for detailed implementation guides and architecture documentation.
## License
Proprietary - Paper Dynasty League System