diff --git a/web/src/views/app/IndexView.vue b/web/src/views/app/IndexView.vue
index 619ff6a0..4327e2ad 100644
--- a/web/src/views/app/IndexView.vue
+++ b/web/src/views/app/IndexView.vue
@@ -1,251 +1,23 @@
-
-
-
-
-
- {{ $gettext('Update Cache') }}
-
-
- {{
- $gettext(
- 'Before updating apps, it is strongly recommended to backup/snapshot first, so you can roll back immediately if there are any issues!'
- )
- }}
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/views/app/InstallView.vue b/web/src/views/app/InstallView.vue
new file mode 100644
index 00000000..e5bf3576
--- /dev/null
+++ b/web/src/views/app/InstallView.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+ {{ $gettext('Update Cache') }}
+
+
+ {{
+ $gettext(
+ 'Before updating apps, it is strongly recommended to backup/snapshot first, so you can roll back immediately if there are any issues!'
+ )
+ }}
+
+
+
+
diff --git a/web/src/views/app/route.ts b/web/src/views/app/route.ts
index 1e239424..ad0b9c37 100644
--- a/web/src/views/app/route.ts
+++ b/web/src/views/app/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/app',
component: Layout,
meta: {
- order: 90
+ order: 1
},
children: [
{
diff --git a/web/src/views/cert/IndexView.vue b/web/src/views/cert/IndexView.vue
index ae3cf3dc..42511826 100644
--- a/web/src/views/cert/IndexView.vue
+++ b/web/src/views/cert/IndexView.vue
@@ -93,9 +93,9 @@ onUnmounted(() => {
-
-
-
+
+
+
diff --git a/web/src/views/container/route.ts b/web/src/views/container/route.ts
index 4dae91cf..8b5288d2 100644
--- a/web/src/views/container/route.ts
+++ b/web/src/views/container/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/container',
component: Layout,
meta: {
- order: 40
+ order: 20
},
children: [
{
diff --git a/web/src/views/database/route.ts b/web/src/views/database/route.ts
index 8d819295..ad133bfd 100644
--- a/web/src/views/database/route.ts
+++ b/web/src/views/database/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/database',
component: Layout,
meta: {
- order: 2
+ order: 4
},
children: [
{
diff --git a/web/src/views/firewall/route.ts b/web/src/views/firewall/route.ts
index dc115e9e..e7a8e3c7 100644
--- a/web/src/views/firewall/route.ts
+++ b/web/src/views/firewall/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/firewall',
component: Layout,
meta: {
- order: 30
+ order: 40
},
children: [
{
diff --git a/web/src/views/monitor/route.ts b/web/src/views/monitor/route.ts
index 431b222a..95ff2f43 100644
--- a/web/src/views/monitor/route.ts
+++ b/web/src/views/monitor/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/monitor',
component: Layout,
meta: {
- order: 20
+ order: 30
},
children: [
{
diff --git a/web/src/views/project/IndexView.vue b/web/src/views/project/IndexView.vue
new file mode 100644
index 00000000..e9c0c773
--- /dev/null
+++ b/web/src/views/project/IndexView.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/views/project/route.ts b/web/src/views/project/route.ts
new file mode 100644
index 00000000..f4e4f0db
--- /dev/null
+++ b/web/src/views/project/route.ts
@@ -0,0 +1,25 @@
+import type { RouteType } from '~/types/router'
+
+const Layout = () => import('@/layout/IndexView.vue')
+
+export default {
+ name: 'project',
+ path: '/project',
+ component: Layout,
+ meta: {
+ order: 3
+ },
+ children: [
+ {
+ name: 'project-index',
+ path: '',
+ component: () => import('./IndexView.vue'),
+ meta: {
+ title: 'Projects',
+ icon: 'mdi:folder-multiple',
+ role: ['admin'],
+ requireAuth: true
+ }
+ }
+ ]
+} as RouteType
diff --git a/web/src/views/website/route.ts b/web/src/views/website/route.ts
index fdaca105..99b22fa2 100644
--- a/web/src/views/website/route.ts
+++ b/web/src/views/website/route.ts
@@ -7,7 +7,7 @@ export default {
path: '/website',
component: Layout,
meta: {
- order: 1
+ order: 2
},
children: [
{