Thanks for wanting to help make this project better! Here's everything you need to know to get up and running.
Dockman is built with Go for the backend and React for the frontend.
- backend: The Go backend service
- frontend: The React frontend application
- install: Installation scripts and documentation (WIP)
Before diving in, make sure you have these installed:
- Go 1.24+
- Node.js 22+ and npm/yarn
- Docker (I mean... DUH!) for testing and updating generated code
- Taskfile – a modern task runner used for automating development workflows ( like Make, but nicer)
- Coreutils – used to perform cross-platform file
operations, since Taskfile doesn't yet support platform-agnostic shell commands
Using uutils/coreutils as a temporary workaround until Taskfile cross-platform shell support added
The easiest way to get started is with our init task that handles everything:
task initThis single command will:
- Create the build directory
- Install npm dependencies
- Build the frontend
- Run
go mod tidy
Start the UI development server with hot reload capabilities:
task ui:rThis command runs npm run dev in the ui directory. The frontend will be accessible at http://localhost:5173 with
automatic hot reload for development.
Open a new terminal window (keep the frontend server running):
task go:developThis command will:
- Build a Go binary server in the
build/developdirectory - Create a
develop/folder structure containing:compose/- Docker Compose root directory for all compose filesconfig/- Configuration directory containing the SQLite database
The backend will be accessible at http://localhost:8866
Note: Go does not support hot reload. To apply code changes, stop the server and rerun the task go:develop command
to rebuild with your updates.### Available Task Commands
You can see all available tasks by running:
task --listtask init- Complete setup for new contributorstask ui- Build the frontendtask ui:dep- Install UI dependenciestask go:server- Build and run the servertask go:b:server- Build server binary onlytask clean- Remove all build filestask tidy- Rungo mod tidyin the core directory
Build any Go command using the pattern task go:b:<target>:
task go:b:server # Build server
task go:b:updater # Build updaterRun any Go command using the pattern task go:<target>:
task go:server # Build and run server
task go:updater # Build and run updatertask dk:b:<target>- Build Docker image for specific targettask dk:<target>- Build and run Docker imagetask dk:up- Build the updater imagetask dk:upr- Build and run the updater imagetask dk:prune- Clean up Docker images
task ui:native- Build UI and copy for native binary embedding
- Run
task initfor initial setup - Start backend:
task go:server - Start frontend dev server:
cd ui && npm run dev - Make your changes in the
ui/directory - The dev server will auto-reload for most changes
- Run
task initfor initial setup - Make your changes in the
core/directory - Rebuild and restart:
task go:server - Test with real Docker containers
- Run
task initfor initial setup - Use
task ui:nativeto rebuild UI for native embedding - Rebuild backend:
task go:b:server - Test the integrated application
Once everything is running:
- Backend: Usually runs on port 8866 (check the terminal output)
- Frontend Dev Server: Usually runs on port 5173 (check the terminal output)
- Docker Compose Root: The
../stacksdirectory (you can change this with the--crflag) - Build Output: All binaries go to the
build/directory
- "Frontend won't load": Make sure the backend is running first
- "Go server won't start": Check if you built the frontend with
task ui - "Task not found": Make sure you have Taskfile installed and are in the project root
- "Coreutils command not found": Install uutils coreutils as mentioned in the requirements
- "Something broke": Try
task cleanfollowed bytask initto start fresh
Whether you're fixing a bug, adding a feature, or improving documentation:
- Start with an issue - Open an issue first to discuss your idea
- Fork and branch - Create a feature branch from
main - Make your changes - Use the task commands for consistent builds
- Test thoroughly - Use both
task go:serverand Docker builds to test - Submit a PR - Include a clear description of what you've changed
Not sure where to start? Open an issue tagged with question or help wanted.
I'm happy to help guide new contributors through the codebase.
If you get stuck, don't hesitate to:
- Open an issue with your problem
- Ask questions in the discussions
- Tag me (@RA341) if you need clarification on anything
- Run
task --listto see all available commands