Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.
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
84 changes: 84 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Procest Documentation

Procest is a case management (zaakgericht werken) application for Nextcloud, designed for Dutch government organizations. It provides a complete case management solution built on top of OpenRegister.

## Screenshots

| Feature | Screenshot |
|---------|------------|
| Dashboard | ![Dashboard](screenshots/dashboard.png) |
| My Work | ![My Work](screenshots/my-work.png) |
| Cases | ![Cases](screenshots/case-management.png) |
| Tasks | ![Tasks](screenshots/task-management.png) |
| Case Types | ![Case Types](screenshots/case-types.png) |
| Admin Settings | ![Settings](screenshots/admin-settings.png) |
| ZGW Configuration | ![ZGW Config](screenshots/zaaktype-configuratie.png) |

## Feature Documentation

### Core Features (with screenshots)

| Feature | Description | Status |
|---------|-------------|--------|
| [Dashboard](features/dashboard.md) | Overview with case statistics, status chart, and personal work queue | Implemented |
| [Case Management](features/case-management.md) | List, filter, and manage cases in table or card view | Implemented |
| [Case Dashboard View](features/case-dashboard-view.md) | Individual case detail page with status, tasks, and documents | In development |
| [My Work](features/my-work.md) | Personal work queue showing assigned cases and tasks | Implemented |
| [Task Management](features/task-management.md) | List, create, and manage tasks associated with cases | Implemented |
| [Case Types](features/case-types.md) | Configure case type definitions with ZGW-compliant properties | Implemented |
| [Admin Settings](features/admin-settings.md) | Application configuration, schema mapping, and version info | Implemented |
| [Zaaktype Configuratie](features/zaaktype-configuratie.md) | ZGW API field mapping between OpenRegister and Dutch ZGW standard | Implemented |

### Case Processing Features (text-only)

| Feature | Description | Status |
|---------|-------------|--------|
| [Werkvoorraad](features/werkvoorraad.md) | Team work queue for unassigned cases | Planned |
| [Roles and Decisions](features/roles-decisions.md) | Role assignment and formal decision recording | Partial |
| [Zaak Intake Flow](features/zaak-intake-flow.md) | Case registration and intake process | Planned |
| [Complaint Management](features/complaint-management.md) | Citizen complaint handling (klachtafhandeling) | Planned |
| [Consultation Management](features/consultation-management.md) | Public participation and consultation processes | Planned |
| [Milestone Tracking](features/milestone-tracking.md) | Case lifecycle checkpoint monitoring | Planned |
| [Case Email Integration](features/case-email-integration.md) | Email-to-case and case correspondence | Planned |
| [WOO Case Type](features/woo-case-type.md) | Open Government Act disclosure requests | Planned |
| [VTH Module](features/vth-module.md) | Permits, supervision, and enforcement | Planned |
| [Case Sharing](features/case-sharing-collaboration.md) | Multi-user and cross-org case collaboration | In development |
| [AI-Assisted Processing](features/ai-assisted-processing.md) | LLM-powered case analysis and document processing | In development |

### Administrative Features (text-only)

| Feature | Description | Status |
|---------|-------------|--------|
| [Appointment Scheduling](features/appointment-scheduling.md) | Meeting and hearing scheduling | Planned |
| [B&W Parafering](features/bw-parafering.md) | Executive approval workflow | Planned |
| [Legesberekening](features/legesberekening.md) | Municipal fee calculation | Planned |
| [Mobiel Inspectie](features/mobiel-inspectie.md) | Mobile field inspection interface | Planned |

### Integration Features (text-only)

| Feature | Description | Status |
|---------|-------------|--------|
| [OpenRegister Integration](features/openregister-integration.md) | Core data layer via OpenRegister | Implemented |
| [MijnOverheid Integration](features/mijn-overheid-integration.md) | National citizen portal integration | Planned |
| [StUF Support](features/stuf-support.md) | Legacy Dutch government data exchange | Planned |

### Platform Features (text-only)

| Feature | Description | Status |
|---------|-------------|--------|
| [Prometheus Metrics](features/prometheus-metrics.md) | Production monitoring and alerting | Planned |
| [Register i18n](features/register-i18n.md) | Multilingual support (nl/en) | Partial |
| [Base Register Seed Data](features/base-register-seed-data.md) | Pre-configured case types and definitions | Implemented |
| [Multi-Tenant SaaS](features/multi-tenant-saas.md) | Multi-organization support | Planned |
| [Case Definition Portability](features/case-definition-portability.md) | Export/import case type configurations | Planned |

## Architecture

Procest is built as a Nextcloud app with the following architecture:

