README.md
May 29, 2026 Β· View on GitHub
Important
π This repository has moved to Codeberg
Active development now happens at https://codeberg.org/Conduction/procest.
This GitHub mirror is read-only β issues, pull requests, and new commits should go to Codeberg.
Update your remote with: git remote set-url origin https://codeberg.org/Conduction/procest
Procest
Case management for Nextcloud β configurable workflows, deadlines, and formal decisions
Procest brings structured case management (zaakgericht werken) natively into Nextcloud. Define case types with custom status lifecycles, track progress and deadlines, assign roles, and record formal decisions β all within a clean, intuitive interface that integrates naturally with the rest of your Nextcloud workspace.
It pairs with Pipelinq to form a complete intake-to-resolution workflow: Pipelinq handles the customer-facing CRM side, Procest handles the internal case processing.
Requires: OpenRegister β all data is stored as OpenRegister objects (no own database tables).
Screenshots
![]() |
![]() |
![]() |
| Dashboard | Cases | Admin β Case Types |
Features
Case Types
- Configurable Workflows β Define case types with allowed statuses, deadline durations, required documents, and custom properties
- Status Lifecycle β Design the exact sequence of statuses a case must pass through
- Default Values β Set default confidentiality level, assigned roles, and SLA targets per case type
- Admin Panel β Manage all case types from a dedicated admin settings view
Case Management
- Case Lifecycle β Full CRUD with status transitions, validation rules, and audit trail
- Status Timeline β Visual progress indicator showing all lifecycle phases and current position
- Automatic Deadlines β Deadlines calculated from case type duration with live countdown (days remaining / overdue alerts)
- Quick Status Changes β Change status directly from the case list without opening the full detail view
Tasks & Decisions
- Task Assignment β Create and assign tasks to team members with BPMN-style lifecycle (available β active β completed)
- Formal Decisions β Record official decisions (besluiten) with outcomes, motivation, and effective dates
- Document Checklists β Track required documents at each status stage with upload verification
- Participant Roles β Assign the right people to the right roles: handler, advisor, decision-maker
Work Management
- My Work Dashboard β Personal overview of all assigned cases, pending tasks, and overdue items
- KPI Cards β At-a-glance counts of open cases, overdue deadlines, pending tasks, and recent activity
- Activity Timeline β Complete history of every change made to a case, with timestamps and responsible party
Integrations
- Unified Search β Deep links for cases and tasks in Nextcloud's global search
- Pipelinq Bridge β Receive requests handed off from Pipelinq CRM as new cases
- Sub-cases β Break complex cases into parent-child hierarchies for structured processing
Architecture
graph TD
A[Vue 2 Frontend] -->|REST API| B[OpenRegister API]
B --> C[(PostgreSQL JSON store)]
A --> D[Nextcloud Activity]
A --> E[Nextcloud Search]
F[Pipelinq] -->|request handoff| A
Data Model
| Object | Description | CMMN 1.1 | ZGW Mapping |
|---|---|---|---|
| Case | Formal process with lifecycle | CasePlanModel | Zaak |
| Case Type | Configurable case template | CaseDefinition | ZaakType |
| Task | Work item within a case | HumanTask | β |
| Status | Lifecycle phase | Milestone | Status |
| Role | Participant relationship | β | Rol |
| Result | Case outcome | β | Resultaat |
| Decision | Formal decision | β | Besluit |
Data standard: CMMN 1.1 (OMG Case Management Model and Notation) with Schema.org mapping and ZGW API compatibility.
Directory Structure
procest/
βββ appinfo/ # Nextcloud app manifest, routes, navigation
βββ lib/ # PHP backend β controllers, services
βββ src/ # Vue 2 frontend β components, Pinia stores, views
β βββ components/ # Reusable UI components
β βββ store/ # Pinia stores per entity (cases, caseTypes, tasksβ¦)
β βββ views/ # Route-level views
βββ docs/
β βββ FEATURES.md # Full feature specification
β βββ ARCHITECTURE.md
β βββ features/ # Per-feature documentation
βββ img/ # App icons and screenshots
βββ l10n/ # Translations (en, nl)
βββ docusaurus/ # Product documentation site (procest.app)
Requirements
| Dependency | Version |
|---|---|
| Nextcloud | 28 β 33 |
| PHP | 8.1+ |
| OpenRegister | latest |
Installation
From the Nextcloud App Store
- Go to Apps in your Nextcloud instance
- Search for Procest
- Click Download and enable
OpenRegister must be installed first. Install OpenRegister β
From Source
cd /var/www/html/custom_apps
git clone https://github.com/ConductionNL/procest.git
cd procest
npm install
npm run build
php occ app:enable procest
Development
Start the environment
docker compose -f openregister/docker-compose.yml up -d
Frontend development
cd procest
npm install
npm run dev # Watch mode
npm run build # Production build
Code quality
# PHP
composer phpcs # Check coding standards
composer cs:fix # Auto-fix issues
composer phpmd # Mess detection
composer phpmetrics # HTML metrics report
# Frontend
npm run lint # ESLint
npm run stylelint # CSS linting
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Vue 2.7, Pinia, @nextcloud/vue |
| Build | Webpack 5, @nextcloud/webpack-vue-config |
| Backend | PHP 8.1+, Nextcloud App Framework |
| Data | OpenRegister (PostgreSQL JSON objects) |
| UX | @conduction/nextcloud-vue |
| Quality | PHPCS, PHPMD, phpmetrics, ESLint, Stylelint |
Documentation
Full documentation is available at procest.app
| Page | Description |
|---|---|
| Features | Complete feature specification |
| Architecture | Technical architecture and design decisions |
| Development | Developer setup and contribution guide |
Standards & Compliance
- Data standard: CMMN 1.1 (OMG Case Management specification)
- Process standards: BPMN 2.0, DMN for task and decision logic
- Dutch interoperability: ZGW APIs (Zaken, Besluiten, Catalogi), RGBZ information model
- Accessibility: WCAG AA (Dutch government requirement)
- Authorization: RBAC via OpenRegister
- Audit trail: Full change history on all objects
- Localization: English and Dutch
Related Apps
- Pipelinq β CRM intake; hands off requests to Procest as new cases
- OpenRegister β Object storage layer (required dependency)
- OpenCatalogi β Application catalogue
License
AGPL-3.0-or-later
Authors
Built by Conduction β open-source software for Dutch government and public sector organizations.


