No description
Find a file
Rikdekker 8f21553063 Add upstream proposal docs and demo for Calendar room finder
Documentation for NC Calendar PR #7996:
- PROPOSAL.md: feature pitch with problem statement and comparison table
- TECHNICAL.md: code-level change documentation for reviewers
- SPLITTING-STRATEGY.md: plan for breaking into reviewable PRs
- Compressed demo GIF (4MB) showing room finder interaction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:47:02 +01:00
.gitea/workflows Add Exchange sync integration, performance fixes, and PHPUnit test suite 2026-02-18 15:44:35 +01:00
appinfo Merge branch 'exchange-sync-unit-tests' 2026-02-25 09:35:23 +01:00
css NC33 support, fix admin settings layout, i18n, and full documentation 2026-02-15 13:41:34 +01:00
docs Merge branch 'exchange-sync-unit-tests' 2026-02-25 09:35:23 +01:00
img Initial commit: Nextcloud Room Booking App (CalDAV-native) 2026-02-09 14:51:56 +01:00
l10n Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
lib Merge branch 'exchange-sync-unit-tests' 2026-02-25 09:35:23 +01:00
nc-calendar-patch Add upstream proposal docs and demo for Calendar room finder 2026-03-02 17:47:02 +01:00
screenshots Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
src Merge branch 'exchange-sync-unit-tests' 2026-02-25 09:35:23 +01:00
templates Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
tests Update testverslag: 186 tests, add Exchange conflict exclusion section 2026-02-25 09:42:41 +01:00
.gitignore Externalize deploy credentials into deploy.conf 2026-02-19 18:25:32 +01:00
CHANGELOG.md Improve MS365 import: fix missing email, add address/device/sync support 2026-02-25 08:07:21 +01:00
CLAUDE.md Add Exchange sync integration, performance fixes, and PHPUnit test suite 2026-02-18 15:44:35 +01:00
composer.json Prepare for App Store: fix version, license, PHP requirement, and telemetry 2026-02-16 14:30:02 +01:00
deploy-calendar.sh Add Room Finder modal to Nextcloud Calendar patch 2026-02-25 15:49:23 +01:00
deploy-tst.sh Clean up calendar patch and add tst deploy script 2026-02-25 14:54:06 +01:00
deploy.conf.example Externalize deploy credentials into deploy.conf 2026-02-19 18:25:32 +01:00
deploy.sh Externalize deploy credentials into deploy.conf 2026-02-19 18:25:32 +01:00
fix-locations.sh Add postal code field, screenshots in docs, and location fix script 2026-02-15 16:19:40 +01:00
LICENSE Prepare for App Store: fix version, license, PHP requirement, and telemetry 2026-02-16 14:30:02 +01:00
package.json Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
phpunit.xml Add Exchange sync integration, performance fixes, and PHPUnit test suite 2026-02-18 15:44:35 +01:00
README.md Prepare for App Store: fix version, license, PHP requirement, and telemetry 2026-02-16 14:30:02 +01:00
RELEASE_CHECKLIST.md Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
webpack.config.js Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00

RoomVox

CalDAV-native room booking for Nextcloud. Rooms appear as bookable resources in any calendar app — no separate booking interface needed.

Room overview

Features

  • CalDAV Resources — Rooms show up in Nextcloud Calendar, Apple Calendar, Outlook, eM Client, Thunderbird
  • Auto-accept / Approval workflow — Per-room setting: instant confirmation or manager approval
  • Conflict detection — Automatic overlap checking, conflicting bookings are declined
  • Permission system — Viewer / Booker / Manager roles per room, user and group based
  • Room groups — Organize rooms into groups with shared permissions
  • Availability rules — Restrict booking hours per room (e.g., weekdays 08:0018:00)
  • Booking horizon — Limit how far in advance rooms can be booked
  • Email notifications — Booking confirmations, decline notices, approval requests with iCalendar attachments
  • Per-room SMTP — Each room can have its own SMTP config (passwords encrypted via ICrypto)
  • Custom room types — Define and manage room types (meeting room, studio, lecture hall, etc.)
  • Public REST API — Bearer token API for external integrations (displays, kiosks, digital signage)
  • CSV Import/Export — Bulk room management, with MS365/Exchange format support
  • Client compatibility — Fixes for iOS (CUTYPE=INDIVIDUAL) and eM Client (LOCATION-only booking)
  • No database — All configuration stored via Nextcloud's IAppConfig

Screenshots

Room Management

Room overview with groups, search, and status columns

Booking Overview

Booking management with stats, filters, and status

Room Browser (Calendar Integration)

Visual room browser with building and facility filters

Room Editor

Room editor with capacity, type, location, and facilities

CSV Import

CSV import preview with format detection and validation

Email Notifications

Booking confirmation email with Accept/Decline buttons

Requirements

  • Nextcloud 3233
  • PHP 8.2+

Installation

From Nextcloud App Store

  1. Go to Apps in your Nextcloud instance
  2. Search for RoomVox
  3. Click Install

From Source

# Clone into Nextcloud apps directory
cd /var/www/nextcloud/apps/
git clone https://github.com/nextcloud/RoomVox.git roomvox

# Install PHP dependencies
cd roomvox
composer install --no-dev

# Build frontend
npm ci
npm run build

# Enable the app
sudo -u www-data php /var/www/nextcloud/occ app:enable roomvox

Prerequisites

  • SMTP must be configured in Nextcloud (Settings > Administration > Basic settings > Email server)
  • sendInvitations must be enabled for iMIP calendar invitations:
sudo -u www-data php /var/www/nextcloud/occ config:app:set dav sendInvitations --value yes

How It Works

  1. Admin creates rooms via the admin panel (Settings > Administration > RoomVox)
  2. Rooms appear as bookable resources in any CalDAV-compatible calendar app
  3. Users book rooms by adding them to calendar events
  4. RoomVox handles everything — scheduling, conflict detection, permissions, and notifications

Technical Highlights

Feature Description
CalDAV native Rooms are standard CalDAV resources, compatible with any calendar app
Zero database All data stored in Nextcloud's IAppConfig — no migrations needed
Smart scheduling Priority 99 Sabre plugin handles iTIP before Nextcloud's default handler
Permission inheritance Room groups share permissions with their rooms
Client fixes Automatic workarounds for iOS and eM Client quirks

CalDAV Client Compatibility

Client Status Notes
Nextcloud Calendar Full support Optional visual room browser via calendar patch
Apple Calendar (macOS/iOS) Full support Auto-fix for CUTYPE=INDIVIDUAL
Microsoft Outlook Full support Via CalDAV account
Thunderbird Full support Via CalDAV account
eM Client Full support Auto-fix for LOCATION-only bookings

Development

npm run dev       # Development build
npm run watch     # Watch mode with auto-rebuild
npm run build     # Production build

Documentation

Full documentation is available in the docs/ directory:

License

AGPL-3.0-or-later

Authors

Sam Ditmeijer & Rik Dekker