WebUI Vue
The Vue-based WebUI lives in webui-vue/ and is currently documented as
a technical preview that exists in parallel with the classic PHP-based WebUI
in webui/.
Coexistence model
The repository currently contains two different WebUI implementations:
webui/for the classic PHP-based WebUIwebui-vue/for the Vue-based technical preview
Documentation, packaging, and operational guidance should reflect that both variants currently coexist. Changes to the Vue WebUI should not implicitly assume that it has already replaced the classic WebUI everywhere.
Repository layout
The most relevant parts of the Vue WebUI are:
webui-vue/src/for the application sourcewebui-vue/src/pages/for page-level route componentswebui-vue/src/components/for reusable UI componentswebui-vue/src/composables/for shared page and data-loading logicwebui-vue/src/stores/for Pinia storeswebui-vue/src/generated/for generated version and translation datawebui-vue/tests/unit/for unit testswebui-vue/tests/e2e/for Playwright-based end-to-end tests
Build and installation
The installable SPA bundle is generated from the repository root with:
cmake --build <builddir> --target bareos-webui-vue-build
The build logic is implemented in:
webui-vue/CMakeLists.txtwebui-vue/build-dist.cmake
The installed Apache configuration is generated from:
webui-vue/install/apache/bareos-webui-vue.conf.in
The SPA is installed below $CMAKE_INSTALL_FULL_DATAROOTDIR/bareos-webui-vue
and exposed by Apache below /bareos-webui-vue.
Runtime architecture
Unlike the classic PHP WebUI, the Vue WebUI does not talk to the Director through PHP. Instead it uses bareos-webui-proxy for WebSocket-based communication.
The default Apache configuration:
serves the SPA from
/bareos-webui-vuerewrites SPA routes back to
index.htmlproxies
/wsto bareos-webui-proxy on port 9104
Testing
Typical local validation commands are:
cd webui-vue && npm run build
cd webui-vue && npm run test:unit
ctest --test-dir cmake-build --output-on-failure -R '^webui-vue:'
The browser-based system tests use the shared WebUI Vue test setup under:
systemtests/tests/webui-vue-common/
Translations
The Vue WebUI currently reuses the legacy WebUI locale sources and generated catalog data.
Relevant files are:
webui-vue/scripts/generate-webui-i18n.mjswebui-vue/src/generated/webui-locales.jswebui-vue/src/generated/webui-messages.jswebui/module/Application/language/
To regenerate the committed Vue translation catalog files, run:
cd webui-vue && npm run generate:i18n
Documentation guidance
When documenting Vue WebUI work:
add operator-facing documentation to the introduction/tutorial manual
add implementation and workflow details here in the developer guide
clearly mark the Vue WebUI as a technical preview while it coexists with the classic PHP WebUI
avoid wording that implies the classic WebUI no longer exists unless that product decision has changed