No description
  • PHP 58.5%
  • Vue 28.5%
  • JavaScript 11.3%
  • Shell 1.7%
Find a file
Rikdekker d8c7682f89 Release v1.1.2 — Nextcloud 34 compatibility
Bumps max-version in appinfo/info.xml from 33 to 34. No code changes
required: Application.php is Bootstrap-based, all \OC::$server->get*()
service-locator calls were eliminated in prior releases, logging is PSR-3
throughout, getAppValue() calls have defaults, and DAV registration uses
registerCalendarRoomBackend() (the NC 30+ API). Verified end-to-end on a
Nextcloud 34.0.0 development instance: settings panel renders, internal
API returns rooms (HTTP 200), public API rejects unauthenticated callers
(HTTP 401 via ApiTokenMiddleware), no roomvox entries in the error log.

Also repairs pre-existing test rot uncovered while gating the release:

- ImportExportServiceTest, PerformanceTest: constructor signature drift.
  ImportExportService gained a third IAppConfig argument when the
  configurable-facilities feature shipped in v0.4.0; the tests still
  instantiated it with the v0.3.x two-arg signature, causing 16 errors.
- SchedulingPluginRequestTest: mocked PermissionService::getPermissions
  but the plugin calls getEffectivePermissions (which folds in group
  inheritance). The mock returned null, the plugin's hasPermissions
  check went false, and scheduleStatus ended up '1.2' (delivered) where
  the test expected '3.7' (refused).
- ImportExportServiceTest facility normalization: assertions hard-coded
  the legacy IDs ('video-conference', 'display-screen', 'audio-system')
  but DEFAULT_FACILITY_IDS uses the short canonical form ('videoconf',
  'display', 'audio') and the alias map points at the canonical IDs.

All 260 tests now pass.
2026-06-12 12:04:36 +02:00
.gitea/workflows ci: fix notify-website endpoint for Gitea 1.25 2026-06-02 15:01:19 +02:00
appinfo Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02:00
css NC33 support, fix admin settings layout, i18n, and full documentation 2026-02-15 13:41:34 +01:00
docs docs: restructure to match IntroVox/IntraVox/MetaVox layout 2026-06-02 07:58:37 +02:00
img Initial commit: Nextcloud Room Booking App (CalDAV-native) 2026-02-09 14:51:56 +01:00
l10n Release v1.1.1 — Bug fixes (recurring cancel, public API gaps, form save) 2026-05-26 09:38:05 +02:00
lib Release v1.1.1 — Bug fixes (recurring cancel, public API gaps, form save) 2026-05-26 09:38:05 +02:00
nc-calendar-patch Release v1.1.0 — Bug fixes + manager view + i18n 2026-05-18 19:49:21 +02:00
screenshots Release v1.0.3 - Permission fixes and notifications 2026-04-14 17:36:02 +02:00
src Release v1.1.1 — Bug fixes (recurring cancel, public API gaps, form save) 2026-05-26 09:38:05 +02:00
templates Release v0.4.0 - Configurable facilities, Personal Settings & import fixes 2026-02-20 21:25:17 +01:00
tests Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02:00
.gitignore Externalize deploy credentials into deploy.conf 2026-02-19 18:25:32 +01:00
CHANGELOG.md Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02:00
CLAUDE.md Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02: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 Release v1.0.2 - Bug fixes 2026-04-10 13:02:27 +02: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 v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02:00
phpunit.xml Add Exchange sync integration, performance fixes, and PHPUnit test suite 2026-02-18 15:44:35 +01:00
README.md Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02:00
RELEASE_CHECKLIST.md Release v1.1.2 — Nextcloud 34 compatibility 2026-06-12 12:04:36 +02: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 3234
  • 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