Nextcloud App Template
A starting point for building Nextcloud apps following ConductionNL conventions — a manifest-first Vue 2 frontend rendered by CnAppRoot, an OpenRegister data layer, a Dashboard widget, an admin settings panel, an AI Chat Companion tool provider, and the full PHP + frontend quality pipeline.
What is this?
This is the template every new Conduction app is scaffolded from. It ships:
- A manifest-driven UI — pages, navigation, and dependencies are
declared in
src/manifest.json; the shell (CnAppRoot) reads the manifest at boot and renders index / detail / dashboard / settings pages without per-page Vue files. - A Dashboard widget — a working
ExampleWidget(PHPIWidgetclass + webpack entry +NcDashboardWidgetrenderer) you copy and rename. - Admin settings — a settings panel wired through
NcAppSettingsDialog, backed by an OpenRegister settings register. - An MCP tool provider —
ExampleToolProviderexposes the app's capabilities to the in-app AI Chat Companion over MCP. - OpenRegister integration —
manifest.dependencieslistsopenregister, so the dependency-check phase ensures it is installed before the UI mounts. Remove the entry if your app does not need it. - The quality pipeline — PHPCS, PHPMD, Psalm, PHPStan, ESLint, Stylelint, plus manifest/register/JSON-strict validators.
- This documentation site — Docusaurus on
@conduction/docusaurus-preset, the journeydoc tutorial scaffold, and a Playwrightdocs-captureproject for screenshots (ADR-030).
Getting started
Clone the template, rename app-template to your slug, and build:
cd /var/www/html/custom_apps
git clone https://codeberg.org/Conduction/nextcloud-app-template.git app-template
cd app-template
npm install && npm run build
php occ app:enable app-template
OpenRegister must be installed first unless you remove the dependency from
src/manifest.json,appinfo/info.xml, andopenspec/app-config.json.
- New here? Start with the User guide — open the app for the first time.
- Setting things up? See the Admin guide — manage the app's settings.
Free and open source under the EUPL-1.2 license. For support, contact support@conduction.nl.