diff --git a/cypress/e2e/NotFoundView.cy.ts b/cypress/e2e/Exception/NotFoundView.cy.ts
similarity index 100%
rename from cypress/e2e/NotFoundView.cy.ts
rename to cypress/e2e/Exception/NotFoundView.cy.ts
diff --git a/cypress/e2e/LeaderboardView.cy.ts b/cypress/e2e/Leaderboard/LeaderboardView.cy.ts
similarity index 100%
rename from cypress/e2e/LeaderboardView.cy.ts
rename to cypress/e2e/Leaderboard/LeaderboardView.cy.ts
diff --git a/src/components/BaseComponents/FooterComponent.vue b/src/components/BaseComponents/BaseFooter.vue
similarity index 100%
rename from src/components/BaseComponents/FooterComponent.vue
rename to src/components/BaseComponents/BaseFooter.vue
diff --git a/src/components/Buttons/Button1.vue b/src/components/BaseComponents/Buttons/BaseButton.vue
similarity index 100%
rename from src/components/Buttons/Button1.vue
rename to src/components/BaseComponents/Buttons/BaseButton.vue
diff --git a/src/components/Buttons/__tests__/Button1.spec.ts b/src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts
similarity index 87%
rename from src/components/Buttons/__tests__/Button1.spec.ts
rename to src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts
index e1c2a39182663c7d37365f9973ff4953fe8d1768..8e7c84193f26f460848744d1266f26d07d61e5c4 100644
--- a/src/components/Buttons/__tests__/Button1.spec.ts
+++ b/src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts
@@ -1,6 +1,6 @@
 import { describe, it, expect } from 'vitest'
 import { mount } from '@vue/test-utils'
