Kicking Big Tech to the curb: Introduction
Welcome to this series of blogs about do-it-yourself digital sovereignty. I'm Robert, an advocate for open source and digital sovereignty, and a developer at Conduction.
Read moreBuild a Nextcloud app on the Conduction stack — Part 7: The nc-vue component library
Parts 2–6 used a handful of nc-vue components by name (CnAppRoot, CnObjectSidebar, CnDashboardPage, CnMarkdownEditor). Part 7 completes the picture, organised by capability so you can reach for the right component the moment your PetStore app needs it.
Build a Nextcloud app on the Conduction stack — Part 8: Document and showcase
Stand up the documentation site for the PetStore app you've built across Parts 1–7. Hosted from your Codeberg or GitHub repo via the central documentation workflow, illustrated with token-built screen mocks, and walked through with Playwright-captured screenshots. Every push to development rebuilds and republishes.
Government open source needs an engine, not pushers
Government is a great starter and a hopelessly bad ecosystem. An open source solution that lives only inside government dies of its single customer. KPN, Centric, and the market around them are standing by to keep the engine running. So step aside.
Workstation Setup tutorial series — Part 1: What do you install, and why?
A new Conduction developer needs a specific combination of tools — Claude Code, Docker, Nextcloud locally, Playwright, a handful of global settings. Before we start clicking through installers, this part explains what's on the menu and which choices you make first. First of six short modules.
Workstation Setup tutorial series — Part 2: Set up the basics
WSL2, Docker Desktop, VS Code with the right extensions, Node, PHP, Codeberg auth (SSH key + tea CLI) plus the GitHub CLI, the OpenSpec CLI, and the Playwright browser. The longest part of the series — most of the time goes into downloads while you do something else. After this, you have a working dev workstation, just without Claude Code wired up yet.
Workstation Setup tutorial series — Part 3: Install and configure Claude Code
Claude Code in VS Code, sign-in, and the mandatory global settings and safety hooks that intercept destructive shell commands before they run. Short but important — running Claude Code without these hooks is how people accidentally wipe their own repo. Third of six short modules.
Workstation Setup tutorial series — Part 4: Connect the MCP server
A complete Conduction workstation has at least one MCP server wired into the project root. This short module explains what MCP is, how the .mcp.json file works, and how to set up the Playwright browser pool that the testing skills depend on. Pointers to the dedicated Conduction MCP server tutorial included. Fourth of six short modules.
Workstation Setup tutorial series — Part 5: Run Nextcloud locally
A working Conduction workstation needs a Nextcloud you can test against. That tutorial already exists — this short module frames it as the last install step before you're production-ready, and tells you which apps to install once Nextcloud is up. Fifth of six short modules.
Workstation Setup tutorial series — Part 6: Done — what now?
Your workstation is complete. This is the lap of honour — a short map of the next tutorials, grouped by what kind of work you'll do. OpenSpec, Claude Skills, Build an App, Hydra — what each one is for, and where to start. Sixth and final of six short modules.
Spec-driven development with OpenSpec — let the AI write the code, you write the context
With OpenSpec, you stop hand-writing code and start writing context. Markdown specs describe what a feature must do. ADRs at org and app level govern how features hang together. An AI agent (Hydra) reads the spec, applies it, and a sequential quality + review harness validates the result. This tutorial walks the workflow, names the skills, and explains why "configuration over code" is the natural endpoint.
Build a Nextcloud app on the Conduction stack — Part 5: Advanced manifest features
Past the schema-driven CRUD basics, the v2.7.0 manifest schema gives you `actionToggles`, `fieldWidgets`, route-param sentinels, public-mode pages, and seven extra page types (form, wiki, search, roadmap, map, logs, settings). One tutorial that walks through each, using PetStore as the running example.
Build a Nextcloud app on the Conduction stack — Part 6: Integrate
Connect your shipped PetStore app to the rest of the workspace. Read suppliers from a second OpenRegister register, deepen the xWiki source from Part 4 into a per-order care-guide tab, then close the loop with a two-way order ↔ xWiki maintenance sync over an OpenConnector webhook.
OpenWoo community — two years of monthly meetings
Recordings of every public OpenWoo community meeting since 2023 — vendors, municipalities, KOOP, and executive agencies rolling out the Dutch Open Government Act (Woo) together on Common Ground foundations.
Nextcloud is not a suite, it is a platform
Or it should be. Nextcloud already has the substrate. What is missing is the naming, the composition layer, and an honest reframe by the buyers running European sovereign-workplace migrations.
Build a Nextcloud app on the Conduction stack — Part 4: Knowledge + ship
Spin up xWiki locally, author per-category care guides, surface them per pet via an OpenRegister care_guide schema, package the app, publish to the Conduction app store.
Build a Nextcloud app on the Conduction stack — Part 3: Schema-driven integrations
One calendarProvider block on the order schema. Order ship-dates appear in NC Calendar with no controller, no event listener, no per-app glue.
Claude Skills tutorial series — Part 1: What are Claude Skills?
What a Claude Skill is, when you should write one (and when a prompt or command is the better tool), what fields belong in the frontmatter, and how Claude decides when to trigger it. First of four short modules.
Claude Skills tutorial series — Part 2: Writing your first skill
Write a working Claude Skill from scratch — a mini-skill that summarises git statuses. Using /skill-creator as a starting point, a solid description, local testing, and adding it to your registry. Second of four short modules.
Claude Skills tutorial series — Part 3: Skill evals — measuring whether your skill actually works
From a skill that "feels right" to a skill that measurably works. Writing test scenarios, baseline measurement, trigger tests, and the eval runner inside /skill-creator. Third of four short modules.
Claude Skills tutorial series — Part 4: From measured to learning and orchestrating (L6 → L7)
How do you go beyond L5? L6 puts a learnings loop on your skill, L7 turns it into an orchestrator that steers sub-agents. Plus a look at the skill-level-overview dashboard that lets you scan your whole skill library for maturity at a glance. Fourth of four short modules.
Build a Nextcloud app on the Conduction stack — Part 2: Schemas + manifest
Define the category, pet, and order schemas in OpenRegister, declare them in a manifest.json, and watch CnAppRoot replace ~200 lines of hand-rolled Vue with three lines of config.
Haven en Haven+ — van VNG-standaard naar lokale Kubernetes-praktijk
Wat Haven voorschrijft, waarom het bestaat en hoe je de bouwstenen lokaal namaakt met kind. Geen compliant cluster op je laptop, wel een werkende oefenomgeving waarin de standaard tastbaar wordt.
Hydra tutorial series — Part 1: What is Hydra?
A short introduction to Hydra, Conduction's agentic CI/CD platform. What it does, why it exists, and where it sits inside our app factory. The first of six short modules.
Hydra tutorial series — Part 2: The three pipelines
Build, code review and security review. Who does what, in what order, and how a label state machine stitches the whole ride together. The second of six short modules.
Hydra tutorial series — Part 3: Quality gates
What are Hydra's mechanical quality gates, why do they deliberately NOT rely on AI judgement, and what do you do when a gate misfires? The third of six short modules.
Hydra tutorial series — Part 4: Skills
Which skills run inside the automated Hydra factory, which exist for humans on the CLI, how they get invoked, and when you should add a new skill to the loop yourself. Fourth of six short modules.
Hydra tutorial series — Part 5: Starting a Hydra run on a real app
The full recipe from issue to green PR, including the HYDRA_LABEL_PREFIX setting that lets multiple devs run Hydra at the same time without overwriting each other's labels. Fifth of six short modules.
Hydra tutorial series — Part 6: Troubleshooting & escalation
What to do when the pipeline gets stuck. The menu of choices between development merge, label reset, retry:queued, and rebuild:queued — ordered from cheap to expensive. Last of six short modules.
OpenSpec tutorial series — Part 1: What is OpenSpec?
A short introduction to OpenSpec, the spec-first framework underneath almost every Conduction project. What a spec is, what a change is, and why we write things down before we build them. First of two short modules.
OpenSpec tutorial series — Part 2: Your first OpenSpec change
From empty folder to validated OpenSpec change. We start with /opsx-new, write a spec-delta with a requirement plus scenario, let /opsx-ff generate the rest, and validate the whole thing. Second of two short modules.
Een Nextcloud-app publiceren in de App Store
Van nul naar gepubliceerde app in de Nextcloud App Store. CSR aanvragen, signen, registreren, releasen, en de hele release-pijplijn automatiseren via GitHub Actions.
Build a Nextcloud app on the Conduction stack — Part 1: Scaffold
Clone the Conduction app template, rename it to PetStore, build, enable, and see the canonical app chassis. The first hands-on part of the nine-part app-building series, using the OpenAPI Pet Store as the running domain.
Run Nextcloud locally with Docker
Five steps, half an hour. After that you have a clean Nextcloud running on your laptop — even if you have never used Docker or a terminal before.
Upload files to a Woo publication
Four ways to attach documents to a Woo publication, from one PDF to a 6 MB report in chunks. With tested API calls.
Set up a Woo register in OpenRegister
Import the canonical Woo register into OpenRegister. One API call, ten TOOI categories, ready to store publications.
Build a Nextcloud app on the Conduction stack — Part 0: Three paths, one curriculum
Before you write a line of code, decide which of the three Conduction app-building paths fits the app you have in mind. Traditional Nextcloud, OpenRegister + nextcloud-vue, or full manifest. Each one builds on what the previous gives you, and the rest of the series teaches the manifest path because that is where the curve becomes steep in our favour.
Taming log noise with OpenTelemetry's drain processor
How a single processor cut our trace volume by 40 percent on the OpenRegister API.
Conduction is online
First post on the new Conduction site. The brand book moves here once the OpenCatalogi content plugin lands.
Set up the Conduction MCP server
Point Claude or any MCP-aware client at OpenRegister, then write your first MCP-driven query.
Replacing four SaaS subscriptions with five Conduction apps
How a Frisian municipality moved from four hosted services to a single Nextcloud workspace, in eleven weeks.
Managing OpenTelemetry semantic convention migrations with the collector
A 45-minute walk-through with live Q&A on rolling out semconv 1.27 across a fleet of services.
New posts in your inbox, monthly.
One mail a month. New guides, case studies, and webinars. No spam, unsubscribe any time.
We mail from [email protected]. No list reselling.
