mirror of
https://github.com/nextcloud/RoomVox.git
synced 2026-06-14 12:14:09 +02:00
No description
- PHP 58.5%
- Vue 28.5%
- JavaScript 11.3%
- Shell 1.7%
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.
|
||
|---|---|---|
| .gitea/workflows | ||
| appinfo | ||
| css | ||
| docs | ||
| img | ||
| l10n | ||
| lib | ||
| nc-calendar-patch | ||
| screenshots | ||
| src | ||
| templates | ||
| tests | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| composer.json | ||
| deploy-calendar.sh | ||
| deploy-tst.sh | ||
| deploy.conf.example | ||
| deploy.sh | ||
| fix-locations.sh | ||
| LICENSE | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| RELEASE_CHECKLIST.md | ||
| webpack.config.js | ||
RoomVox
CalDAV-native room booking for Nextcloud. Rooms appear as bookable resources in any calendar app — no separate booking interface needed.
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:00–18: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
Booking Overview
Room Browser (Calendar Integration)
Room Editor
CSV Import
Email Notifications
Requirements
- Nextcloud 32–34
- PHP 8.2+
Installation
From Nextcloud App Store
- Go to Apps in your Nextcloud instance
- Search for RoomVox
- 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)
sendInvitationsmust 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
- Admin creates rooms via the admin panel (Settings > Administration > RoomVox)
- Rooms appear as bookable resources in any CalDAV-compatible calendar app
- Users book rooms by adding them to calendar events
- 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:
- Documentation Hub — full documentation index
- Getting Started — Create your first room in 5 minutes
- User Overview — What RoomVox is, how rooms work
- Booking Rooms — Per-client booking guides
- Admin Guide — Day-to-day administration
- Installation — Requirements + setup
- Approval Workflow — Tentative bookings and manager approval
- Comparison vs. Calendar Resource Management — Feature comparison
- Architecture — Technical overview
- API Reference — REST API endpoints
License
AGPL-3.0-or-later
Authors
Sam Ditmeijer & Rik Dekker





