diff --git a/containers/libreportal/frontend/js/components/backup/backup-page.js b/containers/libreportal/frontend/features/backup/backup-page.js
similarity index 100%
rename from containers/libreportal/frontend/js/components/backup/backup-page.js
rename to containers/libreportal/frontend/features/backup/backup-page.js
diff --git a/containers/libreportal/frontend/js/components/backup/backup-schema.js b/containers/libreportal/frontend/features/backup/backup-schema.js
similarity index 100%
rename from containers/libreportal/frontend/js/components/backup/backup-schema.js
rename to containers/libreportal/frontend/features/backup/backup-schema.js
diff --git a/containers/libreportal/frontend/css/backup.css b/containers/libreportal/frontend/features/backup/backup.css
similarity index 100%
rename from containers/libreportal/frontend/css/backup.css
rename to containers/libreportal/frontend/features/backup/backup.css
diff --git a/containers/libreportal/frontend/features/backup/index.js b/containers/libreportal/frontend/features/backup/index.js
index 76dcef7..64e3551 100644
--- a/containers/libreportal/frontend/features/backup/index.js
+++ b/containers/libreportal/frontend/features/backup/index.js
@@ -14,9 +14,9 @@ LP.features.register({
routes: ['/backup', '/backup*'],
// Controllers the feature needs; lazy-loaded on first mount (idempotent).
scripts: [
- '/js/components/backup/backup-schema.js',
- '/js/components/backup/backup-page.js',
- '/js/components/backup/backup-app-card.js',
+ '/features/backup/backup-schema.js',
+ '/features/backup/backup-page.js',
+ '/shared/js/backup-app-card.js',
],
async mount(ctx) {
diff --git a/containers/libreportal/frontend/index.html b/containers/libreportal/frontend/index.html
index 1cc98ad..c77d890 100755
--- a/containers/libreportal/frontend/index.html
+++ b/containers/libreportal/frontend/index.html
@@ -18,7 +18,7 @@
-
+
diff --git a/containers/libreportal/frontend/js/spa.js b/containers/libreportal/frontend/js/spa.js
index 7c3f2a0..daeb384 100755
--- a/containers/libreportal/frontend/js/spa.js
+++ b/containers/libreportal/frontend/js/spa.js
@@ -358,8 +358,8 @@ class LibrePortalSPAClean {
// backup-page.js + backup-app-card.js are loaded on first navigation.
// loadScript is idempotent — subsequent /backup navigations are no-ops.
await Promise.all([
- this.loadScript('/js/components/backup/backup-page.js'),
- this.loadScript('/js/components/backup/backup-app-card.js')
+ this.loadScript('/features/backup/backup-page.js'),
+ this.loadScript('/shared/js/backup-app-card.js')
]);
const html = await this.fetchContent('/html/backup-content.html');
this.loadContent(html, 'Backups');
diff --git a/containers/libreportal/frontend/js/system/system-loader.js b/containers/libreportal/frontend/js/system/system-loader.js
index 047adc9..abc869a 100755
--- a/containers/libreportal/frontend/js/system/system-loader.js
+++ b/containers/libreportal/frontend/js/system/system-loader.js
@@ -206,7 +206,7 @@ class SystemLoader {
scripts: [
'/features/apps/port-manager.js',
'/shared/task/task-manager.js', // Add TaskManager for backup functionality
- '/js/components/backup/backup-app-card.js',
+ '/shared/js/backup-app-card.js',
'/features/apps/services-manager.js',
'/features/apps/tools-manager.js',
'/features/apps/routing-manager.js',
diff --git a/containers/libreportal/frontend/js/components/backup/backup-app-card.js b/containers/libreportal/frontend/shared/js/backup-app-card.js
similarity index 100%
rename from containers/libreportal/frontend/js/components/backup/backup-app-card.js
rename to containers/libreportal/frontend/shared/js/backup-app-card.js