+ Youโve successfully created a project with
+
+ Vite
+
+ +
+
+ Vue 3
+
+ . What's next?
+
+
+
+
+
diff --git a/client/src/components/TheWelcome.vue b/client/src/components/TheWelcome.vue
new file mode 100644
index 0000000..c9bb37b
--- /dev/null
+++ b/client/src/components/TheWelcome.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+ Documentation
+
+ Vueโs
+
+ official documentation
+
+ provides you with all information you need to get started.
+
+
+
+
+
+
+ Tooling
+
+ This project is served and bundled with
+
+ Vite
+
+ . The recommended IDE setup is
+
+ VSCode
+
+ +
+
+ Volar
+
+ . If you need to test your components and web pages, check out
+
+ Cypress
+
+ and
+
+ Cypress Component Testing
+
+ .
+
+
+
+ More instructions are available in
+ README.md
+ .
+
+
+
+
+
+
+ Ecosystem
+
+ Get official tools and libraries for your project:
+
+ Pinia
+
+ ,
+
+ Vue Router
+
+ ,
+
+ Vue Test Utils
+
+ , and
+
+ Vue Dev Tools
+
+ . If you need more resources, we suggest paying
+
+ Awesome Vue
+
+ a visit.
+
+
+
+
+
+
+ Community
+
+ Got stuck? Ask your question on
+
+ Vue Land
+
+ , our official Discord server, or
+
+ StackOverflow
+
+ . You should also subscribe to
+
+ our mailing list
+
+ and follow the official
+
+ @vuejs
+
+ twitter account for latest news in the Vue world.
+
+
+
+
+
+
+ Support Vue
+
+ As an independent project, Vue relies on community backing for its
+ sustainability. You can help us by
+
+ becoming a sponsor
+
+ .
+
+
diff --git a/client/src/components/WelcomeItem.vue b/client/src/components/WelcomeItem.vue
new file mode 100644
index 0000000..03cd61e
--- /dev/null
+++ b/client/src/components/WelcomeItem.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/__tests__/HelloWorld.spec.ts b/client/src/components/__tests__/HelloWorld.spec.ts
new file mode 100644
index 0000000..2533202
--- /dev/null
+++ b/client/src/components/__tests__/HelloWorld.spec.ts
@@ -0,0 +1,11 @@
+import { describe, it, expect } from 'vitest'
+
+import { mount } from '@vue/test-utils'
+import HelloWorld from '../HelloWorld.vue'
+
+describe('HelloWorld', () => {
+ it('renders properly', () => {
+ const wrapper = mount(HelloWorld, { props: { msg: 'Hello Vitest' } })
+ expect(wrapper.text()).toContain('Hello Vitest')
+ })
+})
diff --git a/client/src/components/icons/IconCommunity.vue b/client/src/components/icons/IconCommunity.vue
new file mode 100644
index 0000000..ea8ddef
--- /dev/null
+++ b/client/src/components/icons/IconCommunity.vue
@@ -0,0 +1,12 @@
+
+
+
diff --git a/client/src/components/icons/IconDocumentation.vue b/client/src/components/icons/IconDocumentation.vue
new file mode 100644
index 0000000..63a8534
--- /dev/null
+++ b/client/src/components/icons/IconDocumentation.vue
@@ -0,0 +1,12 @@
+
+
+
diff --git a/client/src/components/icons/IconEcosystem.vue b/client/src/components/icons/IconEcosystem.vue
new file mode 100644
index 0000000..385a202
--- /dev/null
+++ b/client/src/components/icons/IconEcosystem.vue
@@ -0,0 +1,12 @@
+
+
+
diff --git a/client/src/components/icons/IconSupport.vue b/client/src/components/icons/IconSupport.vue
new file mode 100644
index 0000000..7db961e
--- /dev/null
+++ b/client/src/components/icons/IconSupport.vue
@@ -0,0 +1,12 @@
+
+
+
diff --git a/client/src/components/icons/IconTooling.vue b/client/src/components/icons/IconTooling.vue
new file mode 100644
index 0000000..9511cd8
--- /dev/null
+++ b/client/src/components/icons/IconTooling.vue
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/client/src/main.ts b/client/src/main.ts
new file mode 100644
index 0000000..4fb24b7
--- /dev/null
+++ b/client/src/main.ts
@@ -0,0 +1,14 @@
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
+
+import App from './App.vue'
+import router from './router'
+
+import './assets/main.css'
+
+const app = createApp(App)
+
+app.use(createPinia())
+app.use(router)
+
+app.mount('#app')
diff --git a/client/src/router/index.ts b/client/src/router/index.ts
new file mode 100644
index 0000000..512d4d7
--- /dev/null
+++ b/client/src/router/index.ts
@@ -0,0 +1,23 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import HomeView from '@/views/HomeView.vue'
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: [
+ {
+ path: '/',
+ name: 'home',
+ component: HomeView,
+ },
+ {
+ path: '/about',
+ name: 'about',
+ // route level code-splitting
+ // this generates a separate chunk (About.[hash].js) for this route
+ // which is lazy-loaded when the route is visited.
+ component: () => import('../views/AboutView.vue'),
+ },
+ ],
+})
+
+export default router
diff --git a/client/src/stores/counter.ts b/client/src/stores/counter.ts
new file mode 100644
index 0000000..b6757ba
--- /dev/null
+++ b/client/src/stores/counter.ts
@@ -0,0 +1,12 @@
+import { ref, computed } from 'vue'
+import { defineStore } from 'pinia'
+
+export const useCounterStore = defineStore('counter', () => {
+ const count = ref(0)
+ const doubleCount = computed(() => count.value * 2)
+ function increment() {
+ count.value++
+ }
+
+ return { count, doubleCount, increment }
+})
diff --git a/client/src/views/AboutView.vue b/client/src/views/AboutView.vue
new file mode 100644
index 0000000..756ad2a
--- /dev/null
+++ b/client/src/views/AboutView.vue
@@ -0,0 +1,15 @@
+
+