- Read worker count from WORKERS env var (default: 4)
- Set WORKERS=4 in fly.toml for production
- Allows tuning worker count without code changes
- Can adjust via fly secrets set WORKERS=X
- Upgrade Fly.io VMs from shared to performance CPUs for dedicated compute
- Remove --reload flag from docker-compose for better local performance
- Improves response times and consistency under load
- Cost increase: ~$10-15/month for dedicated CPU performance
Changed Fly.io configuration to maintain one active machine:
- min_machines_running: 0 → 1
- auto_stop_machines: 'stop' → 'suspend'
This eliminates cold start delays by keeping the application warm and ready
to serve requests immediately. The machine will suspend (not stop) when idle,
allowing much faster wake-up times.
With PRELOAD_INTERLINEAR enabled, the 14MB interlinear data stays loaded
in memory, making all requests fast without repeated decompression.
Trade-off: Slightly higher costs for always-on machine, but much better
user experience with instant page loads.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enable preloading of interlinear data at application startup to eliminate
first-request delays. Configurable via PRELOAD_INTERLINEAR environment variable.
- Add preload_data() function to interlinear_loader.py with logging
- Add startup event handler in server.py to trigger preload
- Enable PRELOAD_INTERLINEAR=true in fly.toml and docker-compose.yml
- Update FLY_DEPLOYMENT.md with cache warming documentation
Performance impact:
- Startup time: ~7-10 seconds (vs ~5 seconds without preload)
- First request: <100ms (vs 2-3 seconds without preload)
- Memory usage: ~400-500MB total (139MB for interlinear data)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Dockerfile with multi-stage Python build
- Add GitHub Actions workflow for automatic deployment on main branch
- Add fly.toml with app configuration and auto-scaling settings
- Add .dockerignore to exclude development files from build context