diff --git a/frontend/src/App.vue b/frontend/src/App.vue
new file mode 100644
index 0000000000..349912d43f
--- /dev/null
+++ b/frontend/src/App.vue
@@ -0,0 +1,62 @@
+
+
+
+
diff --git a/frontend/src/env.d.ts b/frontend/src/env.d.ts
new file mode 100644
index 0000000000..12dcd189fe
--- /dev/null
+++ b/frontend/src/env.d.ts
@@ -0,0 +1,7 @@
+declare namespace NodeJS {
+ interface ProcessEnv {
+ NODE_ENV: string;
+ VUE_ROUTER_MODE: 'hash' | 'history' | 'abstract' | undefined;
+ VUE_ROUTER_BASE: string | undefined;
+ }
+}
diff --git a/frontend/src/index.template.html b/frontend/src/index.template.html
new file mode 100644
index 0000000000..898cf94bef
--- /dev/null
+++ b/frontend/src/index.template.html
@@ -0,0 +1,43 @@
+
+
+
+ <%= productName %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/quasar.d.ts b/frontend/src/quasar.d.ts
new file mode 100644
index 0000000000..e9a276aded
--- /dev/null
+++ b/frontend/src/quasar.d.ts
@@ -0,0 +1,7 @@
+// Forces TS to apply `@quasar/app` augmentations of `quasar` package
+// Removing this would break `quasar/wrappers` imports as those typings are declared
+// into `@quasar/app`
+// As a side effect, since `@quasar/app` reference `quasar` to augment it,
+// this declaration also apply `quasar` own
+// augmentations (eg. adds `$q` into Vue component context)
+///
diff --git a/frontend/src/shims-vue.d.ts b/frontend/src/shims-vue.d.ts
new file mode 100644
index 0000000000..fa41d955b3
--- /dev/null
+++ b/frontend/src/shims-vue.d.ts
@@ -0,0 +1,7 @@
+// Mocks all files ending in `.vue` showing them as plain Vue instances
+/* eslint-disable */
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue';
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
+}
\ No newline at end of file