- **Frontend**: Vue.js single-page application within the Nextcloud framework.
- **Backend**: PHP (Nextcloud app structure with controllers, services, and mappers).
- **Data Layer**: OpenRegister (flexible register/schema/object model).
- **API**: ZGW-compatible REST API via configurable field mapping.
- **AI**: Integration with Nextcloud ExApps (Ollama, Presidio, etc.).
- **Theming**: NL Design System tokens via the nldesign Nextcloud app.
34 changes: 34 additions & 0 deletions docs/features/admin-settings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Admin Settings (Configuration)

The Configuration page (under Settings) provides the central administration panel for Procest.

![Admin Settings](../screenshots/admin-settings.png)

## Overview

The Configuration page displays:

### Version Information
- Application name and version
- Update status indicator
- Re-import configuration button for resetting to defaults

### Application Information
- **Application Name**: Procest
- **Version**: Displays the current installed version

### Support
- Support email: support@conduction.nl
- SLA inquiries: sales@conduction.nl

## Schema Configuration

The configuration section allows administrators to map Procest to OpenRegister schemas. See the [Case Types](case-types.md) documentation for the full list of configurable schema mappings.

## ZGW API Mapping

![ZGW API Mapping](../screenshots/zaaktype-configuratie.png)

The settings page includes the ZGW (Zaakgericht Werken) API mapping configuration, which maps English-language OpenRegister property names to their Dutch ZGW API equivalents. This ensures compatibility with the Dutch government's ZGW standard for case management.

Each ZGW resource type (zaak, zaaktype, status, etc.) can be individually configured with custom field mappings.
30 changes: 30 additions & 0 deletions docs/features/ai-assisted-processing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# AI-Assisted Processing

The AI-assisted processing feature leverages large language models and AI services to assist case workers with case analysis, document processing, and decision support.

## Overview

AI-assisted processing integrates with Nextcloud's AI infrastructure (ExApps like Ollama and OpenWebUI) to provide intelligent assistance during case handling.

## Planned Features

- **Document summarization** -- Automatically summarize long documents attached to cases.
- **Classification** -- Auto-classify incoming cases by type based on content analysis.
- **Anonymization** -- Redact personal data from documents for WOO publication using Presidio.
- **Suggested responses** -- Generate draft responses based on case content and templates.
- **Similar case finding** -- Find historically similar cases to inform decision-making.
- **Deadline risk assessment** -- Predict which cases are at risk of exceeding their deadline.
- **Translation** -- Translate case documents for multilingual communication.
- **Data extraction** -- Extract structured data from unstructured documents.

## AI Infrastructure

Procest leverages the following AI services (available via Docker profiles):
- **Ollama** -- Local LLM inference.
- **OpenWebUI** -- Chat interface for AI interaction.
- **Presidio** -- PII detection and anonymization.
- **TGI** -- Text Generation Inference for high-performance LLM serving.

## Status

This feature is defined in the spec at `openspec/specs/ai-assisted-processing/spec.md` and is under development.
22 changes: 22 additions & 0 deletions docs/features/appointment-scheduling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Appointment Scheduling (Afspraken)

The appointment scheduling feature enables case workers to schedule meetings, hearings, and appointments related to case processing.

## Overview

Many case types require in-person or virtual meetings (e.g., complaint hearings, permit consultations, inspections). This feature integrates appointment scheduling into the case workflow.

## Planned Features

- **Appointment creation** -- Schedule appointments linked to specific cases.
- **Calendar integration** -- Sync with Nextcloud Calendar for availability management.
- **Participant management** -- Invite internal and external participants.
- **Location management** -- Track physical or virtual meeting locations.
- **Reminder notifications** -- Send reminders to participants before appointments.
- **Appointment types** -- Configure different appointment types (hearing, consultation, inspection, etc.).
- **Outcome recording** -- Document appointment outcomes and link them to the case file.
- **Rescheduling** -- Handle cancellations and rescheduling with notification to all parties.

## Status

This feature is defined in the spec at `openspec/specs/appointment-scheduling/spec.md` and is planned for future implementation.
32 changes: 32 additions & 0 deletions docs/features/base-register-seed-data.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Base Register Seed Data

The base register seed data feature provides pre-configured case types, status types, and role definitions that are automatically imported when Procest is first installed.

## Overview

To provide a functional out-of-the-box experience, Procest includes seed data that sets up common Dutch government case types and their associated configurations.

## Included Seed Data

### Case Types
- **Bezwaar** -- Objection procedure (openbaar confidentiality).
- **Vergunning** -- Permit application (openbaar confidentiality).
- **Melding** -- Public space report (geheim confidentiality).
- **Vergunning aanvraag** (VRG-001) -- Environmental permit application.

### Status Types
Pre-defined statuses for the standard case lifecycle.

### Role Types
Standard roles such as behandelaar (handler), initiator, and belanghebbende (stakeholder).

### Decision Types
Common decision types for government case processing.

## Import Mechanism

