docs: add a local demo environment (stackiq-compose.yaml + setup page) - #783
Merged
Conversation
Adds `stackiq-compose.yaml` and a setup page describing it. The compose brings up Postgres and Nextcloud, installs openregister (required), thematiq and integriq (optional) and stackiq from release tarballs, and enables them in dependency order. Nothing is bind-mounted: Nextcloud installs an app by deleting its directory and extracting an archive over it, so pointing that at a checkout deletes the working tree — measured on a development machine on 2026-08-27, where an app-store update fired on a container restart and removed every top-level file including .git. Release tarballs rather than a clone for a second reason: a tarball is a complete app carrying vendor/ and the built js/, and an app with no vendor/ does not fail loudly — it warns once and keeps loading, so it looks installed while every service needing a dependency is absent. The openregister dependency is not declared in appinfo/info.xml — no app in the fleet declares an <app> dependency — so the compose encodes what the manifest does not. Verified: docker compose config parses and interpolates; the same generated file was booted end to end for portaliq, which produced 17 registers, 86 schemas and 13 magic tables for its own register, with the portal content API returning a real site rather than an empty shell.
Contributor
Quality Report — ConductionNL/stackiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue-demi | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 130/130 | |||
| npm | ✅ | ✅ 721/721 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | 🚨 NO VERDICT — enabled but never ran | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-28 13:42 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a self-contained demo environment:
stackiq-compose.yamlat the repository root anddocs/Installation/demo-environment.mddescribing it.What it does
Postgres + Nextcloud, with
openregister(required),thematiqandintegriq(optional) andstackiqinstalled from release tarballs and enabled in dependency order. Versions float to the newest release, pre-releases included, and each is pinnable.Two deliberate choices
Nothing is bind-mounted. Nextcloud installs and updates an app by deleting its directory and extracting a fresh archive over it. Point that at a checkout and an app-store update deletes the working tree — measured on a development machine on 2026-08-27, where
\OC\Updater::upgradeAppStoreAppfired on a container restart and removed every top-level file from a bind-mounted checkout,.gitincluded.Release tarballs, not
git clone. A tarball is a complete app carryingvendor/and the builtjs/. A clone carries neither, and an app with novendor/does not fail loudly: it warns once and keeps loading, so it looks installed while every service needing a dependency is quietly absent.Note on the dependency
The
openregisterdependency is not declared inappinfo/info.xml— no app in the fleet declares an<app>dependency — so nothing stops the App Store installing this app without it. It would then load and find no register to attach to. The compose encodes the dependency the manifest does not.Verification
docker compose configparses and interpolates this file. The same generated file was booted end to end for portaliq: 4 apps installed and enabled, 17 registers, 86 schemas, 13 magic tables for its own register, and the portal content API returned a real site rather than an empty shell — a content check, since the page returns HTTP 200 either way.