-import ButtonComponent from '@/components/Buttons/Button1.vue'
+import ButtonComponent from '../BaseButton.vue'
 
 describe('ButtonComponent', () => {
   it('displays the passed buttonText prop', () => {
diff --git a/src/components/BaseComponents/FooterAlternative.vue b/src/components/BaseComponents/FooterAlternative.vue
deleted file mode 100644
index 719ebdbef91acdb77d19a2eff55e443d37e1d906..0000000000000000000000000000000000000000
--- a/src/components/BaseComponents/FooterAlternative.vue
+++ /dev/null
@@ -1,137 +0,0 @@
-<script setup lang="ts">
-import '@fortawesome/fontawesome-free/css/all.css'
-import { RouterLink } from 'vue-router'
-import {logDOM} from "@testing-library/vue";
-
-
-
-
-const ifNotLoggedInLogin  = () => {
- /* if (useUserInfoStore.isActive) {
-    return '/discover'
-  }
-  return '/login'*/
-  return '/login'
-}
-
-const ifLoggedInDiscover = () => {
-  /*if (store.isActive) {
-    return '/discover'
-  }
-  return '/'*/
-  return '/'
-}
-
-const ifLoggedInReset = () => {
-  /*if (store.isActive) {
-    store.resetAll()
-  }*/
-  return '/login'
-}
-</script>
-
-<template>
-  <div class="footer footer-wrapper fixed-bottom" style="background-color: #3B71CA">
-
-    <div class="links-wrapper">
-      <p class="links-header">Links</p>
-      <div class="links-container">
-        <RouterLink class="router" id="home" :to="ifLoggedInDiscover">Home</RouterLink>
-        <RouterLink class="router" id="discover" :to="ifNotLoggedInLogin()">Discover</RouterLink>
-        <RouterLink class="router" id="login" to="/login" @click="ifLoggedInReset()">Login</RouterLink>
-      </div>
-    </div>
-
-    <div class="support-wrapper">
-      <p class="support-header">Support us</p>
-      <div class="support-container">
-        <a href="https://twitter.com" target="_blank">
-          <i class="fab fa-twitter"></i>
-          Twitter
-        </a>
-        <a href="https://instagram.com" target="_blank">
-          <i class="fab fa-instagram"></i>
-           Instagram
-        </a>
-        <a href="https://facebook.com" target="_blank">
-          <i class="fab fa-facebook"></i>
-           Facebook
-        </a>
-        <a href="https://discord.gg" target="_blank">
-          <i class="fab fa-discord"></i>
-           Discord
-        </a>
-      </div>
-    </div>
-
-    <div class="info-wrapper">
-      <p class="info-header">Company</p>
-      <div class="info-container">
-        <RouterLink class="router" to="/about-us">About us</RouterLink>
-        <RouterLink class="router" to="/privacy-policy">Privacy</RouterLink>
-      </div>
-    </div>
-
-  </div>
-</template>
-
-<style scoped>
-:root {
-  --footer-margin: 2rem
-}
-
-.footer-wrapper {
-  width: 100%;
-  display: grid;
-  grid-template-columns: 1fr 1fr 1fr;
-  background-size: cover;
-  justify-content: center;
-}
-
-.links-header, .support-header, .info-header {
-  font-family: Inter,sans-serif;
-  font-size: 26px;
-  font-weight: 600;
-  color: #FFFFFF;
-  margin: var(--footer-margin);
-  padding-left: 10px;
-}
-
-.links-container, .support-container, .info-container {
-  display: flex;
-  flex-direction: column;
-  margin: var(--footer-margin);
-}
-
-.support-container a i {
-  margin-right: 0.7rem;
-}
-
-.router, .support-container a {
-  width: 100%;
-  height: 39px;
-  font-family: 'Inter', serif;
-  font-weight: 500;
-  font-size: 18px;
-  text-decoration: none;
-  border-radius: 10px;
-  align-content: center;
-  color: #FFFFFF;
-  border: 1px solid #3B71CA;
-  padding-left: 10px;
-}
-
-.router:hover, .support-container a:hover {
-  background-color: #FFFFFF;
-  color: #3B71CA;
-  font-weight: 500;
-  font-size: 18px;
-}
-
-@media (max-width: 588px) {
-  .footer-wrapper {
-    display: flex;
-    flex-direction: column;
-  }
-}
-</style>
diff --git a/src/components/InputFields/BaseInput.vue b/src/components/BaseComponents/Input/BaseInput.vue
similarity index 100%
rename from src/components/InputFields/BaseInput.vue
rename to src/components/BaseComponents/Input/BaseInput.vue
diff --git a/src/components/InputFields/__tests__/BaseInput.spec.ts b/src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts
similarity index 89%
rename from src/components/InputFields/__tests__/BaseInput.spec.ts
rename to src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts
index 90f881ef89744bd7c300e04ddc9ed3bf19bc64f8..b795f41627a01c0d19fc748f40a5619194b4b2a4 100644
--- a/src/components/InputFields/__tests__/BaseInput.spec.ts
+++ b/src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts
@@ -1,6 +1,6 @@
 import { describe, it, expect } from 'vitest'
 import { mount } from '@vue/test-utils';
-import InputField from '@/components/InputFields/BaseInput.vue';
+import InputField from '../BaseInput.vue';
 
 describe('InputField.vue', () => {
   it('emits inputChangeEvent when input event is triggered', async () => {
diff --git a/src/components/BaseComponents/MenuComponent.vue b/src/components/BaseComponents/NavBar.vue
similarity index 100%
rename from src/components/BaseComponents/MenuComponent.vue
rename to src/components/BaseComponents/NavBar.vue
diff --git a/src/components/BaseComponents/__tests__/FooterComponent.spec.ts b/src/components/BaseComponents/__tests__/BaseFooter.spec.ts
similarity index 87%
rename from src/components/BaseComponents/__tests__/FooterComponent.spec.ts
rename to src/components/BaseComponents/__tests__/BaseFooter.spec.ts
index c6d4bdabaa9d12bb69982a9757a9684b3798fe53..4bf16d9bcd500003c0260e456a8633d40c1f4a17 100644
--- a/src/components/BaseComponents/__tests__/FooterComponent.spec.ts
+++ b/src/components/BaseComponents/__tests__/BaseFooter.spec.ts
@@ -1,6 +1,6 @@
 import { describe, it, expect } from 'vitest'
 import { mount } from '@vue/test-utils'
-import FooterComponent from '../FooterComponent.vue'
+import FooterComponent from '../BaseFooter.vue'
 
 describe('FooterComponent', () => {
   it('renders properly and includes the correct copyright notice', () => {
diff --git a/src/components/BaseComponents/__tests__/MenuComponent.spec.ts b/src/components/BaseComponents/__tests__/NavBar.spec.ts
similarity index 98%
rename from src/components/BaseComponents/__tests__/MenuComponent.spec.ts
rename to src/components/BaseComponents/__tests__/NavBar.spec.ts
index 935044db4a996726971cc170edea2c9b7b02ea9b..dcbc92d44f1f013375c4a5d60b5d6b0bd49cfd92 100644
--- a/src/components/BaseComponents/__tests__/MenuComponent.spec.ts
+++ b/src/components/BaseComponents/__tests__/NavBar.spec.ts
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
 import { createRouter, createMemoryHistory } from 'vue-router';
 import { createPinia, setActivePinia } from 'pinia';
 import { useUserInfoStore } from '@/stores/UserStore';
-import MyComponent from '../MenuComponent.vue'; // Adjust path as needed
+import MyComponent from '../NavBar.vue'; // Adjust path as needed
 import router from '@/router/index'; // Adjust path as needed
 import { access } from 'fs';
 import { render, screen } from '@testing-library/vue';
diff --git a/src/components/Configuration/Configuration.vue b/src/components/Configuration/ConfigurationParent.vue
similarity index 100%
rename from src/components/Configuration/Configuration.vue
rename to src/components/Configuration/ConfigurationParent.vue
diff --git a/src/components/Configuration/ConfigurationSteps/BankId.vue b/src/components/Configuration/ConfigurationSteps/BankId.vue
deleted file mode 100644
index bc40db3e7cd5aa6501e2daef33dc14842df2637c..0000000000000000000000000000000000000000
--- a/src/components/Configuration/ConfigurationSteps/BankId.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<script setup lang="ts">
-/*
-import Button1 from '@/components/Buttons/Button1.vue'
-import { useRouter } from 'vue-router'
-import { ref } from 'vue'
-
-const formRef = ref()
-const bankIDRef = ref(false)
-const minIdRef = ref(false)
-const vippsRef = ref(false)
-
-
-const router = useRouter();
-const emit = defineEmits(['changeRouterEvent']);
-emit('changeRouterEvent', '/bank-id');
-
-const onClick = () => {
-  const radios = formRef.value.querySelectorAll('input[type="radio"]');
-  const checkedRadios = Array.from(radios).filter(radio => radio.checked);
-
-  if (checkedRadios.length === 0) {
-    alert('Please select an option.');
-    return;
-  }
-
-  let choice = ''
-  if (bankIDRef.value.checked) choice = 'BankId på mobil'
-  else if (minIdRef.value.checked) choice = 'MinId'
-  else if (vippsRef.value.checked) choice = 'Vipps'
-
-  emit('bankIdSelectedEvent', choice)
-  router.push('/commitment')
-}
-*/
-</script>
-
-<template>
-  <!--
-  <div class="container">
-    <div>
-      <h3 class="d-flex align-items-center justify-content-center">
-        In order to provide best advice we need to connect to your bank account
-      </h3>
-    </div>
-
-    <form class="btn-group-vertical" ref="formRef" @submit.prevent="onClick">
-
-      <input ref="bankIDRef" type="radio" class="btn-check" name="bank-id" id="btn-check-outlined" autocomplete="off">
-      <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check-outlined">BankID på mobil</label>
-
-      <input ref="minIdRef" type="radio" class="btn-check" name="bank-id" id="btn-check2-outlined" autocomplete="off">
-      <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check2-outlined">MinID</label>
-
-      <input ref="vippsRef" type="radio" class="btn-check" name="bank-id" id="btn-check3-outlined" autocomplete="off">
-      <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check3-outlined">Vipps</label>
-
-    </form>
-
-    <div class="confirm-button-container">
-      <button1 id="confirmButton"
-               @click="onClick"
-               button-text="Continue">
-      </button1>
-    </div>
-
-  </div>
-  -->
-</template>
-
-<style scoped>
-/*
-#confirmButton {
-  margin-bottom: 2rem;
-  width: 300px;
-}
-
-.confirm-button-container {
-  display: flex;
-  justify-content: center;
-}
- */
-</style>
\ No newline at end of file
diff --git a/src/components/Configuration/ConfigurationSteps/Commitment.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue
similarity index 94%
rename from src/components/Configuration/ConfigurationSteps/Commitment.vue
rename to src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue
index 952d5aff64aa2a45edf23a6389519f78ddcdb96e..836ec18e28f118e65a09a76e803cdac2317d5700 100644
--- a/src/components/Configuration/ConfigurationSteps/Commitment.vue
+++ b/src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { useRouter } from 'vue-router'
 import { ref } from 'vue'
 import { useConfigurationStore } from '@/stores/ConfigurationStore'
@@ -59,7 +59,7 @@ const handleSubmit = () => {
     </form>
     <p class="text-danger">{{ errorMsg }}</p>
     <div class="confirm-button-container">
-      <button1 id="confirmButton" @click="handleSubmit" button-text="Fortsett"></button1>
+      <BaseButton id="confirmButton" @click="handleSubmit" button-text="Fortsett"></BaseButton>
     </div>
   </div>
 </template>
diff --git a/src/components/Configuration/ConfigurationSteps/Experience.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue
similarity index 94%
rename from src/components/Configuration/ConfigurationSteps/Experience.vue
rename to src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue
index 475ac5961acd69b14ed9771504d55a6919673287..2118af6a65afe5d0c8e6abe29f990db7416a595f 100644
--- a/src/components/Configuration/ConfigurationSteps/Experience.vue
+++ b/src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { useRouter } from 'vue-router'
 import { ref } from 'vue'
 import { useConfigurationStore } from '@/stores/ConfigurationStore'
@@ -61,7 +61,7 @@ const handleSubmit = () => {
     </form>
     <p class="text-danger">{{ errorMsg }}</p>
     <div class="confirm-button-container">
-      <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"/>
+      <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"/>
     </div>
 </div>
 </template>
diff --git a/src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue
similarity index 93%
rename from src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue
rename to src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue
index 226d395bdcc6d796fd2b579872b7c99a07f4e7f8..f6bf338f7ff5455a9777ed3c00aa51cf6c39747f 100644
--- a/src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue
+++ b/src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
-import BaseInput from '@/components/InputFields/BaseInput.vue'
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'
 import { ref } from 'vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { useRouter } from 'vue-router'
 import {type CreateGoalDTO, GoalService} from "@/api";
 
@@ -111,7 +111,7 @@ const handleSumInputEvent = (newSum: number) => {
     </form>
 
     <div class="confirm-button-container">
-      <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"></button1>
+      <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"></BaseButton>
     </div>
     <div style="color: red">
       {{ errorMessage }}
diff --git a/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue b/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue
index 44c9c455d7f5751ce9fabfabd0b53897567bfe3c..75adea95c76415912777c1dbd0dee504bdac04ec 100644
--- a/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue
+++ b/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { useRouter } from 'vue-router'
 import ChallangeCheckBox from '@/components/Configuration/ChallangeCheckBox.vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { ref } from 'vue'
 import { useConfigurationStore } from '@/stores/ConfigurationStore'
 import { useUserInfoStore } from '@/stores/UserStore'
@@ -117,7 +117,7 @@ const handleSubmit = () => {
     <p class="text-danger">{{ errorMsg }}</p>
 
     <div class="confirm-button-container">
-      <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"/>
+      <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"/>
     </div>
   </div>
 </template>
diff --git a/src/components/LeaderboardComponents/Leaderboard.vue b/src/components/Leaderboard/LeaderboardTable.vue
similarity index 100%
rename from src/components/LeaderboardComponents/Leaderboard.vue
rename to src/components/Leaderboard/LeaderboardTable.vue
diff --git a/src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts b/src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts
similarity index 91%
rename from src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts
rename to src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts
index cc604b72b7b39ea455c6c52e2711b88302d040b9..1e358426983dfe36f7089ffcca8def2100b3f16a 100644
--- a/src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts
+++ b/src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts
@@ -2,9 +2,9 @@ import { describe, it, expect, beforeEach, vi } from 'vitest';
 import { mount } from '@vue/test-utils';
 import { createRouter, createMemoryHistory } from 'vue-router';
 import { createPinia, setActivePinia } from 'pinia';
-import Leaderboard from '@/components/LeaderboardComponents/Leaderboard.vue';
-import { useUserInfoStore } from '@/stores/UserStore';
-import router from '@/router/index';
+import Leaderboard from '../LeaderboardTable.vue';
+import { useUserInfoStore } from '../../../stores/UserStore';
+import router from '../../../router';
 
 describe('Leaderboard', () => {
 
diff --git a/src/components/Login/LoginForm.vue b/src/components/Login/LoginForm.vue
index 19799dc8d733f1808d4753b0cb92854009248228..3b0518e2c2087f23529fb51ac728cd4b4c5050d3 100644
--- a/src/components/Login/LoginForm.vue
+++ b/src/components/Login/LoginForm.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import BaseInput from '@/components/InputFields/BaseInput.vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { ref } from 'vue'
 import { useUserInfoStore } from '@/stores/UserStore';
 import { AuthenticationService, OpenAPI, type LoginRequest } from '@/api';
@@ -111,7 +111,7 @@ const handleSubmit = async () => {
       </div>
 
       <p class="text-danger" data-cy="error">{{ errorMsg }}</p>
-      <button1 id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Logg inn"></button1>
+      <BaseButton id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Logg inn"></BaseButton>
 
       <a class="btn bankid-btn" href="https://preprod.signicat.com/oidc/authorize?response_type=code&scope=openid+profile+signicat.national_id&client_id=demo-preprod&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fredirect&acr_values=urn:signicat:oidc:method:nbid&state=nbid:auth_demo_bankid:123456789">
         <img src="/src/assets/bankid.svg" width="26" height="26">
diff --git a/src/components/Login/Login.vue b/src/components/Login/LoginParent.vue
similarity index 100%
rename from src/components/Login/Login.vue
rename to src/components/Login/LoginParent.vue
diff --git a/src/components/NewsComponents/NewsComponent.vue b/src/components/News/NewsFeed.vue
similarity index 100%
rename from src/components/NewsComponents/NewsComponent.vue
rename to src/components/News/NewsFeed.vue
diff --git a/src/components/NewsComponents/__tests__/NewsComponent.spec.ts b/src/components/News/__tests__/NewsFeed.spec.ts
similarity index 89%
rename from src/components/NewsComponents/__tests__/NewsComponent.spec.ts
rename to src/components/News/__tests__/NewsFeed.spec.ts
index ac57f8a37cecb8f2983c52ae3e163520d6c33ae8..0c2a4e092954b6a74218fa0d4998cdb8910574bb 100644
--- a/src/components/NewsComponents/__tests__/NewsComponent.spec.ts
+++ b/src/components/News/__tests__/NewsFeed.spec.ts
@@ -1,6 +1,6 @@
 import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
 import { mount } from '@vue/test-utils';
-import MyComponent from '@/components/NewsComponents/NewsComponent.vue'; // Adjust the import path according to your setup
+import MyComponent from '../NewsFeed.vue'; // Adjust the import path according to your setup
 
 global.fetch = vi.fn(() =>
   Promise.resolve(
diff --git a/src/components/SavingGoalComponents/SavingGoal.vue b/src/components/SavingGoal/SavingGoal.vue
similarity index 90%
rename from src/components/SavingGoalComponents/SavingGoal.vue
rename to src/components/SavingGoal/SavingGoal.vue
index 40d65c8f1a21bf217e8d04792751f4458a07e52d..3644980546960ef148747fa116d97ccdade6a8a6 100644
--- a/src/components/SavingGoalComponents/SavingGoal.vue
+++ b/src/components/SavingGoal/SavingGoal.vue
@@ -1,7 +1,7 @@
 <script lang="ts">
-import SavingGoalList from "@/components/SavingGoalComponents/SavingGoalList.vue";
-import SavingGoalRoadmap from "@/components/SavingGoalComponents/SavingGoalRoadmap.vue";
-import SavingGoalCreate from "@/components/SavingGoalComponents/SavingGoalCreate.vue";
+import SavingGoalList from "@/components/SavingGoal/SavingGoalList.vue";
+import SavingGoalRoadmap from "@/components/SavingGoal/SavingGoalRoadmap.vue";
+import SavingGoalCreate from "@/components/SavingGoal/SavingGoalCreate.vue";
 import type {GoalDTO} from "@/api";
 import {GoalService} from "@/api";
 
diff --git a/src/components/SavingGoalComponents/SavingGoalCreate.vue b/src/components/SavingGoal/SavingGoalCreate.vue
similarity index 100%
rename from src/components/SavingGoalComponents/SavingGoalCreate.vue
rename to src/components/SavingGoal/SavingGoalCreate.vue
diff --git a/src/components/SavingGoalComponents/SavingGoalList.vue b/src/components/SavingGoal/SavingGoalList.vue
similarity index 100%
rename from src/components/SavingGoalComponents/SavingGoalList.vue
rename to src/components/SavingGoal/SavingGoalList.vue
diff --git a/src/components/SavingGoalComponents/SavingGoalRoadmap.vue b/src/components/SavingGoal/SavingGoalRoadmap.vue
similarity index 100%
rename from src/components/SavingGoalComponents/SavingGoalRoadmap.vue
rename to src/components/SavingGoal/SavingGoalRoadmap.vue
diff --git a/src/views/Settings/SettingsAccountView.vue b/src/components/Settings/SettingsAccount.vue
similarity index 97%
rename from src/views/Settings/SettingsAccountView.vue
rename to src/components/Settings/SettingsAccount.vue
index 51b570cb6735dead3bff0f9e57ae0efd73906895..9e01429f4c3d343d1277fcaa29b35d0e8bdae044 100644
--- a/src/views/Settings/SettingsAccountView.vue
+++ b/src/components/Settings/SettingsAccount.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { ref, onMounted } from 'vue';
-import BaseInput from '@/components/InputFields/BaseInput.vue';
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue';
 import { useUserInfoStore } from "@/stores/UserStore";
 import { UserService } from '@/api';
 import type { UserUpdateDTO } from '@/api';
diff --git a/src/views/Settings/SettingsBankView.vue b/src/components/Settings/SettingsBank.vue
similarity index 97%
rename from src/views/Settings/SettingsBankView.vue
rename to src/components/Settings/SettingsBank.vue
index 2e06887cf01332788c77cf5993da92582aa74689..d5142d2130fd5ae83927cd8d2da5fce6bca311bb 100644
--- a/src/views/Settings/SettingsBankView.vue
+++ b/src/components/Settings/SettingsBank.vue
@@ -36,7 +36,7 @@
 
 <script setup lang="ts">
 import { ref } from 'vue';
-import BaseInput from '@/components/InputFields/BaseInput.vue';
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue';
 import type { BankAccountDTO } from '@/api';
 import { UserService } from '@/api';
 
diff --git a/src/views/Settings/SettingsNotificationView.vue b/src/components/Settings/SettingsNotification.vue
similarity index 100%
rename from src/views/Settings/SettingsNotificationView.vue
rename to src/components/Settings/SettingsNotification.vue
diff --git a/src/views/Settings/SettingsProfileView.vue b/src/components/Settings/SettingsProfile.vue
similarity index 96%
rename from src/views/Settings/SettingsProfileView.vue
rename to src/components/Settings/SettingsProfile.vue
index 21377e099ff64fb2de1f10c6f74977db4e525cde..c45371b6e47382aeb3f3a402a65791700be2f6b5 100644
--- a/src/views/Settings/SettingsProfileView.vue
+++ b/src/components/Settings/SettingsProfile.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { ref, onMounted } from 'vue';
-import BaseInput from '@/components/InputFields/BaseInput.vue';
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue';
 import { useUserInfoStore } from "@/stores/UserStore";
 import { UserService, ImageService } from '@/api';
 import type { UserUpdateDTO } from '@/api';
@@ -110,7 +110,7 @@ onMounted(() => {
         <img :src="iconSrc" alt="Brukeravatar" style="width: 300px">
         <div class="mt-2">
           <button type="button" class="btn btn-primary" @click="triggerFileUpload"><img
-              src="@/assets/icons/download.svg"> Last opp bilde</button>
+              src="../../assets/icons/download.svg"> Last opp bilde</button>
         </div>
       </div>
       <div class="form-group">
diff --git a/src/views/Settings/SettingsSecurityView.vue b/src/components/Settings/SettingsSecurity.vue
similarity index 97%
rename from src/views/Settings/SettingsSecurityView.vue
rename to src/components/Settings/SettingsSecurity.vue
index f6352b210bbf65f6698cbb04d78cb615120f04e9..8eab51063b9684504beea4d6e375a1c4b536e3a4 100644
--- a/src/views/Settings/SettingsSecurityView.vue
+++ b/src/components/Settings/SettingsSecurity.vue
@@ -35,7 +35,7 @@
 
 <script setup lang="ts">
     import { ref } from 'vue'
-    import BaseInput from '@/components/InputFields/BaseInput.vue'
+    import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'
     import { type PasswordUpdateDTO, UserService } from '@/api'
 
     const oldPasswordRef = ref('');
diff --git a/src/components/Buttons/ShopButton.vue b/src/components/Shop/ShopButton.vue
similarity index 72%
rename from src/components/Buttons/ShopButton.vue
rename to src/components/Shop/ShopButton.vue
index 38f1ee04a792d43376635cd70f93d86e998e236a..843eeb1530c696b3ae8aca05ab310aae54aaf057 100644
--- a/src/components/Buttons/ShopButton.vue
+++ b/src/components/Shop/ShopButton.vue
@@ -1,5 +1,5 @@
 <template>
-    <button type="button" class="btn btn-primary" id="buttonStyle"><img src="@/assets/items/pigcoin.png" style="width: 2rem"> +{{ buttonText }}</button>
+    <button type="button" class="btn btn-primary" id="buttonStyle"><img src="../../assets/items/pigcoin.png" style="width: 2rem"> +{{ buttonText }}</button>
 </template>
 
 <script setup lang="ts">
diff --git a/src/components/Buttons/__tests__/ShopButton.spec.ts b/src/components/Shop/__tests__/ShopButton.spec.ts
similarity index 92%
rename from src/components/Buttons/__tests__/ShopButton.spec.ts
rename to src/components/Shop/__tests__/ShopButton.spec.ts
index 25858cb46e529322a5da1386f31aab636bff64f9..277e3521fe84175524d94d0f10bfdf5b7da851c3 100644
--- a/src/components/Buttons/__tests__/ShopButton.spec.ts
+++ b/src/components/Shop/__tests__/ShopButton.spec.ts
@@ -1,6 +1,6 @@
 import { describe, it, expect } from 'vitest'
 import { mount } from '@vue/test-utils'
-import ImageButtonComponent from '@/components/Buttons/ShopButton.vue'
+import ImageButtonComponent from '../ShopButton.vue'
 
 describe('ImageButtonComponent', () => {
   it('renders the button with the correct text and image', () => {
diff --git a/src/components/SignUp/SignUpForm.vue b/src/components/SignUp/SignUpForm.vue
index 83a5da5494869633326e780f9cc2917e5c954621..6cf987d5b0e174520dad61c1205ad76cdc6a51cd 100644
--- a/src/components/SignUp/SignUpForm.vue
+++ b/src/components/SignUp/SignUpForm.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import BaseInput from '@/components/InputFields/BaseInput.vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import { ref } from 'vue'
 import { useRouter } from 'vue-router'
 import { AuthenticationService } from '@/api'
@@ -129,7 +129,7 @@ const handleSubmit = async () => {
       </div>
       <p class="text-danger">{{ errorMsg }}</p>
       <p v-if="!samePasswords" class="text-danger">Passordene er ikke like</p>
-      <button1 id="confirmButton" @click="handleSubmit" :disabled="isSubmitting" button-text="Registrer deg"></button1>
+      <BaseButton id="confirmButton" @click="handleSubmit" :disabled="isSubmitting" button-text="Registrer deg"></BaseButton>
       <LoginLink/>
     </form>
   </div>
diff --git a/src/components/UpdateUserComponents/UpdateUserLayout.vue b/src/components/UpdateUserComponents/UpdateUserLayout.vue
deleted file mode 100644
index 7c9e81cd0b2dff2477e0de17e93ca12982b9155a..0000000000000000000000000000000000000000
--- a/src/components/UpdateUserComponents/UpdateUserLayout.vue
+++ /dev/null
@@ -1,325 +0,0 @@
-<script setup lang="ts">
-import BaseInput from "@/components/InputFields/BaseInput.vue";
-import { onMounted, ref } from "vue";
-import { AuthenticationService, LeaderboardService, UserService, type UserUpdateDTO } from "@/api";
-import { useUserInfoStore } from "@/stores/UserStore";
-
-const firstNameRef = ref()
-const surnameRef = ref('')
-const emailRef = ref('')
-const passwordRef = ref('')
-const confirmPasswordRef = ref('')
-const formRef = ref()
-let samePasswords = ref(true)
-
-async function setupForm() {
-  try {
-    let response = await UserService.getUser();
-    console.log(response.firstName)
-
-    firstNameRef.value = response.firstName;
-    if (response.lastName != null) {
-      surnameRef.value = response.lastName;
-    }
-    if (response.email != null) {
-      emailRef.value = response.email
-    }
-  } catch (err) {
-    console.error(err)
-  }
-}
-
-
-
-const handleFirstNameInputEvent = (newValue: any) => {
-  firstNameRef.value = newValue
-}
-
-
-const handleSurnameInputEvent = (newValue: any) => {
-  surnameRef.value = newValue
-}
-
-const handleEmailInputEvent = (newValue: any) => {
-  emailRef.value = newValue
-}
-
-const handlePasswordInputEvent = (newValue: any) => {
-  passwordRef.value = newValue
-}
-
-const handleConfirmPasswordInputEvent = (newValue: any) => {
-  confirmPasswordRef.value = newValue
-}
-
-const handleSubmit = async () => {
-
-  samePasswords.value = (passwordRef.value === confirmPasswordRef.value)
-  console.log(samePasswords.value)
-  formRef.value.classList.add("was-validated")
-  const form = formRef.value;
-
-  const updateUserPayload: UserUpdateDTO = {
-    firstName: firstNameRef.value,
-    lastName: surnameRef.value,
-    email: emailRef.value,
-  };
-
-
-
-
-
-  if (form.checkValidity()) {
-    if (samePasswords.value) {
-      try {
-        UserService.update({ requestBody: updateUserPayload })
-        useUserInfoStore().setUserInfo({
-          email: emailRef.value,
-          firstname: firstNameRef.value,
-          lastname: surnameRef.value,
-          password: passwordRef.value
-        })
-
-      } catch (err) {
-        console.error(err)
-      }
-    }
-  } else {
-    console.log('Form is not valid');
-  }
-
-}
-onMounted(() => {
-  setupForm()
-})
-
-
-
-</script>
-
-<template>
-  <div class="containers">
-    <div class="row gutters">
-      <div class="col-xl-3 col-lg-3 col-md-12 col-sm-12 col-12">
-        <div class="card h-100">
-          <div class="card-body">
-            <div class="account-settings">
-              <div class="user-profile">
-                <div class="user-avatar">
-                  <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="Maxwell Admin">
-                </div>
-                <div class="text-center">
-                  <div class="mt-2">
-                    <span class="btn btn-primary"><img src="@/assets/icons/download.svg"></span>
-                  </div>
-                </div>
-                <br>
-                <h3 class="user-name">Yuki Hayashi</h3>
-                <h6 class="user-email">yuki@Maxwell.com</h6>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="col-xl-9 col-lg-9 col-md-12 col-sm-12 col-12">
-        <div class="card h-100">
-          <div class="card-body">
-            <div class="row gutters">
-              <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
-                <h6 class="mb-2 text-primary">Personal Details <img src="@/assets/icons/black_person.svg"></h6>
-              </div>
-              <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
-                <div class="form-group">
-                  <BaseInput :model-value="firstNameRef" @input-change-event="handleFirstNameInputEvent"
-                    id="firstNameInputChange" input-id="first-name-new" type="text" label="First name"
-                    placeholder="Enter your first name" invalid-message="Please enter your first name" />
-                </div>
-              </div>
-              <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
-                <div class="form-group">
-                  <BaseInput :model-value="surnameRef" @input-change-event="handleSurnameInputEvent"
-                    id="surnameInput-change" input-id="surname-new" type="text" label="Surname"
-                    placeholder="Enter your surname" invalid-message="Please enter your surname" />
-
-                </div>
-              </div>
-              <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
-                <div class="form-group">
-                  <BaseInput :model-value="emailRef" @input-change-event="handleEmailInputEvent" id="emailInput-change"
-                    input-id="email-new" type="email" label="Email" placeholder="Enter your email"
-                    invalid-message="Invalid email" />
-
-                </div>
-              </div>
-              <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
-                <div class="form-group">
-                  <BaseInput :model-value="passwordRef" @input-change-event="handlePasswordInputEvent"
-                    id="passwordInput-change" input-id="password-new" type="password"
-                    pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,16}" label="Password" placeholder="Enter password"
-                    invalid-message="Password must be between 4 and 16 characters and contain one capital letter, small letter and a number" />
-
-                </div>
-              </div>
-            </div>
-
-            <div class="row gutters">
-              <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12" style="margin-top: 10px;">
-                <h6 class="mb-2 text-primary">Personal Configuration <img src="@/assets/icons/black_person.svg"></h6>
-              </div>
-              <div class="accordion" id="accordionExample">
-                <div class="accordion-item">
-                  <h2 class="accordion-header">
-                    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
-                      data-bs-target="#collapseThree" aria-expanded="true" aria-controls="collapseThree">
-                      Configuration
-                    </button>
-                  </h2>
-                  <div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
-                    <div class="accordion-body">
-                      Hallo
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="row gutters">
-              <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
-                <h6 class="mt-3 mb-2 text-primary">Styles <img src="@/assets/icons/black_paintBrush.svg"></h6>
-              </div>
-              <div class="accordion" id="accordionExample">
-                <div class="accordion-item">
-                  <h2 class="accordion-header">
-                    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
-                      data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
-                      Profile pictures
-                    </button>
-                  </h2>
-                  <div id="collapseOne" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
-                    <div class="accordion-body">
-                      Hallo
-                    </div>
-                  </div>
-                </div>
-                <div class="accordion-item">
-                  <h2 class="accordion-header">
-                    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
-                      data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
-                      Road styles
-                    </button>
-                  </h2>
-                  <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
-                    <div class="accordion-body">
-                      Hallo
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="row gutters">
-              <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
-                <div class="text-right">
-                  <button type="button" id="submit" name="submit" class="btn btn-secondary">Cancel</button>
-                  <button type="button" id="submit" name="submit" class="btn btn-primary">Update</button>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-</template>
-
-<style scoped>
-body {
-  margin: 0;
-  padding-top: 40px;
-  color: #2e323c;
-  background: #f5f6fa;
-  position: relative;
-  height: 100%;
-}
-
-.row {
-  margin: 0px;
-}
-
-.containers {
-  width: 100%;
-  justify-content: center;
-  display: flex;
-  align-items: center;
-  margin-top: 2rem;
-  margin-bottom: 4rem;
-}
-
-.account-settings .user-profile {
-  margin: 0 0 1rem 0;
-  padding-bottom: 1rem;
-  text-align: center;
-}
-
-.account-settings .user-profile .user-avatar {
-  margin: 0 0 1rem 0;
-}
-
-.account-settings .user-profile .user-avatar img {
-  width: 90px;
-  height: 90px;
-  -webkit-border-radius: 100px;
-  -moz-border-radius: 100px;
-  border-radius: 100px;
-}
-
-.account-settings .user-profile h3.user-name {
-  margin: 0 0 0.5rem 0;
-}
-
-.account-settings .user-profile h6.user-email {
-  margin: 0;
-  font-size: 0.8rem;
-  font-weight: 400;
-  color: #9fa8b9;
-}
-
-.account-settings .about {
-  margin: 2rem 0 0 0;
-  text-align: center;
-}
-
-.account-settings .about h5 {
-  margin: 0 0 15px 0;
-  color: #007ae1;
-}
-
-.account-settings .about p {
-  font-size: 0.825rem;
-}
-
-.form-control {
-  border: 1px solid #cfd1d8;
-  -webkit-border-radius: 2px;
-  -moz-border-radius: 2px;
-  border-radius: 2px;
-  font-size: .825rem;
-  background: #ffffff;
-  color: #2e323c;
-}
-
-.text-right {
-  display: flex;
-  justify-content: flex-end;
-  margin-top: 10px;
-}
-
-.card {
-  background: #efefef;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-  border: 0;
-  margin-bottom: 1rem;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
-}
-</style>
\ No newline at end of file
diff --git a/src/components/UserProfile/UserProfileForeignLayout.vue b/src/components/UserProfile/ExternalProfile.vue
similarity index 100%
rename from src/components/UserProfile/UserProfileForeignLayout.vue
rename to src/components/UserProfile/ExternalProfile.vue
diff --git a/src/components/UserProfile/UserProfileLayout.vue b/src/components/UserProfile/MyProfile.vue
similarity index 100%
rename from src/components/UserProfile/UserProfileLayout.vue
rename to src/components/UserProfile/MyProfile.vue
diff --git a/src/components/UserProfile/__tests__/UserProfileLayout.spec.ts b/src/components/UserProfile/__tests__/MyProfile.spec.ts
similarity index 96%
rename from src/components/UserProfile/__tests__/UserProfileLayout.spec.ts
rename to src/components/UserProfile/__tests__/MyProfile.spec.ts
index 76b28ec9b59f89e455ba4275ef05697b46f8c844..306f0f13d39a6864b6947b57e86362399e1c1003 100644
--- a/src/components/UserProfile/__tests__/UserProfileLayout.spec.ts
+++ b/src/components/UserProfile/__tests__/MyProfile.spec.ts
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
 import { createRouter, createMemoryHistory } from 'vue-router';
 import { createPinia, setActivePinia } from 'pinia';
 import { useUserInfoStore } from '@/stores/UserStore';
-import MyComponent from '@/components/UserProfile/UserProfileLayout.vue'; // Adjust path as needed
+import MyComponent from '../MyProfile.vue'; // Adjust path as needed
 import router from '@/router/index'; // Adjust path as needed
 
 describe('MyComponent and Router Tests', () => {
diff --git a/src/router/index.ts b/src/router/index.ts
index ac7eb118808f9079783c9bfdede23a24021454c4..7e793b3cae83f03ff1dd6a33b097b8a3ba01f9da 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,12 +1,6 @@
 // Import necessary dependencies from Vue Router and your views
 import { createRouter, createWebHistory } from 'vue-router';
-import LoginView from '../views/Authentication/LoginView.vue';
 import { useUserInfoStore } from '@/stores/UserStore';
-import UserProfileView from "@/views/User/UserProfileView.vue";
-import SignUp from '@/components/SignUp/SignUp.vue'
-import UpdateUserView from "@/views/UpdateUser/UpdateUserView.vue";
-import RedirectView from '@/views/RedirectView.vue';
-
 const routes = [
   {
     path: '/',
@@ -17,79 +11,69 @@ const routes = [
       {
         path: '',
         name: 'home',
-        component: () => import('../views/SavingGoalView/RoadmapView.vue'),
+        component: () => import('@/views/SavingGoal/RoadmapView.vue'),
       },
       {
         path: 'news',
         name: 'news',
-        component: () => import('@/views/NewsView.vue'),
+        component: () => import('@/views/News/NewsView.vue'),
       },
       {
         path: 'leaderboard',
         name: 'leaderboard',
-        component: () => import('@/views/LeaderboardView.vue'),
-      },
-      {
-        path: 'test',
-        name: 'test',
-        component: () => import('@/views/TestView.vue'),
+        component: () => import('@/views/Leaderboard/LeaderboardView.vue'),
       },
       {
         path: 'profile',
         name: 'profile',
-        component: UserProfileView
-      },
-      {
-        path: 'update-user',
-        name: 'update-user',
-        component: UpdateUserView
+        component: () => import('@/views/User/MyProfileView.vue'),
       },
       {
         path: '/settings',
         name: 'settings',
-        component: () => import('@/views/SettingsView.vue'),
+        component: () => import('@/views/User/UserSettingsView.vue'),
         children: [
           {
             path: '/settings/account',
             name: 'account',
-            component: () => import('@/views/Settings/SettingsAccountView.vue'),
+            component: () => import('@/components/Settings/SettingsAccount.vue'),
           },
           {
             path: '/settings/profile',
             name: 'profilesettings',
-            component: () => import('@/views/Settings/SettingsProfileView.vue'),
+            component: () => import('@/components/Settings/SettingsProfile.vue'),
           },
           {
             path: '/settings/security',
             name: 'security',
-            component: () => import('@/views/Settings/SettingsSecurityView.vue'),
+            component: () => import('@/components/Settings/SettingsSecurity.vue'),
           },
           {
             path: '/settings/notification',
             name: 'notification',
-            component: () => import('@/views/Settings/SettingsNotificationView.vue'),
+            component: () => import('@/components/Settings/SettingsNotification.vue'),
           },
           {
             path: '/settings/bank',
             name: 'bank',
-            component: () => import('@/views/Settings/SettingsBankView.vue'),
+            component: () => import('@/components/Settings/SettingsBank.vue'),
           },
         ]
       },
       {
         path: 'roadmap',
         name: 'roadmap',
-        component: () => import('@/views/SavingGoalView/RoadmapView.vue'),
+        component: () => import('@/views/SavingGoal/RoadmapView.vue'),
       },
       {
         path: 'feedback',
         name: 'feedback',
-        component: () => import('@/views/FeedbackView.vue'),
+        component: () => import('@/views/User/UserFeedbackView.vue'),
       },
       {
         path: 'shop',
         name: 'shop',
-        component: () => import('@/views/ShopView.vue'),
+        component: () => import('@/views/Shop/ShopView.vue'),
       },
       {
         path: '/budget-overview',
@@ -106,40 +90,29 @@ const routes = [
       {
         path: '/profile/:id',
         name: 'friend-profile',
-        component: () => import('@/views/User/UserProfileForeignView.vue'),
+        component: () => import('@/views/User/ExternalProfileView.vue'),
       },
       {
         path: 'friends',
         name: 'friends',
         component: () => import('@/views/User/UserFriendsView.vue'),
       },
-      {
-        path: 'add-friend',
-        name: 'add-friend',
-        component: () => import('@/views/User/UserAddFriend.vue'),
-      },
-      {
-        path: 'admin',
-        name: 'admin',
-        component: () => import('@/views/TestView.vue'),
-        meta: { requiresAdmin: true },
-      },
       {
         path: 'unauthorized',
         name: 'unauthorized',
-        component: () => import('@/views/UnauthorizedView.vue'),
+        component: () => import('@/views/Exception/UnauthorizedView.vue'),
       },
       {
         path: '/:pathMatch(.*)*',
         name: 'not-found',
-        component: () => import('@/views/NotFoundView.vue'),
+        component: () => import('@/views/Exception/NotFoundView.vue'),
       },
     ]
   },
   {
     path: '/login',
     name: 'login',
-    component: LoginView,
+    component: () => import('@/views/Authentication/LoginView.vue'),
   },
   {
     path: '/forgotten-password',
@@ -159,27 +132,22 @@ const routes = [
   {
     path: '/redirect',
     name: 'redirect',
-    component: () => RedirectView,
+    component: () => import('@/views/BankID/RedirectView.vue'),
   },
   {
     path: '/configuration',
     name: 'configuration',
-    component: () => import('@/views/ConfigurationView.vue'),
+    component: () => import('@/views/Configuration/ConfigurationView.vue'),
     children: [
-      {
-        path: '/bank-id',
-        name: 'bankId',
-        component: () => import('@/components/Configuration/ConfigurationSteps/BankId.vue'),
-      },
       {
         path: '/commitment',
         name: 'commitment',
-        component: () => import('@/components/Configuration/ConfigurationSteps/Commitment.vue'),
+        component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue'),
       },
       {
         path: '/experience',
         name: 'experience',
-        component: () => import('@/components/Configuration/ConfigurationSteps/Experience.vue'),
+        component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue'),
       },
       {
         path: '/suitable-challenges',
@@ -189,7 +157,7 @@ const routes = [
       {
         path: '/first-saving-goal',
         name: 'first saving goal',
-        component: () => import('@/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue'),
+        component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue'),
       }
     ]
   },
diff --git a/src/stores/counter.ts b/src/stores/counter.ts
deleted file mode 100644
index b6757ba5723c5b89b35d011b9558d025bbcde402..0000000000000000000000000000000000000000
--- a/src/stores/counter.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-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/src/views/Authentication/ChangePasswordView.vue b/src/views/Authentication/ChangePasswordView.vue
index 4c733f26c8716d4bb317c6182b379dc9b4c4cc9c..2e15299f39c4aca4bc6d87248ed6c72a13d49a8d 100644
--- a/src/views/Authentication/ChangePasswordView.vue
+++ b/src/views/Authentication/ChangePasswordView.vue
@@ -31,7 +31,7 @@
 
             <p class="text-danger" data-cy="error">{{ errorMsg }}</p>
             <p v-if="!samePasswords" class="text-danger">Passordene er ikke like</p>
-            <button1 id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Oppdater passordet"></button1>
+            <BaseButton id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Oppdater passordet"></BaseButton>
 
             <SignUpLink/>
           </form>
@@ -75,11 +75,10 @@
 <script setup lang="ts">
 import { ref } from 'vue';
 import { useRouter, useRoute } from 'vue-router';
-import axios from 'axios';
 import { UserService } from '@/api';
 import SignUpLink from '@/components/SignUp/SignUpLink.vue'
-import Button1 from '@/components/Buttons/Button1.vue'
-import BaseInput from '@/components/InputFields/BaseInput.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'
 import handleUnknownError from '@/components/Exceptions/unkownErrorHandler'
 
 const router = useRouter();
diff --git a/src/views/Authentication/ForgottenPasswordView.vue b/src/views/Authentication/ForgottenPasswordView.vue
index acb9def5fc9bbcc09d7bde4fd0580b573a2c4206..81b884625b896fc3159458adcbb4bc097427f6cd 100644
--- a/src/views/Authentication/ForgottenPasswordView.vue
+++ b/src/views/Authentication/ForgottenPasswordView.vue
@@ -16,7 +16,7 @@
         <div v-else class="text-success">
           {{ confirmationMessage }}
         </div>
-        <button1 id="confirmButton" type="submit" :disabled="isSubmitting" button-text="Send e-post"></button1>
+        <BaseButton id="confirmButton" type="submit" :disabled="isSubmitting" button-text="Send e-post"></BaseButton>
 
         <div class="login-link">
           <Router-Link to="/login" class="small">GÃ¥ tilbake</Router-Link>
@@ -29,8 +29,7 @@
 <script setup lang="ts">
 import { ref } from 'vue';
 import { UserService } from '@/api';
-import BaseInput from '@/components/InputFields/BaseInput.vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 
 const formRef = ref()
 const form = formRef.value;
diff --git a/src/views/Authentication/LoginView.vue b/src/views/Authentication/LoginView.vue
index eb1c10b45e077e5f760baac9f6a81bd08cf0b49e..a4bb674beddad0aba2764790e54b62a7dcb370e4 100644
--- a/src/views/Authentication/LoginView.vue
+++ b/src/views/Authentication/LoginView.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
-import Footer from '@/components/BaseComponents/FooterComponent.vue'
-import Menu from '@/components/BaseComponents/MenuComponent.vue'
-import Login from '@/components/Login/Login.vue'
+import Footer from '@/components/BaseComponents/BaseFooter.vue'
+import Menu from '@/components/BaseComponents/NavBar.vue'
+import Login from '@/components/Login/LoginParent.vue'
 </script>
 
 <template>
diff --git a/src/views/RedirectView.vue b/src/views/BankID/RedirectView.vue
similarity index 95%
rename from src/views/RedirectView.vue
rename to src/views/BankID/RedirectView.vue
index 749886e1eec88607ccf7f5355293bc215ed8945d..93e690d2e9aef70d6f2fa374d997ee1cc5909309 100644
--- a/src/views/RedirectView.vue
+++ b/src/views/BankID/RedirectView.vue
@@ -34,12 +34,4 @@ async function exchangeCodeForToken(code: string, state: string) {
       router.push({ name: 'login' });
     });
 }
-</script>
-
-<template>
-
-</template>
-
-<style scoped>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/src/views/BasePageView.vue b/src/views/BasePageView.vue
index 148394e41b45dc0082779408f307aff1147f6844..4aebb55972d017af7c1469446acd9a9cb4ef8d61 100644
--- a/src/views/BasePageView.vue
+++ b/src/views/BasePageView.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { RouterView } from 'vue-router'
-import Footer from '@/components/BaseComponents/FooterComponent.vue'
-import Menu from '@/components/BaseComponents/MenuComponent.vue'
+import Footer from '@/components/BaseComponents/BaseFooter.vue'
+import Menu from '@/components/BaseComponents/NavBar.vue'
 import { useUserInfoStore } from '@/stores/UserStore';
 </script>
 
diff --git a/src/views/Budget/BudgetOverview.vue b/src/views/Budget/BudgetOverview.vue
index 06ecf1083d6cb7c29f320195b4038532c052d690..1eea4fe5ce22bf6b5d7599b353f45612e6730409 100644
--- a/src/views/Budget/BudgetOverview.vue
+++ b/src/views/Budget/BudgetOverview.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import BudgetBox from '@/components/Budget/BudgetBox.vue'
 import { onMounted, ref } from 'vue'
 import handleUnknownError from '@/components/Exceptions/unkownErrorHandler'
@@ -72,12 +72,12 @@ const goToBudget = (id: number) => {
 <template>
   <div class="container">
     <h1 class="text-center">Dine Budsjetter</h1>
-    <button1 id="createBudgetButton" button-text="Opprett nytt budsjett" class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"/>
+    <BaseButton id="createBudgetButton" button-text="Opprett nytt budsjett" class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"/>
     <div class="collapse" id="collapseExample">
       <div class="container collapse-container">
         <div class="input-group">
           <input id="collapseInput" class="form-control" type="text" placeholder="Skriv inn navn på budsjettet" v-model="budgetNameInput">
-          <button1 id="collapseButton" button-text="Opprett" data-bs-dismiss="modal" @click="createNewBudget"/>
+          <BaseButton id="collapseButton" button-text="Opprett" data-bs-dismiss="modal" @click="createNewBudget"/>
         </div>
       </div>
     </div>
diff --git a/src/views/Budget/BudgetView.vue b/src/views/Budget/BudgetView.vue
index 4697c12b5098d407504951f1ed4232ea07af2eea..e06214ebd9bccb12b5370a936974462a7901ceab 100644
--- a/src/views/Budget/BudgetView.vue
+++ b/src/views/Budget/BudgetView.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { onMounted, ref } from 'vue'
-import Button1 from '@/components/Buttons/Button1.vue'
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'
 import ExpenseBox from '@/components/Budget/ExpenseBox.vue'
 import { useRouter } from 'vue-router'
 import { useBudgetStore } from '@/stores/BudgetStore'
@@ -225,8 +225,8 @@ const importBudget = async (budgetId: number) => {
     <h1 class="text-center">{{ title }}</h1>
 
     <div class="button-container">
-      <button1 id="goBack" @click="router.push('/budsjett-oversikt')" button-text="GÃ¥ tilbake"/>
-      <button1 id="optionButton" button-text="Alternativer" data-bs-toggle="modal" data-bs-target="#modal"/>
+      <BaseButton id="goBack" @click="router.push('/budsjett-oversikt')" button-text="GÃ¥ tilbake"/>
+      <BaseButton id="optionButton" button-text="Alternativer" data-bs-toggle="modal" data-bs-target="#modal"/>
     </div>
 
     <p class="text-danger">{{ errorMsg }}</p>
@@ -246,7 +246,7 @@ const importBudget = async (budgetId: number) => {
                 <form ref="renameFormRef" @submit.prevent="updateBudget(budget, budgetTitle)">
                   <div class="input-group">
                     <input id="collapseInput" class="col-5 form-control" type="text" required minlength="1" placeholder="Skriv inn nytt navn på budsjettet" v-model="budgetTitle">
-                    <button1 id="collapseButton" type="submit" button-text="Bekreft" data-bs-dismiss="modal"/>
+                    <BaseButton id="collapseButton" type="submit" button-text="Bekreft" data-bs-dismiss="modal"/>
                   </div>
                 </form>
               </div>
diff --git a/src/views/ConfigurationView.vue b/src/views/Configuration/ConfigurationView.vue
similarity index 90%
rename from src/views/ConfigurationView.vue
rename to src/views/Configuration/ConfigurationView.vue
index 2c375e5d6c494d84822eb53e84684aba09572356..426224bfc413d2c59ac8443f701771ed77889022 100644
--- a/src/views/ConfigurationView.vue
+++ b/src/views/Configuration/ConfigurationView.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import Configuration from '@/components/Configuration/Configuration.vue'
+import Configuration from '@/components/Configuration/ConfigurationParent.vue'
 </script>
 
 <template>
diff --git a/src/views/NotFoundView.vue b/src/views/Exception/NotFoundView.vue
similarity index 87%
rename from src/views/NotFoundView.vue
rename to src/views/Exception/NotFoundView.vue
index 1d5ecd34e6978554b63f06cfadfad0a391d41f9a..fceb97ac6adf0017e00025fa1703f5509117497c 100644
--- a/src/views/NotFoundView.vue
+++ b/src/views/Exception/NotFoundView.vue
@@ -11,7 +11,7 @@
                         Beklager, det har oppstått en feil. Forespurt side ikke funnet!
                     </div>
                     <div class="error-actions">
-                        <Button1 data-cy="to-home" button-text="Ta meg hjem" @click="home" />
+                        <BaseButton data-cy="to-home" button-text="Ta meg hjem" @click="home" />
                     </div>
                 </div>
             </div>
@@ -22,7 +22,7 @@
 
 <script setup lang="ts">
 import { useRouter } from 'vue-router';
-import Button1 from '@/components/Buttons/Button1.vue';
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue';
 
 const router = useRouter();
 
diff --git a/src/views/UnauthorizedView.vue b/src/views/Exception/UnauthorizedView.vue
similarity index 74%
rename from src/views/UnauthorizedView.vue
rename to src/views/Exception/UnauthorizedView.vue
index d992177878338b02d4ecc2f33e588d4743ceba57..99bfe00e211b79514f6fbb1b4ac8a2983b40018b 100644
--- a/src/views/UnauthorizedView.vue
+++ b/src/views/Exception/UnauthorizedView.vue
@@ -3,12 +3,12 @@
         <div class="container py-5">
             <div class="row">
                 <div class="col-md-2 text-center">
-                    <p><img src="@/assets/icons/danger.svg" alt="fare"> <br/>Statuskode: 403</p>
+                    <p><img src="../../assets/icons/danger.svg" alt="fare"> <br/>Statuskode: 403</p>
                 </div>
                 <div class="col-md-10">
                     <h3>OOPS!!! Beklager...</h3>
                     <p>Beklager, din tilgang er nektet av sikkerhetsgrunner på serveren vår og også våre sensitive data.<br/>Vennligst gå tilbake til startsiden for å fortsette å surfe.</p>
-                    <Button1 :button-text="'Ta meg hjem'" @click="home" />
+                    <BaseButton :button-text="'Ta meg hjem'" @click="home" />
                 </div>
             </div>
         </div>
@@ -18,7 +18,7 @@
 
 <script setup lang="ts">
 import { useRouter } from 'vue-router';
-import Button1 from '@/components/Buttons/Button1.vue';
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue';
 
 const router = useRouter();
 
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
deleted file mode 100644
index 70c5e6456e7f882ebbea3fa1476b4cae2fb52aa2..0000000000000000000000000000000000000000
--- a/src/views/HomeView.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-<script setup lang="ts">
-
-</script>
-
-<template>
-  <RouterLink to="login">Login</RouterLink>
-  <br/>
-  <RouterLink to="sign-up">Sign up</RouterLink>
-</template>
diff --git a/src/views/LeaderboardView.vue b/src/views/Leaderboard/LeaderboardView.vue
similarity index 88%
rename from src/views/LeaderboardView.vue
rename to src/views/Leaderboard/LeaderboardView.vue
index fde5b950331544f95fb849964cbb7ff28fb42314..07f88f352b3f757e9683b273cdeb8938ab923284 100644
--- a/src/views/LeaderboardView.vue
+++ b/src/views/Leaderboard/LeaderboardView.vue
@@ -9,27 +9,27 @@
                 <div class="btn-group-vertical" id="radioContainer" role="group"
                      aria-label="Vertikal radio knappgruppe">
                     <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio1" autocomplete="off" checked>
-                    <label class="btn btn-outline-primary" for="vbtn-radio1" @click="global"><img src="@/assets/globe.png" style="width: 60px" alt="globus"> Global</label>
+                    <label class="btn btn-outline-primary" for="vbtn-radio1" @click="global"><img src="../../assets/globe.png" style="width: 60px" alt="globus"> Global</label>
                     <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio2" autocomplete="off">
                     <label data-cy="friends-leaderboard-btn" class="btn btn-outline-primary"
                            for="vbtn-radio2"
-                            @click="friends"><img src="@/assets/friends.png" style="width: 60px" alt="venner"> Venner</label>
+                            @click="friends"><img src="../../assets/friends.png" style="width: 60px" alt="venner"> Venner</label>
                 </div>
             </div>
         </div>
         <main>
             <div id="leaderboard">
-                <h1><img src="@/assets/items/pigcoin.png" style="width: 2rem" alt="pig coin"> Totale poeng</h1>
+                <h1><img src="../../assets/items/pigcoin.png" style="width: 2rem" alt="pig coin"> Totale poeng</h1>
                 <Leaderboard data-cy="total-points-board" :leaderboard="pointsLeaderboardData"
                               :leaderboardExtra="pointsLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" />
             </div>
             <div id="leaderboard">
-                <h1><img src="@/assets/icons/fire.png" style="width: 2rem" alt="ild"> Nåværende rekke</h1>
+                <h1><img src="../../assets/icons/fire.png" style="width: 2rem" alt="ild"> Nåværende rekke</h1>
                 <Leaderboard data-cy="current-points-board" :leaderboard="currentLeaderboardData"
                               :leaderboardExtra="currentLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" />
             </div>
             <div id="leaderboard">
-                <h1><img src="@/assets/icons/fire.png" style="width: 2rem" alt="ild"> Høyeste rekke</h1>
+                <h1><img src="../../assets/icons/fire.png" style="width: 2rem" alt="ild"> Høyeste rekke</h1>
                 <Leaderboard data-cy="streak-board" :leaderboard="streakLeaderboardData"
                               :leaderboardExtra="streakLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" />
             </div>
@@ -37,7 +37,7 @@
     </div>
     <div id="communityContainer">
         <h1>Totale poeng opptjent som et fellesskap</h1>
-        <h2>1000000 <img src="@/assets/items/v-buck.png" style="width: 2rem" alt="alt"></h2>
+        <h2>1000000 <img src="../../assets/items/v-buck.png" style="width: 2rem" alt="alt"></h2>
     </div>
 </template>
 
@@ -45,7 +45,7 @@
 <script setup lang="ts">
 import { onMounted, ref } from 'vue';
 import { useRouter } from 'vue-router';
-import Leaderboard from '@/components/LeaderboardComponents/Leaderboard.vue';
+import Leaderboard from '@/components/Leaderboard/LeaderboardTable.vue';
 import { LeaderboardService } from '@/api';
 
 let streakLeaderboardData = ref([] as  any);
diff --git a/src/views/NewsView.vue b/src/views/News/NewsView.vue
similarity index 55%
rename from src/views/NewsView.vue
rename to src/views/News/NewsView.vue
index bdfb7c611f43f0301e460f56b150a97213393a9d..2c309f722ba054b6b188401b997631ab6673bb94 100644
--- a/src/views/NewsView.vue
+++ b/src/views/News/NewsView.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import NewsComponent from "@/components/NewsComponents/NewsComponent.vue";
+import NewsComponent from "@/components/News/NewsFeed.vue";
 </script>
 
 
diff --git a/src/views/SavingGoalView/RoadmapView.vue b/src/views/SavingGoal/RoadmapView.vue
similarity index 53%
rename from src/views/SavingGoalView/RoadmapView.vue
rename to src/views/SavingGoal/RoadmapView.vue
index cdf655318efd24b40aab9b9e8fa1b82c3d30d3df..67921dc5416487704834d0f84c5cbe07cbf0eebd 100644
--- a/src/views/SavingGoalView/RoadmapView.vue
+++ b/src/views/SavingGoal/RoadmapView.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import SavingGoal from "@/components/SavingGoalComponents/SavingGoal.vue";
+import SavingGoal from "@/components/SavingGoal/SavingGoal.vue";
 </script>
 
 <template>
diff --git a/src/views/ShopView.vue b/src/views/Shop/ShopView.vue
similarity index 91%
rename from src/views/ShopView.vue
rename to src/views/Shop/ShopView.vue
index fc35bb4a7243918395de43b96d207fa4887e4383..15f17c636da19d0e18deb7e1f627027ff310a7ac 100644
--- a/src/views/ShopView.vue
+++ b/src/views/Shop/ShopView.vue
@@ -10,7 +10,7 @@
                 <h1>Stash</h1>
                 <div class="category row justify-content-between mb-5 m-2">
                     <div class="card text-center" style="width: 16rem; border: none">
-                        <img src="@/assets/items/adfree.png" class="card-img-top" alt="...">
+                        <img src="../../assets/items/adfree.png" class="card-img-top" alt="...">
                         <div class="card-body">
                             <h5 class="card-title">Adfree</h5>
                             <button type="button" class="btn btn-primary" id="buttonStyle" @click="buyNoAds">
@@ -18,7 +18,7 @@
                         </div>
                     </div>
                     <div class="card text-center" style="width: 16rem; border: none">
-                        <img src="@/assets/items/piggybank.webp" class="card-img-top" alt="...">
+                        <img src="../../assets/items/piggybank.webp" class="card-img-top" alt="...">
                         <div class="card-body">
                             <h5 class="card-title">Premium</h5>
                             <button type="button" class="btn btn-primary" id="buttonStyle"
@@ -47,21 +47,21 @@
                 <h1>Stash</h1>
                 <div class="category row justify-content-between mb-5 m-2">
                     <div class="card text-center" style="width: 16rem; border: none">
-                        <img src="@/assets/items/coffee.jpg" class="card-img-top" alt="...">
+                        <img src="../../assets/items/coffee.jpg" class="card-img-top" alt="...">
                         <div class="card-body">
                             <h5 class="card-title">Free Coffee</h5>
                             <ShopButton button-text="500"></ShopButton>
                         </div>
                     </div>
                     <div class="card text-center" style="width: 16rem; border: none">
-                        <img src="@/assets/items/viaplay.jpg" class="card-img-top" alt="...">
+                        <img src="../../assets/items/viaplay.jpg" class="card-img-top" alt="...">
                         <div class="card-body">
                             <h5 class="card-title">1 Month Viaplay</h5>
                             <ShopButton button-text="10000"></ShopButton>
                         </div>
                     </div>
                     <div class="card text-center" style="width: 16rem; border: none">
-                        <img src="@/assets/items/pirbad.png" class="card-img-top" alt="...">
+                        <img src="../../assets/items/pirbad.png" class="card-img-top" alt="...">
                         <div class="card-body">
                             <h5 class="card-title">-10% rabatt</h5>
                             <ShopButton button-text="1000"></ShopButton>
@@ -76,7 +76,7 @@
 </template>
 
 <script setup lang="ts">
-import ShopButton from '@/components/Buttons/ShopButton.vue';
+import ShopButton from '@/components/Shop/ShopButton.vue';
 import { ref, onMounted } from 'vue';
 import { UserService } from '@/api';
 import { useUserInfoStore } from '@/stores/UserStore';
diff --git a/src/views/TestView.vue b/src/views/TestView.vue
deleted file mode 100644
index a7fce444288c4df4c5f9f531c3e92e3da43935a4..0000000000000000000000000000000000000000
--- a/src/views/TestView.vue
+++ /dev/null
@@ -1,11 +0,0 @@
-<template>
-    <div>
-        <Button1 :buttonText="hallo"></Button1>
-    </div>
-</template>
-
-<script setup lang="ts">
-    import Button1 from '@/components/Buttons/Button1.vue'
-
-    const hallo = 'Hallo'
-</script>
\ No newline at end of file
diff --git a/src/views/UpdateUser/UpdateUserView.vue b/src/views/UpdateUser/UpdateUserView.vue
deleted file mode 100644
index aae915c1e1225dca1b3f6ac4b34e5b987c765515..0000000000000000000000000000000000000000
--- a/src/views/UpdateUser/UpdateUserView.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-<script setup lang="ts">
-
-import UpdateUserLayout from "@/components/UpdateUserComponents/UpdateUserLayout.vue";
-</script>
-
-<template>
-<UpdateUserLayout></UpdateUserLayout>
-</template>
-
-<style scoped>
-
-</style>
\ No newline at end of file
diff --git a/src/views/User/UserProfileForeignView.vue b/src/views/User/ExternalProfileView.vue
similarity index 68%
rename from src/views/User/UserProfileForeignView.vue
rename to src/views/User/ExternalProfileView.vue
index 0662a2c06dc7a47cea608f4172a11d009aafdefe..67951edd79a50af254b995e802c041708a7083b5 100644
--- a/src/views/User/UserProfileForeignView.vue
+++ b/src/views/User/ExternalProfileView.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 
-import UserProfileForeignLayout from "@/components/UserProfile/UserProfileForeignLayout.vue";
+import UserProfileForeignLayout from "@/components/UserProfile/ExternalProfile.vue";
 </script>
 <!-- The path to a foreign user is /{userId} || /profile/{userId}-->
 <template>
diff --git a/src/views/User/UserProfileView.vue b/src/views/User/MyProfileView.vue
similarity index 60%
rename from src/views/User/UserProfileView.vue
rename to src/views/User/MyProfileView.vue
index 85e9882866797433edfa76cc3fbf4368796432cf..f8ec753f18e393bf30db04d063c0b7026906dd02 100644
--- a/src/views/User/UserProfileView.vue
+++ b/src/views/User/MyProfileView.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 
-import UserProfileLayout from "@/components/UserProfile/UserProfileLayout.vue";
+import UserProfileLayout from "@/components/UserProfile/MyProfile.vue";
 </script>
 
 <template>
diff --git a/src/views/User/UserAddFriend.vue b/src/views/User/UserAddFriend.vue
deleted file mode 100644
index 585f5f8c7ec6f69bebe290fe917e46cad1f8eb5e..0000000000000000000000000000000000000000
--- a/src/views/User/UserAddFriend.vue
+++ /dev/null
@@ -1,238 +0,0 @@
-<script setup lang="ts">
-import { ref } from 'vue'
-import { FriendService } from '@/api';
-
-async function addFriend(friendID: number) {
-    const response = await FriendService.addFriendRequest({ userId: friendID });
-    console.log(response);
-}
-</script>
-
-
-<template>
-    <div class="container">
-        <h1>Add Friend</h1>
-        <div class="row">
-            <form class="col-md-5" id="searchBox" role="search">
-                <input class="form-control me-2 custom-border" type="search" placeholder="Search" aria-label="Search">
-                <button class="btn btn-success" type="submit">Search</button>
-            </form>
-            <div class="col-md-8">
-                <div class="people-nearby">
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Sophia Page</a></h5>
-                                <p>Software Engineer</p>
-                                <p class="text-muted">500m away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right" @click="addFriend(1)">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Emma Johnson</a></h5>
-                                <p>Model at Fashion</p>
-                                <p class="text-muted">800m away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar5.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Nora Wilson</a></h5>
-                                <p>Writer at Newspaper</p>
-                                <p class="text-muted">2.5km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar4.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Diana Amber</a></h5>
-                                <p>Student</p>
-                                <p class="text-muted">700m away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Addison Thomas</a></h5>
-                                <p>Barber at Fashion</p>
-                                <p class="text-muted">1.5km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Jonathon Thompson</a></h5>
-                                <p>Fashion Designer</p>
-                                <p class="text-muted">2km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Olivia Steward</a></h5>
-                                <p>Creative Director</p>
-                                <p class="text-muted">2km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Elena Foster</a></h5>
-                                <p>Executive Officer</p>
-                                <p class="text-muted">4km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Brian Walton</a></h5>
-                                <p>Designer at Designer</p>
-                                <p class="text-muted">3km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="nearby-user">
-                        <div class="row">
-                            <div class="col-md-2 col-sm-2">
-                                <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user"
-                                    class="profile-photo-lg">
-                            </div>
-                            <div class="col-md-7 col-sm-7">
-                                <h5><a href="#" class="profile-link">Cris Haris</a></h5>
-                                <p>General Manager at Manager</p>
-                                <p class="text-muted">1km away</p>
-                            </div>
-                            <div class="col-md-3 col-sm-3">
-                                <button class="btn btn-primary pull-right">Add Friend</button>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</template>
-
-<style scoped>
-body {
-    margin-top: 20px;
-    background: #FAFAFA;
-}
-
-.people-nearby .google-maps {
-    background: #f8f8f8;
-    border-radius: 4px;
-    border: 1px solid #f1f2f2;
-    padding: 20px;
-    margin-bottom: 20px;
-}
-
-.people-nearby .google-maps .map {
-    height: 300px;
-    width: 100%;
-    border: none;
-}
-
-.people-nearby .nearby-user {
-    padding: 20px 0;
-    border-top: 1px solid #f1f2f2;
-    border-bottom: 1px solid #f1f2f2;
-    margin-bottom: 20px;
-}
-
-img.profile-photo-lg {
-    height: 80px;
-    width: 80px;
-    border-radius: 50%;
-}
-
-#searchBox {
-    margin-bottom: 20px;
-    display: flex;
-    text-wrap: nowrap;
-}
-
-.row {
-    width: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-}
-
-.form-control.custom-border {
-    border-color: #222223;
-    /* Change to your desired color */
-}
-</style>
\ No newline at end of file
diff --git a/src/views/FeedbackView.vue b/src/views/User/UserFeedbackView.vue
similarity index 88%
rename from src/views/FeedbackView.vue
rename to src/views/User/UserFeedbackView.vue
index a4cbe7a434ef332fb04146ba6c3193ccc0f20688..3c28adbed9221b1b24edd8a33a6638531c293ffd 100644
--- a/src/views/FeedbackView.vue
+++ b/src/views/User/UserFeedbackView.vue
@@ -9,7 +9,7 @@
         <label for="feedback">Din tilbakemelding:</label>
         <textarea v-model="message" placeholder="Write here" rows="5" name="comment[text]" id="comment_text" cols="33"
           required></textarea>
-        <Button1 button-text="Send" @click="submitForm">Send inn</Button1>
+        <BaseButton button-text="Send" @click="submitForm">Send inn</BaseButton>
         <p v-if="submissionStatus">{{ submissionStatus }}</p>
       </form>
     </div>
@@ -19,8 +19,8 @@
 
 <script setup lang="ts">
 import { ref } from 'vue';
-import BaseInput from '@/components/InputFields/BaseInput.vue';
-import Button1 from '@/components/Buttons/Button1.vue';
+import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue';
+import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue';
 
 const email = ref("");
 const message = ref("");
diff --git a/src/views/SettingsView.vue b/src/views/User/UserSettingsView.vue
similarity index 100%
rename from src/views/SettingsView.vue
rename to src/views/User/UserSettingsView.vue