All apps Β· 0 apps
Compose-Craft
OfficialDocker app from Undead Reaper's Repository
Overview
Readme
View on GitHubCompose Craft
Compose Craft is a modern, open-source tool to help you manage, edit and share docker compose files in an intuitive GUI way.

π 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 componentszod: Schema validationreact-hook-form: Form managementposthog-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
- Fork and clone the repository
- Install dependencies:
pnpm install - Set up environment variables (see Configuration section)
- Start development server:
pnpm run dev - Run tests:
pnpm test - Lint code:
pnpm lint
Development Workflow
- Create a feature branch from
main - Make your changes
- Ensure tests pass and code is formatted
- 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:
- Check existing issues to avoid duplicates
- Create a new issue with a clear description
- Explain why this feature would be useful
- 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:
- Check our Documentation
- Search existing Issues
- Join our Discord community
- Open a new GitHub Issue
Made with β€οΈ by the Compose Craft community
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allDetails
composecraft/composecraftRuntime arguments
- Web UI
http://[IP]:[PORT:3000]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
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
Used to connect to mongodb
- Value
- MongoDB:27017
The base url used for some redirect and public link generation
Disable SaaS hosted features (to allow simple self-host)
- Default
- true
- Value
- true
Disable telemetry
- Default
- true
- Value
- true
- Target
- 3000
- Value
- 3600