Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .forgejo/workflows/tests-live.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ jobs:
# same apps-extra tree. CI clones only this repo, so fetch OR's
# release build instead.
OR_SRC="$RUNNER_TEMP/openregister"
git clone --depth 1 https://codeberg.org/Conduction/openregister.git "$OR_SRC"
git clone --depth 1 https://github.com/ConductionNL/openregister.git "$OR_SRC"
( cd "$OR_SRC" && composer install --no-dev --no-interaction --no-progress --prefer-dist )
fi
docker exec nextcloud mkdir -p /var/www/html/custom_apps/openregister
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

Stackiq brings structured software portfolio management to Nextcloud. Register the applications, modules, and connections (koppelingen) that make up your organization's IT landscape, manage contacts and organizations, and synchronize catalog data across a federated open data network — all aligned with Dutch GEMMA standards.

It integrates with [OpenRegister](https://codeberg.org/Conduction/openregister) for data storage and automatic user provisioning, turning register contacts into Nextcloud accounts with role-based group membership.
It integrates with [OpenRegister](https://github.com/ConductionNL/openregister) for data storage and automatic user provisioning, turning register contacts into Nextcloud accounts with role-based group membership.

> **Requires:** [OpenRegister](https://codeberg.org/Conduction/openregister) — all data is stored as OpenRegister objects (no own database tables).
> **Requires:** [OpenRegister](https://github.com/ConductionNL/openregister) — all data is stored as OpenRegister objects (no own database tables).

## Screenshots

Expand Down Expand Up @@ -113,7 +113,7 @@ stackiq/
|-----------|---------|
| Nextcloud | 28 -- 33 |
| PHP | 8.0+ |
| [OpenRegister](https://codeberg.org/Conduction/openregister) | latest |
| [OpenRegister](https://github.com/ConductionNL/openregister) | latest |

## Installation

Expand Down Expand Up @@ -267,11 +267,11 @@ Stackiq is not a standalone application — it runs as a Nextcloud app backed by

| Repository | Role | Required |
|-----------|------|----------|
| [OpenRegister](https://codeberg.org/Conduction/openregister) | Data storage layer — all objects (applications, modules, organizations, contacts) are stored as JSON objects in OpenRegister. Also provides the Docker environment (`docker-compose.yml`). | Yes |
| [OpenCatalogi](https://codeberg.org/Conduction/opencatalogi) | Publication and catalog management — handles public search, faceted filtering, and federated publishing of catalog data. | Yes |
| [NL Design](https://codeberg.org/Conduction/nldesign) | Design token theming — applies Dutch government (NL Design System) styling via CSS custom properties. | Yes |
| [Tilburg WOO UI](https://codeberg.org/Conduction/tilburg-woo-ui) | **Separate public frontend** — a React/Preact SPA that serves as the citizen-facing interface at `localhost:3000`. Provides public search, detail pages, and registration forms (product, usage, integration, organization). This is **not** a Nextcloud app but a standalone web application that communicates with Nextcloud via the OpenRegister and OpenCatalogi APIs. | Yes |
| [LaunchPad](https://codeberg.org/Conduction/launchpad) | Dashboard widgets for the Nextcloud dashboard page. | Recommended |
| [OpenRegister](https://github.com/ConductionNL/openregister) | Data storage layer — all objects (applications, modules, organizations, contacts) are stored as JSON objects in OpenRegister. Also provides the Docker environment (`docker-compose.yml`). | Yes |
| [OpenCatalogi](https://github.com/ConductionNL/opencatalogi) | Publication and catalog management — handles public search, faceted filtering, and federated publishing of catalog data. | Yes |
| [NL Design](https://github.com/ConductionNL/thematiq) | Design token theming — applies Dutch government (NL Design System) styling via CSS custom properties. | Yes |
| [Tilburg WOO UI](https://github.com/ConductionNL/tilburg-woo-ui) | **Separate public frontend** — a React/Preact SPA that serves as the citizen-facing interface at `localhost:3000`. Provides public search, detail pages, and registration forms (product, usage, integration, organization). This is **not** a Nextcloud app but a standalone web application that communicates with Nextcloud via the OpenRegister and OpenCatalogi APIs. | Yes |
| [LaunchPad](https://github.com/ConductionNL/launchpad) | Dashboard widgets for the Nextcloud dashboard page. | Recommended |

## Installation

Expand Down
2 changes: 1 addition & 1 deletion docs/static/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ Stackiq is an open-source IT-asset-management app for the Nextcloud workspace. I

- Email: info@conduction.nl
- Web: https://www.conduction.nl
- GitHub: https://codeberg.org/Conduction
- GitHub: https://github.com/ConductionNL
- Conduction B.V. · KvK 76741850 · Lauriergracht 14h, Amsterdam, Netherlands
4 changes: 2 additions & 2 deletions lib/EventListener/StackiqEventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/OpenConnector
* @link https://github.com/ConductionNL/integriq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand Down Expand Up @@ -47,7 +47,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/OpenConnector
* @link https://github.com/ConductionNL/integriq
* @todo This listener should be moved to the software catalog app.
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
Expand Down
4 changes: 2 additions & 2 deletions lib/EventListener/TestEventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/OpenConnector
* @link https://github.com/ConductionNL/integriq
*/

declare(strict_types=1);
Expand All @@ -36,7 +36,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/OpenConnector
* @link https://github.com/ConductionNL/integriq
*/
class TestEventListener implements IEventListener {
/**
Expand Down
2 changes: 1 addition & 1 deletion lib/Service/PortfolioReportService.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2026 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/changes/portfolio-rationalization-time/specs/portfolio-rationalization-time/spec.md#requirement-portfolio-rationalization-report-aggregates-per-organisation
*
Expand Down
2 changes: 1 addition & 1 deletion lib/Service/Settings/SyncSettingsHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/changes/method-decomposition/tasks.md#task-1
*
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/SettingsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: 1.0.0
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand Down Expand Up @@ -42,7 +42,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: 1.0.0
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.ExcessiveClassLength)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
Expand Down
2 changes: 1 addition & 1 deletion lib/Service/Stackiq/ApiClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/changes/method-decomposition/tasks.md#task-2
*
Expand Down
2 changes: 1 addition & 1 deletion lib/Service/Stackiq/ConflictResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/changes/method-decomposition/tasks.md#task-2
*
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/Stackiq/ContactPersonHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*/

declare(strict_types=1);
Expand All @@ -37,7 +37,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.ExcessiveClassLength)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
Expand Down
2 changes: 1 addition & 1 deletion lib/Service/Stackiq/DataMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/changes/method-decomposition/tasks.md#task-2
*
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/Stackiq/GroupHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand Down Expand Up @@ -41,7 +41,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.CamelCaseParameterName)
*
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/Stackiq/HierarchyHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand All @@ -34,7 +34,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/Stackiq/OrganizationHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand All @@ -38,7 +38,7 @@
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/StackiqContactSyncService.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* @copyright 2026 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/softwarecatalog-contacts-to-nc/spec.md
*/
Expand All @@ -40,7 +40,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity) Overall complexity 56 (threshold 50). The
* class maps several distinct stackiq relationship types (organisation, contactpersoon,
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/StackiqService.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand Down Expand Up @@ -43,7 +43,7 @@
* @author Conduction b.v. <info@conduction.nl>
* @copyright 2024 Conduction B.V. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @SuppressWarnings(PHPMD.ExcessiveClassLength)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
Expand Down
4 changes: 2 additions & 2 deletions lib/Service/SymfonyEmailService.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* @copyright 2024 Conduction B.V.
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @version GIT: <git_id>
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
*
* @spec openspec/specs/method-decomposition/spec.md
*/
Expand Down Expand Up @@ -37,7 +37,7 @@
* @package OCA\Stackiq\Service
* @author Conduction b.v. <info@conduction.nl>
* @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
* @link https://codeberg.org/Conduction/SoftwareCatalog
* @link https://github.com/ConductionNL/stackiq
* @version GIT: <git_id>
*
* @SuppressWarnings(PHPMD.ExcessiveClassLength)
Expand Down
2 changes: 1 addition & 1 deletion openspec/changes/adopt-apphost/hydra.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"spec_slug": "adopt-apphost",
"title": "Adopt OpenRegister AppHost (observability + boilerplate)",
"app": "stackiq",
"repo": "https://codeberg.org/Conduction/stackiq",
"repo": "https://github.com/ConductionNL/stackiq",
"depends_on": [
"apphost-observability-engine",
"apphost-boilerplate-controllers"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ Tracked but DEFERRED to a future change:
`@conduction/nextcloud-vue` `CnAppRoot` + `CnPageRenderer` (see
the lib's CLAUDE.md "JSON Manifest Renderer" section).
- **Reference migration (full Tier 4 + cleanup)**:
- Pull request: https://codeberg.org/Conduction/decidesk/pulls/160
- Pull request: Codeberg decidesk#160 (pre-migration, not migrated to GitHub; `decidesk` is now `decidiq`)
- Spec: `decidesk/openspec/changes/decidesk-manifest-v1/`
- Reference commits:
- `b5c88cd2` — manifest write
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,8 @@ Total: **2 customs** (vs. decidesk's `LiveMeeting` + `Settings` =
- `decidesk/openspec/changes/decidesk-manifest-v1/` — canonical
reference. Three-phase migration (manifest rewrite → Tier-4
adoption → sidebar tab implementations).
- `https://codeberg.org/Conduction/decidesk/pulls/160` — merged
reference PR.
- Codeberg decidesk#160 (pre-migration, not migrated to GitHub;
`decidesk` is now `decidiq`) — merged reference PR.
- `nextcloud-vue/openspec/changes/manifest-resolve-sentinel/proposal.md`
— `@resolve:` sentinel design (per-tenant register slug
resolution).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"spec_slug": "module-vulnerability-tracking",
"title": "Module vulnerability tracking & exposure",
"app": "softwarecatalog",
"repo": "https://codeberg.org/Conduction/softwarecatalog",
"repo": "https://github.com/ConductionNL/stackiq",
"depends_on": [],
"issue": null
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"spec_slug": "software-license-posture",
"title": "Software license posture (SAM overview)",
"app": "softwarecatalog",
"repo": "https://codeberg.org/Conduction/softwarecatalog",
"repo": "https://github.com/ConductionNL/stackiq",
"depends_on": [],
"issue": null
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"spec_slug": "vendor-product-master-data",
"title": "Vendor & product master data via OpenRegister MDM + semantic types",
"app": "softwarecatalog",
"repo": "https://codeberg.org/Conduction/softwarecatalog",
"repo": "https://github.com/ConductionNL/stackiq",
"depends_on": [
"cross-app-semantic-references",
"mdm-foundation"
Expand Down
Loading