diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json
new file mode 100644
index 0000000..29a2402
--- /dev/null
+++ b/frontend/.prettierrc.json
@@ -0,0 +1,6 @@
+{
+ "$schema": "https://json.schemastore.org/prettierrc",
+ "semi": false,
+ "singleQuote": true,
+ "printWidth": 100
+}
diff --git a/frontend/index.html b/frontend/index.html
new file mode 100644
index 0000000..0b1cda6
--- /dev/null
+++ b/frontend/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Goshorly
+
+
+
+
+
+
diff --git a/frontend/jsconfig.json b/frontend/jsconfig.json
new file mode 100644
index 0000000..5a1f2d2
--- /dev/null
+++ b/frontend/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/frontend/package.json b/frontend/package.json
new file mode 100644
index 0000000..b32fd91
--- /dev/null
+++ b/frontend/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "frontend",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview",
+ "format": "prettier --write src/"
+ },
+ "dependencies": {
+ "@tailwindcss/vite": "^4.1.3",
+ "tailwindcss": "^4.1.3",
+ "vue": "^3.5.13",
+ "vue-router": "^4.5.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.2.3",
+ "daisyui": "^5.0.17",
+ "prettier": "3.5.3",
+ "vite": "^6.2.4",
+ "vite-plugin-vue-devtools": "^7.7.2"
+ }
+}
diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico
new file mode 100644
index 0000000..df36fcf
Binary files /dev/null and b/frontend/public/favicon.ico differ
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
new file mode 100644
index 0000000..f09c37a
--- /dev/null
+++ b/frontend/src/App.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/assets/main.css b/frontend/src/assets/main.css
new file mode 100644
index 0000000..74d8662
--- /dev/null
+++ b/frontend/src/assets/main.css
@@ -0,0 +1,2 @@
+@import "tailwindcss";
+@plugin "daisyui";
\ No newline at end of file
diff --git a/frontend/src/components/Navbar.vue b/frontend/src/components/Navbar.vue
new file mode 100644
index 0000000..ad1b0e8
--- /dev/null
+++ b/frontend/src/components/Navbar.vue
@@ -0,0 +1,3 @@
+
+ Component Navbar
+
\ No newline at end of file
diff --git a/frontend/src/main.js b/frontend/src/main.js
new file mode 100644
index 0000000..5a5dbdb
--- /dev/null
+++ b/frontend/src/main.js
@@ -0,0 +1,11 @@
+import './assets/main.css'
+
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from './router'
+
+const app = createApp(App)
+
+app.use(router)
+
+app.mount('#app')
diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js
new file mode 100644
index 0000000..25fe092
--- /dev/null
+++ b/frontend/src/router/index.js
@@ -0,0 +1,20 @@
+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',
+ component: () => import('../views/AboutView.vue'),
+ },
+ ],
+})
+
+export default router
diff --git a/frontend/src/views/AboutView.vue b/frontend/src/views/AboutView.vue
new file mode 100644
index 0000000..7aba496
--- /dev/null
+++ b/frontend/src/views/AboutView.vue
@@ -0,0 +1,3 @@
+
+ This is an about page
+
diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue
new file mode 100644
index 0000000..9789b9a
--- /dev/null
+++ b/frontend/src/views/HomeView.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
new file mode 100644
index 0000000..1f5300c
--- /dev/null
+++ b/frontend/vite.config.js
@@ -0,0 +1,20 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import tailwindcss from "@tailwindcss/vite";
+import vue from '@vitejs/plugin-vue'
+import vueDevTools from 'vite-plugin-vue-devtools'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [
+ tailwindcss(),
+ vue(),
+ vueDevTools(),
+ ],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ },
+ },
+})