Compose-Craft

Compose-Craft

Official

Docker app from Undead Reaper's Repository

Overview

Compose craft is a tool to help you manage, edit and share docker compose files with a clean and intuitive GUI.

Compose Craft

Compose Craft is a modern, open-source tool to help you manage, edit and share docker compose files in an intuitive GUI way.

License: MIT PRs Welcome Discord

Compose Craft Demo

πŸš€ Features

  • Visual Docker Compose Editor: Create and edit docker compose files with an intuitive drag-and-drop interface
  • Real-time Diagram Visualization: See your services as interconnected nodes with automatic layout
  • One-Click Sharing: Generate public links to share your docker compose diagrams with anyone
  • Import/Export: Import existing docker-compose.yml files and export your creations
  • GitHub Integration: Connect your GitHub repositories for seamless workflow
  • Multi-Service Management: Handle complex multi-service applications with ease
  • Environment Variables & Volumes: Visual management of env vars, volumes, networks, and ports
  • Responsive Design: Works seamlessly on desktop and mobile devices

πŸ“– Documentation

Complete documentation is available at https://composecraft.com/docs/

πŸ› οΈ Quick Start

Online Version

Use the hosted version at composecraft.com - no installation required!

Self-Hosted Deployment

Using Docker Compose (Recommended)

# Clone the repository
git clone https://github.com/composecraft/composecraft.git
cd composecraft/webapp

# Start with Docker Compose
docker compose up -d

The application will be available at http://localhost:3000

Manual Installation

# Clone the repository
git clone https://github.com/composecraft/composecraft.git
cd composecraft/webapp

# Install dependencies
pnpm install

# Start development server
pnpm run dev

πŸ—οΈ Architecture

