Skip to main content

Troubleshooting

Services Won't Start

Check logs:

docker compose logs backend
docker compose logs db

Common issues:

Symptom Cause Solution
port is already allocated Port 5432, 8000, or 56421 in use Stop conflicting service or change ports in docker-compose.yaml
database not ready Database startup slow Wait 30 seconds and check docker compose ps for "healthy" status
Backend crashloop Missing dependencies Run docker compose up -d --build backend

Frontend Shows Blank Page

Check browser console (F12):

Error Cause Solution
Failed to fetch / CORS error Backend not accessible or CORS misconfigured Verify backend URL in html/config.js and CORS_ORIGINS in docker-compose.yaml
404 Not Found on template files Nginx not serving files correctly Check docker compose logs frontend
JavaScript errors Broken code Check docker compose logs backend for errors

Verify configuration:

# Check config.js loaded correctly
curl http://localhost:56421/config.js

# Test API directly
curl http://localhost:8000/api/health

Database Connection Errors

Verify database is running:

docker compose ps db
docker exec inventory-db pg_isready -U inventory_user

Check credentials match:

# In docker-compose.yaml, verify these match:
# - db service: POSTGRES_USER / POSTGRES_PASSWORD
# - backend service: DATABASE_URL

Reset database connection:

docker compose restart backend

Schema Changes Not Applied

Reload schema manually:

docker exec -i inventory-db psql -U inventory_user -d inventory < db/schema.sql

⚠️ This destroys all data. For production, write migration scripts instead.

Inventory Balances Not Updating

Verify trigger exists:

docker exec inventory-db psql -U inventory_user -d inventory -c "\df update_inventory_on_transfer_complete"

Check transfer status:

docker exec inventory-db psql -U inventory_user -d inventory -c "SELECT transfer_id, status FROM transfers ORDER BY created_at DESC LIMIT 5;"

Verify balances table:

docker exec inventory-db psql -U inventory_user -d inventory -c "SELECT * FROM inventory_balances LIMIT 10;"

If trigger is missing, reload schema (see above).