A Flask workspace that just runs.
Python 3.14, debugging preconfigured and nothing to install on your machine besides Docker. Open the folder in VS Code, accept the container, press F5.
- Python 3.14
- Flask 3.x
- Dev Containers
- MIT
Why use this template
Zero local setup, debugger ready.
-
Zero local setup
Python, pip and the dependencies live inside the container. Only Docker is required.
-
Python 3.14 + extensions
Pylance, Ruff, Black, pylint, pytest and debugpy are already installed.
-
Debug ready
Press
F5and the app starts on port40000with breakpoints enabled. -
Predictable time zone
America/Sao_Paulois set for reproducible dates in logs and reports. -
Concurrency examples
The same download workload in sequential, threaded,
httpxasync andaiohttpasync versions. -
Small, honest sample
A minimal Flask app and a requirements file. No opinionated structure to undo before adding yours.
Quick start
Four steps, no local Python install.
1. Click "Use this template" → "Create a new repository"
2. Clone your new repository and open the folder in VS Code
3. Accept "Reopen in Container" when prompted
4. Press F5 and open http://127.0.0.1:40000
Requirements: Docker running, VS Code and the Dev Containers extension. To use it
without creating a repository: git clone https://github.com/thepaneb/base_flask.git.
.
├── .devcontainer/devcontainer.json # Python 3.14 image, extensions, port 40000
├── .vscode/
│ ├── extensions.json # recommends the Dev Containers extension
│ └── launch.json # "Flask Debugger" (debugpy)
├── app/
│ ├── __init__.py # Flask app and the sample route
│ ├── requirements.txt # Flask + requests
│ ├── sync.py # sequential I/O
│ ├── thread.py # threaded I/O
│ ├── httpx.py # async I/O with httpx
│ └── aiohttp.py # async I/O with aiohttp
├── dev/dependencies.sh # upgrades pip and installs requirements
└── base_flask.code-workspace
Good to know
| Action | How |
|---|---|
| Start with the debugger | F5 → Flask Debugger |
| URL | http://127.0.0.1:40000 |
| Reinstall dependencies | bash dev/dependencies.sh |
| Add async examples | Add httpx / aiohttp and rerun the script |
The launch profile uses --no-debugger --no-reload on purpose: Flask's own
debugger and reloader conflict with debugpy breakpoints.