Skip to main content

Generate tailored Dockerfiles for development environments

Project description

StackForDev

CI PyPI version Python Versions License: MIT codecov

Docker as your dev environment. Select a language and stack, get a tailored Dockerfile — no local language installation required.

Instead of installing Python, Node, Go, Rust, or Java on your machine, StackForDev generates a Dockerfile that acts as a transparent runtime proxy. You run commands inside the container against your volume-mounted project files. Your host stays clean.

Quick Start

pip install stackfordev

# Bootstrap a complete dev workspace in one command
stackfordev init -l python -s "Django Stack" -v 3.12

# Then:
docker compose build
source devrun.sh
devrun python manage.py runserver

Or just generate a Dockerfile:

stackfordev generate -l python -s "Django Stack" -v 3.12 --compose -o ./Dockerfile

Usage

# Bootstrap a full workspace (Dockerfile + docker-compose.yml + .dockerignore + devrun.sh)
stackfordev init -l python -s "Django Stack" -v 3.12
stackfordev init  # interactive mode

# Interactive mode (prompts for missing options)
stackfordev generate

# Non-interactive
stackfordev generate -l python -s "Django Stack" -v 3.12

# With extra dependencies
stackfordev generate -l python -s "Data Science Stack" -v 3.11 -e "numpy,pandas,scikit-learn"

# Save to file
stackfordev generate -l go -s "Gin Stack" -v 1.23 -o ./Dockerfile

# Also generate docker-compose.yml and .dockerignore
stackfordev generate -l python -s "Django Stack" -v 3.12 --compose -o ./Dockerfile

# Generate offline (no API call)
stackfordev generate -l javascript -s "Express Stack" -v 22 --local

# Raw JSON output
stackfordev generate -l rust -s "Actix-Web Stack" -v 1.82 --json

# Show all supported languages, versions, and stacks
stackfordev info

Supported Languages & Stacks

Use stackfordev info for a live table. Summary:

Language Versions Stacks
Python 3.9, 3.10, 3.11, 3.12 Django Stack, Flask Stack, Data Science Stack, Web Scraping Stack, Machine Learning Stack
JavaScript 18, 20, 22 Express Stack, React Stack, Vue.js Stack, Node.js API Stack, Full-Stack JavaScript
Go 1.21, 1.22, 1.23 Gin Stack, Beego Stack, Web Framework Stack, Microservices Stack, Data Processing Stack
Rust 1.80, 1.81, 1.82 Actix-Web Stack, CLI Tools Stack, WebAssembly Stack
Java 11, 17, 21 Spring Boot Stack, Maven Build Stack, Gradle Build Stack

CLI Options

stackfordev generate [OPTIONS]

  -l, --language TEXT    Programming language
  -s, --stack TEXT       Dependency stack (e.g. 'Django Stack')
  -v, --version TEXT     Language version (e.g. 3.12)
  -e, --extras TEXT      Comma-separated extra dependencies
  -o, --output PATH      Save Dockerfile to path
  --compose              Also generate docker-compose.yml and .dockerignore
  --local                Generate offline without API call
  --json                 Output raw JSON response
  --help                 Show this message and exit.

stackfordev info        Show supported languages, versions, and stacks

stackfordev init [OPTIONS]

  -l, --language TEXT    Programming language
  -s, --stack TEXT       Dependency stack
  -v, --version TEXT     Language version
  -e, --extras TEXT      Comma-separated extra dependencies
  -d, --directory PATH   Target directory (default: current directory)
  --help                 Show this message and exit.

How It Works

  1. Select language, stack, and version (interactively or via flags)
  2. The CLI calls the StackForDev API, or generates locally with --local
  3. A tailored Dockerfile (and optionally docker-compose.yml + .dockerignore) is returned
  4. Build the image and run commands inside the container — no local language installation needed

Architecture

Architecture Diagram

Request flow:

CLI / API call
  → API Gateway (rate-limited, CORS)
  → AWS Lambda (Python 3.11, container runtime, ECR)
  → Pydantic validation + injection checks
  → Template substitution (language + stack + version)
  → S3 dedup check → upload
  → JSON response {dockerfile, key, message}

Infrastructure: AWS Lambda + API Gateway + S3 + ECR, provisioned with Terraform. CloudWatch alarms monitor error rate and throttles. S3 lifecycle policy manages storage costs automatically.

Monitoring

  • Errors alarm: fires when Lambda errors ≥ 5 in a 5-minute window → SNS notification
  • Throttles alarm: fires when Lambda throttles ≥ 10 in a 5-minute window
  • Log retention: CloudWatch Logs retained for 30 days, structured as JSON for Logs Insights queries
  • Concurrency cap: Lambda reserved concurrency set to 10 to prevent runaway scaling

Contributing

See CONTRIBUTING.md for local setup, how to run tests, and how to add a new language template in 4 steps.

Changelog

See CHANGELOG.md.

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stackfordev-0.2.3.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stackfordev-0.2.3-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file stackfordev-0.2.3.tar.gz.

File metadata

  • Download URL: stackfordev-0.2.3.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for stackfordev-0.2.3.tar.gz
Algorithm Hash digest
SHA256 cd7ebb11310969d05d535f85637ea94ce45990bd941c8f6664b5d3ea23d204c5
MD5 67f73bf16afac58cd701507dc0c91d74
BLAKE2b-256 b921a59ca8fb250f40c00be9be450cce40558b1853de3481402bc78b69764f55

See more details on using hashes here.

Provenance

The following attestation bundles were made for stackfordev-0.2.3.tar.gz:

Publisher: workflow.yml on ZisisKostakakis/StackForDev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stackfordev-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: stackfordev-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for stackfordev-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0d57647f6a4326e5bed1cace04d05a99d7836e1902c5e890cf0923ec7d46e362
MD5 f4059ef738a5d92b6f403bfc664ec740
BLAKE2b-256 b08602df564b1385257d2f33fedf3b01ca9e1dd7a2d6ddc626e56b24b4e1beae

See more details on using hashes here.

Provenance

The following attestation bundles were made for stackfordev-0.2.3-py3-none-any.whl:

Publisher: workflow.yml on ZisisKostakakis/StackForDev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page