A powerful, modular library of Docker Compose configuration fragments and a streamlined CLI to orchestrate them.
Composable eliminates the "copy-paste" cycle of Docker development. It provides a centralized registry of verified "fragments" (like PostgreSQL, Redis, Django, and Celery) that you can instantly inject into your project. Use it to build clean, maintainable, and highly reproducible development environments.
- 🧱 Fragment Library: High-quality, schema-validated Docker Compose snippets for common services.
- 📦 Pre-configured Stacks: Initialize entire application ecosystems (e.g.,
django-base) with a single command. - 🔄 Smart Build & Watch: Automatically injects build contexts and Docker Compose
watchconfigurations for hot-reloading. - 🛡️ Environment Isolation: Keeps your primary
.envclean by routing service-specific variables to.env.compose. - 🌍 Global Configuration: Set organization-wide or personal defaults in
~/.composable/config.yml. - 📜 JSON Schema Validation: Strict schema enforcement for both fragments and stacks to ensure stability.
npm install -g @voidrot/composable# List all available fragments
composable search
# Search for a specific service
composable search postgresql# Add postgresql and link it to your project
composable add compose postgresql --extend# Set up a complete Django + Postgres + Celery stack
composable stack init django-baseYou can customize Composable globally by creating a config file at ~/.composable/config.yml:
registries:
- name: default
url: https://voidrot.github.io/composable/latest
defaults:
env_file: true
build: true
watch: true# Install dependencies
npm install
# Build the CLI
npm run build
# Validate all fragments and stacks against schemas
npm run validate
# Run the local CLI
npx tsx src/cli/index.ts --helpFor detailed information on commands, fragments, and stacks, visit our documentation site: https://voidrot.github.io/composable/latest/docs/
- Add a Fragment: Place a
.ymlfile infragments/compose/and runnpm run validate. - Define a Stack: Create a
.jsonfile instacks/using the stack schema. - Update Docs: Run
node scripts/generate-docs.jsto refresh the documentation and navigation.
Releases are automated with Release Please. Use Conventional Commits to trigger version bumps.