Shopmon is an application from FriendsOfShopware to manage multiple Shopware instances. It tracks versions, extensions, scheduled tasks, queue health, and performance trends across all your shops.
- API: Go (chi router, Huma v2, sqlc)
- Frontend: Vue 3 + TypeScript + Tailwind CSS
- Database: PostgreSQL
- Queue: PostgreSQL (go-queue)
- Storage: S3-compatible
- Observability: OpenTelemetry (traces + logs via OTLP)
- Overview of all your Shopware instances
- Shopware version and security update tracking
- Installed extensions and available updates
- Scheduled task and queue monitoring
- Daily sitespeed checks to catch performance regressions
- Cache clearing
- mise — manages Go, Node.js, and tool versions
- Docker — for PostgreSQL, Redis, Mailpit, and demo shop
All other tools (Go 1.27, Node 26, sqlc, golangci-lint, air) are installed automatically by mise.
git clone https://github.com/FriendsOfShopware/shopmon.git
cd shopmon
mise trust # trust the mise config
mise install # install all tools
mise run setup # install dependencies (Go modules + npm)
mise run up # start Docker services
mise run load-fixtures # migrate DB + seed test data
mise run dev # start API, worker, and frontendOpen http://localhost:3000 in your browser.
With Docker Sandboxes
and the sbx CLI installed, use the committed environment from the repository root:
sbx env plan . # Review the environment
sbx env create . # Install mise, project tools, and dependencies
sbx env exec . -- mise run lint
sbx env exec . -- mise run test
sbx env run . # Attach to CodexThe sandbox mounts your checkout, so source edits appear on the host. Its own
Docker Engine runs Compose services and testcontainers; Linux frontend dependencies
live in a sandbox volume, separate from the host's frontend/node_modules.
Tool versions and development settings come from .mise.toml.
To start the application, run these commands in the sandbox (or prefix them with
sbx env exec . -- on the host):
mise run up
mise run load-fixtures
mise run devThe frontend, Mailpit, demo shop, Jaeger, and LavinMQ management UI use the same
host ports listed below. Stop any host development services using those ports
before creating the sandbox. The frontend proxies /api to the sandbox API.
The root sbxenv.yaml stays read-only inside the sandbox. After changing its
ports, resources, or kit, use sbx env rm . and create it again; removal also
deletes the sandbox's installed tools, dependencies, and database volumes.
mise run up # Start infrastructure (DB, Redis, Mailpit, demo shop)
mise run down # Stop infrastructure
mise run migrate # Apply database migrations
mise run fixtures # Seed test fixtures
mise run load-fixtures # Drop DB → migrate → seed (full reset)
mise run test # Run Go integration tests
mise run lint # Run all linters + type checks + tests
mise run lint-fix # Auto-fix lint and formatting issues
mise run generate # Regenerate sqlc + dump OpenAPI (gitignored) + frontend API types
mise run build # Build the API binaryRun mise tasks to see all available tasks.
Local dev defaults are in .mise.toml under [env]. They point to the Docker Compose services. No .env file needed for local development.
For production/staging, see .env.production and .env.staging.
See SELF_HOSTING.md for a complete self-hosting guide with Docker Compose, environment variables, and reverse proxy examples.
See CONTRIBUTING.md for guidelines and development workflow. The Go API's package boundaries and extension workflow are documented in api/ARCHITECTURE.md.
MIT
