4.0 KiB
4.0 KiB
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
-
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
-
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
-
Updated __init__.py to export all routers
- Centralized router imports
- Proper package structure
-
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- NEWbackend/app/main.py- REWRITTENbackend/app/routers/__init__.py- REWRITTENbackend/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
cd /home/wall-o/projects/mtgonline
docker compose down -v
2. Build the Backend Docker Container
cd /home/wall-o/projects/mtgonline
docker compose build backend
3. Deploy the Stack as a Test Instance
cd /home/wall-o/projects/mtgonline
docker compose up -d
4. Verify Stack Health
# Check all containers are running
docker compose ps
# Check backend health endpoint
curl http://localhost:5555/health
5. Check Logs for Issues
# 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
.envfile has correct database URLs - Port conflicts: Ensure port 5555 is available
- Permission errors: Check Dockerfile has proper user/permissions setup
Commands to Monitor Progress
# 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
.envfile - Two PostgreSQL databases:
mtgdata(card data) andusers(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
- Simple errors: Fix directly (typos, import paths, missing dependencies)
- Complex issues: Document the problem, check Docker logs for stack traces, and consult with user
- 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/venvfor Python dependencies - Docker commands should be run from
/home/wall-o/projects/mtgonline - The
.envfile is separate from application config