Seed data is imported via the "Re-import configuration" button in the Settings > Case Types page. This reads JSON seed files bundled with the application and creates the corresponding OpenRegister objects.

## Status

This feature is implemented. Seed data is automatically imported on first install and can be re-imported via the admin settings.
26 changes: 26 additions & 0 deletions docs/features/bw-parafering.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# B&W Parafering (Executive Approval Workflow)

The B&W parafering feature implements the formal approval workflow for decisions that require authorization by the Board of Mayor and Aldermen (College van Burgemeester en Wethouders).

## Overview

In Dutch municipal government, certain decisions must be formally approved (geparafeerd) by the B&W (Board of Mayor and Aldermen). This feature provides a structured digital approval workflow.

## Planned Features

- **Approval routing** -- Route decisions through the required approval chain.
- **Digital signing** -- Support for digital parafering (initialing/signing) by authorized officials.
- **Mandate checking** -- Verify that the approver has the required mandate for the decision type.
- **Approval history** -- Track the full approval chain with timestamps and approver identities.
- **Rejection handling** -- Handle rejections with feedback and re-routing.
- **B&W agenda integration** -- Link approval items to B&W meeting agendas.
- **Delegation** -- Support for delegated approval authority.
- **Batch approval** -- Allow authorized officials to approve multiple items in a single session.

## Legal Context

Municipal decisions often require formal authorization at specific mandate levels. The B&W parafering workflow ensures compliance with the municipality's mandate register (mandaatregister).

## Status

This feature is defined in the spec at `openspec/specs/bw-parafering/spec.md` and is planned for future implementation.
25 changes: 25 additions & 0 deletions docs/features/case-dashboard-view.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Case Dashboard View

The case dashboard view shows the detail page for an individual case, accessible by clicking on a case from the My Work list or the Cases list.

![Case Dashboard View](../screenshots/case-dashboard-view.png)

## Overview

The case detail view is accessed via the URL pattern `/apps/procest/cases/{uuid}`. When navigating to a specific case (e.g., from the My Work list), the application loads the case detail page.

## Current State

The case detail view is under active development. The page loads at the correct route but the content area is currently blank, indicating that the case dashboard component is still being implemented.

## Planned Features

Based on the spec, the case dashboard view will include:

- **Case header** -- Title, identifier, status badge, and case type.
- **Status timeline** -- Visual representation of the case lifecycle stages.
- **Case details panel** -- Key properties such as dates, handler, initiator, and confidentiality level.
- **Tasks section** -- List of tasks associated with the case.
- **Documents section** -- Attached documents and correspondence.
- **Audit trail** -- History of status changes and actions taken on the case.
- **Actions** -- Buttons for common operations like changing status, adding tasks, or uploading documents.
27 changes: 27 additions & 0 deletions docs/features/case-definition-portability.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Case Definition Portability

The case definition portability feature enables exporting and importing case type configurations between Procest instances.

## Overview

Organizations should be able to share their case type definitions, workflows, and configurations with other Procest users. This feature provides standardized export/import capabilities.

## Planned Features

- **Export** -- Export case type definitions as portable JSON/YAML packages.
- **Import** -- Import case type definitions from other Procest instances.
- **Version management** -- Track versions of case type definitions.
- **Marketplace** -- Share case type definitions through a central catalog (e.g., via OpenCatalogi).
- **Dependency resolution** -- Handle dependencies between case types (e.g., sub-case types, related schemas).
- **Migration** -- Support upgrading case type definitions while preserving existing case data.
- **Validation** -- Validate imported definitions before applying them.

## Use Cases

- A municipality develops a specialized WOO case type and shares it with other municipalities.
- A software vendor provides pre-built case type packages for common government processes.
- An organization migrates case type definitions from a test environment to production.

## Status

This feature is defined in the spec at `openspec/specs/case-definition-portability/spec.md` and is planned for future implementation.
22 changes: 22 additions & 0 deletions docs/features/case-email-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Case Email Integration

The case email integration feature enables linking email communication to cases and creating cases from incoming emails.

## Overview

Email is a common communication channel in Dutch government case processing. This feature bridges email and case management to ensure all correspondence is properly filed and traceable.

## Planned Features

- **Incoming email to case** -- Automatically or manually create cases from incoming emails.
- **Email filing** -- Associate sent and received emails with existing cases.
- **Email templates** -- Predefined templates for common case correspondence.
- **Correspondence tracking** -- Track all email interactions within the case audit trail.
- **Attachment handling** -- Automatically attach email attachments as case documents.
- **Notification emails** -- Send automated status update emails to case participants.
- **Reply tracking** -- Link email replies back to the originating case.
- **Integration with Nextcloud Mail** -- Leverage the built-in Nextcloud Mail app for email handling.

## Status

This feature is defined in the spec at `openspec/specs/case-email-integration/spec.md` and is planned for future implementation.
Loading