How olvid-io/nextcloud-app works
Olvid is a Nextcloud app that provides an administrative UI for managing users and groups, plus directory and binary engine APIs for Olvid clients. Admins navigate the Vue views and use detail panels to manage identities and groups; the frontend calls the app API, whose handlers use Nextcloud context and persistent Olvid records. Client-facing directory routes dispatch to directory and engine handlers. Event listeners and synchronization tasks form supporting lifecycle and server-sync branches. Several route, cron, and storage implementations were not sampled, so uncertain links are omitted.
Main entry points: App.vue Admin shell · UserDetailsSidebar.vue User detail panel · DirectoryApiController.php Directory routes · OlvidContext.php Runtime context
Components 26
Admin interface
- UI bootstrap
src/main.js - Admin shell
src/App.vue - Page router
src/router.ts - Management views
src/views - User detail panel
src/components/UserDetailsSidebar.vue - Group detail panel
src/components/GroupDetailsSidebar.vue - Identity dialogs
src/components/UnlinkIdentityModal.vue - Magic link dialog
src/components/MagicLinkModal.vue - Avatar display
src/components/OlvidAvatar.vue
App management API
- Management routes
lib/Controller/AppApiController.php - User and group handlers
lib/Api/App
Client APIs
- Directory routes
lib/Controller/DirectoryApiController.php - Directory handlers
lib/Api/Directory - Engine handlers
lib/Api/Engine - Binary API base
lib/Api/Engine/AbstractEngineApiHandler.php
Domain and persistence
- Runtime context
lib/Utils/Context/OlvidContext.php - Database context
lib/Utils/Context/OlvidContextDatabase.php - Record mappers
lib/Db - Group record
lib/Db/OlvidGroup.php - App configuration
lib/Utils/OlvidAppConfigManager.php
Lifecycle and sync
- App registration
lib/AppInfo/Application.php - User and group events
lib/Listener - Sync tasks
lib/Cron
Other components
- Nextcloud admin
- Olvid client
- Olvid server
Connections 25
- Nextcloud admin → UI bootstrap: opens app
src/main.js - UI bootstrap → Admin shell: mounts
src/main.js - UI bootstrap → Page router: loads routes
src/main.js - Page router → Management views: routes to
src/router.ts - Admin shell → User detail panel: renders
src/App.vue - Admin shell → Group detail panel: renders
src/App.vue - User detail panel → Identity dialogs: renders
src/components/UserDetailsSidebar.vue - User detail panel → Magic link dialog: renders
src/components/UserDetailsSidebar.vue - User detail panel → Avatar display: renders
src/components/UserDetailsSidebar.vue - Group detail panel → Avatar display: renders
src/components/GroupDetailsSidebar.vue - Admin shell → Management routes: fetches status
src/App.vue - Management routes → User and group handlers: delegates to
lib/Controller/AppApiController.php - Management routes → Runtime context: uses context
lib/Controller/AppApiController.php - Directory routes → Directory handlers: dispatches to
lib/Controller/DirectoryApiController.php - Directory routes → Engine handlers: dispatches to
lib/Controller/DirectoryApiController.php - Olvid client → Directory routes: calls routes
- Engine handlers → Binary API base: extends base
lib/Api/Engine/GetSession.php - Binary API base → Runtime context: receives context
lib/Api/Engine/AbstractEngineApiHandler.php - Runtime context → Database context: exposes database
lib/Utils/Context/OlvidContext.php - Database context → Record mappers: holds mappers
lib/Utils/Context/OlvidContextDatabase.php - Group record → Runtime context: builds signed data
lib/Db/OlvidGroup.php - Directory routes → App configuration: uses config
lib/Controller/DirectoryApiController.php - App registration → User and group events: registers listeners
lib/AppInfo/Application.php - App registration → App configuration: registers settings
lib/AppInfo/Application.php - Sync tasks → Olvid server: synchronizes