Build one shared container image for the Flask GUI and CLI pipeline, with Playwright, FFmpeg, and spaCy preinstalled so first runs are reliable. Add bootstrap logic for missing runtime files, bind the GUI to 0.0.0.0 in containers, and preserve state through a repo mount.
Constraint: Local development needs a single image that supports both entrypoints without introducing extra services or dependencies.
Rejected: Separate GUI and CLI images | duplicated maintenance and no runtime benefit for this repo.
Confidence: high
Scope-risk: moderate
Directive: Keep runtime state creation in the container bootstrap layer; do not reintroduce host-specific assumptions into GUI startup.
Tested: docker compose build; docker compose run --rm gui python -c '...'; docker compose run --rm cli python -c 'import main'; docker compose up -d gui; curl -I http://localhost:4000
Not-tested: Full end-to-end video generation with live credentials in this environment.
* Bot can run multiple instances at the same time
* Delete TTS/__pycache__ directory
* Delete video_creation/__pycache__ directory
* Delete videos.json
* Delete utils/__pycache__ directory
* Create videos.json
* Moved id to utils
* Added cleanup in shutdown and fixed bug
* Removed watermark todo and fixed it
* Delete final_video.py
* Update final_video.py
* Delete video.py
* Update video.py
* Delete id.py
* feat: meaningful error message for bad credentials
* chore: remove comment reference to .env
Co-authored-by: Callum Leslie <git@cleslie.uk>