Compose Craft is built with modern technologies:

  • Frontend: Next.js 15 with React 19
  • UI Framework: Radix UI + Tailwind CSS
  • Diagram Engine: React Flow with Dagre layout
  • State Management: Zustand
  • Backend: Next.js API Routes
  • Database: MongoDB with Mongoose
  • Authentication: JWT with bcrypt
  • Code Editor: Monaco Editor (VS Code's editor)
  • Styling: Tailwind CSS with custom animations

Key Dependencies

  • @xyflow/react: Node-based diagram visualization
  • @composecraft/docker-compose-lib: Core docker compose parsing library
  • @radix-ui/react-*: Accessible UI components
  • zod: Schema validation
  • react-hook-form: Form management
  • posthog-js: Analytics (optional)

βš™οΈ Configuration

Environment Variables

Create a .env.local file with the following variables:

# Required
SECRET_KEY=your-super-secret-jwt-key-here
MONGODB_URI=mongodb://localhost:27017/composecraft
URL=http://localhost:3000

# Optional
CORE_ONLY=false                    # Disable SaaS features for simple self-host
DISABLE_TELEMETRY=false           # Disable PostHog analytics
NEXT_PUBLIC_POSTHOG_KEY=your-key  # PostHog project key for telemetry

Docker Configuration

For production deployments, use the provided docker-compose.yml:

services:
  compose-craft:
    image: composecraft/composecraft:latest
    ports:
      - "3000:3000"
    environment:
      - SECRET_KEY=your-secret-key
      - MONGODB_URI=mongodb://mongo:27017/composecraft
      - URL=https://your-domain.com
    depends_on:
      - mongo
  mongo:
    image: mongo:latest
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=password

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

  1. Fork and clone the repository
  2. Install dependencies:
    pnpm install
    
  3. Set up environment variables (see Configuration section)
  4. Start development server:
    pnpm run dev
    
  5. Run tests:
    pnpm test
    
  6. Lint code:
    pnpm lint
    

Development Workflow

  1. Create a feature branch from main
  2. Make your changes
  3. Ensure tests pass and code is formatted
  4. Create a pull request with a clear description

πŸ“‹ Project Structure

webapp/
β”œβ”€β”€ app/                    # Next.js app directory
β”‚   β”œβ”€β”€ dashboard/         # Main application dashboard
β”‚   β”œβ”€β”€ playground/        # Docker compose editor
β”‚   β”œβ”€β”€ api/              # API routes
β”‚   └── components/       # App-specific components
β”œβ”€β”€ components/           # Shared UI components
β”‚   β”œβ”€β”€ playground/       # Editor-specific components
β”‚   β”œβ”€β”€ display/         # Data display components
β”‚   └── ui/             # Reusable UI components
β”œβ”€β”€ lib/                # Core libraries and utilities
β”œβ”€β”€ store/              # Zustand state management
β”œβ”€β”€ types/              # TypeScript type definitions
└── assets/             # Static assets and images

πŸ› Bug Reports

If you find a bug, please open an issue with:

  • Clear and descriptive title
  • Steps to reproduce the issue
  • Expected vs actual behavior
  • Screenshots if applicable
  • Your environment details

πŸ’‘ Feature Requests

We'd love to hear your ideas! Please:

  1. Check existing issues to avoid duplicates
  2. Create a new issue with a clear description
  3. Explain why this feature would be useful
  4. Include mockups or examples if possible

πŸ“Š Roadmap

See our Roadmap for planned features and improvements.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • React Flow for the excellent diagram library
  • Radix UI for accessible components
  • Next.js for the fantastic framework
  • All our contributors and community members!

🀝 Community

  • Discord: Join our Discord server
  • GitHub Discussions: For questions and community discussions
  • Issues: For bug reports and feature requests

πŸ“ž Support

For support:


Made with ❀️ by the Compose Craft community

Open Source Love made with pnpm

Install Compose-Craft on Unraid in a few clicks.

Find Compose-Craft in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Compose-Craft Review the template variables and paths Click Install

Download Statistics

102,403
Total Downloads
5,550
This Month
5,491
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
composecraft/composecraft
Last Updated2025-12-26
First Seen2025-01-08

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
bridge
Shell
sh
Privileged
false

Template configuration

SECRET_KEYVariable

The key used to sign JWT tokens

Value
?xml version="1.0"? Container version="2" NameCompose-Craft/Name Repositorycomposecraft/composecraft/Repository Registryhttps://hub.docker.com/r/composecraft/composecraft/Registry Networkbridge/Network MyIP/ Shellsh/Shell Privilegedfalse/Privileged Support/ Projecthttps://github.com/composecraft/composecraft/Project Overview/ CategoryProductivity: Tools:/Category WebUIhttp://[IP]:[PORT:3000]/WebUI TemplateURL/ Iconhttps://github.com/composecraft/composecraft/blob/main/assets/logo.png/Icon ExtraParams/ PostArgs/ CPUset/ DateInstalled1736328499/DateInstalled DonateText/ DonateLink/ Requires/ Config Name="SECRET_KEY" Target="SECRET_KEY" Default="" Mode="" Description="The key used to sign JWT tokens" Type="Variable" Display="always" Required="true" Mask="true"/ Config Name="MONGODB_URI" Target="MONGODB_URI" Default="" Mode="" Description="Used to connect to mongodb" Type="Variable" Display="always" Required="true" Mask="false"/ Config Name="URL" Target="URL" Default="" Mode="" Description="The base url used for some redirect and public link generation" Type="Variable" Display="always" Required="true" Mask="false"/ Config Name="CORE_ONLY" Target="CORE_ONLY" Default="true" Mode="" Description="Disable SaaS hosted features (to allow simple self-host)" Type="Variable" Display="always" Required="false" Mask="false"true/Config Config Name="DISABLE_TELEMETRY" Target="DISABLE_TELEMETRY" Default="true" Mode="" Description="Disable telemetry" Type="Variable" Display="always" Required="false" Mask="false"true/Config TailscaleStateDir/ /Container
MONGODB_URIVariable

Used to connect to mongodb

Value
MongoDB:27017
URLVariable

The base url used for some redirect and public link generation

CORE_ONLYVariable

Disable SaaS hosted features (to allow simple self-host)

Default
true
Value
true
DISABLE_TELEMETRYVariable

Disable telemetry

Default
true
Value
true
PORTPorttcp
Target
3000
Value
3600