Files
mtgonline/backend/PORTED_STATE.md
T

133 lines
4.0 KiB
Markdown

# MTG Online Backend - Ported State and Next Steps
## Project Overview
The `mtgonline` project is a Magic: The Gathering online application with a Docker-based stack:
- Two PostgreSQL containers (card data + user data)
- Backend application on port 5555
- MTGJSON data loading pipeline
## Recent Work Summary
### What Was Done
1. **Created comprehensive interaction router** (`backend/app/routers/interactions.py`)
- Synergies search with filters (type, strength, confidence, pagination)
- Counters search with filters
- Evolutions search with filters
- Card recommendations (synergy, counter, evolution types)
- Card interaction statistics
- Redis caching for performance
2. **Fixed main.py** to properly mount all routers
- Removed duplicate search implementation
- Added all routers: auth, users, decks, rooms, games, admin, card_router, interactions
- Added verbose logging configuration
- Added lifespan events for startup/shutdown
3. **Updated __init__.py** to export all routers
- Centralized router imports
- Proper package structure
4. **Updated Dockerfile** to include interaction scripts
- Added scripts directory to container
- Made scripts executable
- Proper permissions for appuser
### Files Modified/Created
- `backend/app/routers/interactions.py` - NEW
- `backend/app/main.py` - REWRITTEN
- `backend/app/routers/__init__.py` - REWRITTEN
- `backend/Dockerfile` - REWRITTEN
### Key Technical Decisions
- All interactions use async SQLAlchemy with mtg_get_db dependency
- Redis caching with 10-30 minute TTLs
- Proper error handling with HTTPException
- Consistent database connection pattern across all endpoints
- Logging setup with debug/verbose support
## Next Steps (Execute in Order)
### 1. Stop and Destroy All Docker Containers
```bash
cd /home/wall-o/projects/mtgonline
docker compose down -v
```
### 2. Build the Backend Docker Container
```bash
cd /home/wall-o/projects/mtgonline
docker compose build backend
```
### 3. Deploy the Stack as a Test Instance
```bash
cd /home/wall-o/projects/mtgonline
docker compose up -d
```
### 4. Verify Stack Health
```bash
# Check all containers are running
docker compose ps
# Check backend health endpoint
curl http://localhost:5555/health
```
### 5. Check Logs for Issues
```bash
# View backend logs
docker compose logs backend
# View PostgreSQL logs if needed
docker compose logs db_card
docker compose logs db_user
```
### 6. Troubleshoot Issues
If errors are found:
- **Import errors**: Check that all router modules exist and are properly imported
- **Database connection errors**: Verify `.env` file has correct database URLs
- **Port conflicts**: Ensure port 5555 is available
- **Permission errors**: Check Dockerfile has proper user/permissions setup
## Commands to Monitor Progress
```bash
# Watch logs in real-time
docker compose logs -f backend
# Check container status
docker compose ps
# Restart specific container
docker compose restart backend
# View specific container logs
docker compose logs --tail=50 backend
```
## Key Configuration
- Backend port: 5555
- Database URLs in `.env` file
- Two PostgreSQL databases: `mtgdata` (card data) and `users` (user data)
- Redis for caching
- All routers mounted in `app/main.py`
## Expected Behavior
Once healthy, the backend should:
- Serve API documentation at `/docs`
- Respond to health checks at `/health`
- Have all interaction endpoints available at `/interactions/*`
- Show proper logging output indicating successful startup
## Error Resolution Strategy
1. **Simple errors**: Fix directly (typos, import paths, missing dependencies)
2. **Complex issues**: Document the problem, check Docker logs for stack traces, and consult with user
3. **Database issues**: Verify connection strings, check PostgreSQL logs, ensure databases exist
## Important Notes
- All code execution must be as wall-o user (not root)
- Use `/home/wall-o/workspace/venv` for Python dependencies
- Docker commands should be run from `/home/wall-o/projects/mtgonline`
- The `.env` file is separate from application config