Dev Container template · Python

A Robyn workspace with batteries included.

Python 3.14 + uv, modular discovery, OpenAPI/ReDoc and a slim Docker build. Open the folder in VS Code, accept the container, press F5.

  • Python 3.14
  • Robyn 0.x
  • uv
  • Docker
  • MIT

Use this template View on GitHub

Why use this template

Structure that stays out of your way.

  • uv for everything

    uv sync creates the virtualenv and installs from the committed uv.lock.

  • Modular by design

    Every folder in app/modules is discovered at startup; each module owns its router, routes, models and services.

  • OpenAPI + ReDoc

    Routes are registered with OpenAPI metadata, and ReDoc is served by the app.

  • Docker included

    A slim, locked, --no-dev image and a Compose file for deployment.

  • Ruff + pytest

    Linting, formatting and tests are configured in pyproject.toml.

  • Debug ready

    F5 → Debug - DEV on port 40001, inside the container.

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 → "Debug - DEV" and open http://127.0.0.1:40001

Requirements: Docker running, VS Code and the Dev Containers extension.

.
├── .devcontainer/devcontainer.json   # Python 3.14 + uv, extensions, port 40001
├── app/
│   ├── api/__init__.py               # Robyn app + OpenAPI metadata
│   ├── extensions/                   # logger + routes loader
│   ├── modules/                      # hello_world, redoc, status
│   ├── constants.py                  # BASE_PATH
│   └── run.py                        # module discovery + entry point
├── Dockerfile
├── dockercompose.yml
├── pyproject.toml
└── uv.lock

Routes and run modes

Small surface, easy to extend.

MethodPathWhat it does
GET/app/statusHealth payload.
POST/app/hello_worldReturns Hello, world!.
GET/redocServes the ReDoc page.
ActionHowURL
Dev containerF5 → Debug - DEV / FAST127.0.0.1:40001
TerminalROBYN_PORT=40001 uv run python app/run.py127.0.0.1:40001
Docker Composedocker compose -f dockercompose.yml up --buildlocalhost:50001

BASE_PATH in app/constants.py controls the /app prefix. The app reads ROBYN_HOST, ROBYN_PORT, ROBYN_LOG_LEVEL, ROBYN_PROCESSES and ROBYN_WORKERS from the environment.