diff --git a/src/api/core/OpenAPI.ts b/src/api/core/OpenAPI.ts
index bae5eb773e38a6fa187a68f3ac9f3dbecc88eaf5..213c15d4a7b840e8d13a35f74c2618c13b7c9398 100644
--- a/src/api/core/OpenAPI.ts
+++ b/src/api/core/OpenAPI.ts
@@ -21,7 +21,7 @@ export type OpenAPIConfig = {
 
 export const OpenAPI: OpenAPIConfig = {
     BASE: 'http://localhost:8080',
-    VERSION: '0',
+    VERSION: '3.0',
     WITH_CREDENTIALS: false,
     CREDENTIALS: 'include',
     TOKEN: undefined,
diff --git a/src/api/index.ts b/src/api/index.ts
index 7bfbd7a82dcdde4a855e2ee242508c2268633a83..2a974f1dd456ed118f2caf5c190038eb3cfa7c3f 100644
--- a/src/api/index.ts
+++ b/src/api/index.ts
@@ -6,3 +6,10 @@ export { ApiError } from './core/ApiError';
 export { CancelablePromise, CancelError } from './core/CancelablePromise';
 export { OpenAPI } from './core/OpenAPI';
 export type { OpenAPIConfig } from './core/OpenAPI';
+
+export type { AuthenticationResponse } from './models/AuthenticationResponse';
+export type { ExceptionResponse } from './models/ExceptionResponse';
+export type { LoginRequest } from './models/LoginRequest';
+export type { SignUpRequest } from './models/SignUpRequest';
+
+export { AuthenticationService } from './services/AuthenticationService';
diff --git a/src/api/models/AuthenticationResponse.ts b/src/api/models/AuthenticationResponse.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e9773225f1c1b7206a2339985029abcfe618971f
--- /dev/null
+++ b/src/api/models/AuthenticationResponse.ts
@@ -0,0 +1,8 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type AuthenticationResponse = {
+    token?: string;
+};
+
diff --git a/src/api/models/ExceptionResponse.ts b/src/api/models/ExceptionResponse.ts
new file mode 100644
index 0000000000000000000000000000000000000000..12c0a7873d7d38f6782e970737603521971c9c81
--- /dev/null
+++ b/src/api/models/ExceptionResponse.ts
@@ -0,0 +1,9 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type ExceptionResponse = {
+    status?: number;
+    message?: string;
+};
+
diff --git a/src/api/models/LoginRequest.ts b/src/api/models/LoginRequest.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9c5def4f1a6a028911a9b4ca8a147fcc14f8015e
--- /dev/null
+++ b/src/api/models/LoginRequest.ts
@@ -0,0 +1,9 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type LoginRequest = {
+    email?: string;
+    password?: string;
+};
+
diff --git a/src/api/models/SignUpRequest.ts b/src/api/models/SignUpRequest.ts
new file mode 100644
index 0000000000000000000000000000000000000000..28a2e78a3a39e8ceb5f28567ebdf02d912017210
--- /dev/null
+++ b/src/api/models/SignUpRequest.ts
@@ -0,0 +1,14 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type SignUpRequest = {
+    firstName?: string;
+    lastName?: string;
+    email?: string;
+    password?: string;
+    changeWilling?: string;
+    experience?: string;
+    challenges?: Array<string>;
+};
+
diff --git a/src/api/services/AuthenticationService.ts b/src/api/services/AuthenticationService.ts
new file mode 100644
index 0000000000000000000000000000000000000000..eae8fd5c8b2f6ef8d5cfaf6ed6976edcf0a386d4
--- /dev/null
+++ b/src/api/services/AuthenticationService.ts
@@ -0,0 +1,55 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { AuthenticationResponse } from '../models/AuthenticationResponse';
+import type { LoginRequest } from '../models/LoginRequest';
+import type { SignUpRequest } from '../models/SignUpRequest';
+import type { CancelablePromise } from '../core/CancelablePromise';
+import { OpenAPI } from '../core/OpenAPI';
+import { request as __request } from '../core/request';
+export class AuthenticationService {
+    /**
+     * User Signup
+     * Sign up a new user
+     * @returns AuthenticationResponse Successfully signed up
+     * @throws ApiError
+     */
+    public static signup({
+        requestBody,
+    }: {
+        requestBody: SignUpRequest,
+    }): CancelablePromise<AuthenticationResponse> {
+        return __request(OpenAPI, {
+            method: 'POST',
+            url: '/api/auth/signup',
+            body: requestBody,
+            mediaType: 'application/json',
+            errors: {
+                409: `Email already exists`,
+            },
+        });
+    }
+    /**
+     * User Login
+     * Log in with an existing user
+     * @returns AuthenticationResponse Successfully logged in
+     * @throws ApiError
+     */
+    public static login({
+        requestBody,
+    }: {
+        requestBody: LoginRequest,
+    }): CancelablePromise<AuthenticationResponse> {
+        return __request(OpenAPI, {
+            method: 'POST',
+            url: '/api/auth/login',
+            body: requestBody,
+            mediaType: 'application/json',
+            errors: {
+                401: `Invalid credentials`,
+                404: `User not found`,
+            },
+        });
+    }
+}
diff --git a/src/components/Buttons/Button1.vue b/src/components/Buttons/Button1.vue
index 33b300d7139220c9388160810541bafdf579332e..c5dfa9cfa37b8d1d047ae0a0dbb4ab2907b00a78 100644
--- a/src/components/Buttons/Button1.vue
+++ b/src/components/Buttons/Button1.vue
@@ -1,5 +1,5 @@
 <template>
-    <button type="button" class="btn btn-success" id="buttonStyle">{{ buttonText }}</button>
+    <button type="button" class="btn btn-primary" id="buttonStyle">{{ buttonText }}</button>
 </template>
 
 <script>
diff --git a/src/views/FeedbackView.vue b/src/views/FeedbackView.vue
index 9095328987e0c5479f039dd59d667f0533d4cb71..37264535422ff7742a1e6e410d4e6338c0752598 100644
--- a/src/views/FeedbackView.vue
+++ b/src/views/FeedbackView.vue
@@ -1,3 +1,85 @@
 <template>
-    Hallo
-</template>
\ No newline at end of file
+    <main>
+      <div class="wrapper">
+      <div id="formFrame">
+          <h1>Feedback</h1>
+      <form @submit.prevent="submitForm">
+        <BaseInput v-model="email" label="Email" type="email" placeholder="Enter your email" inputId="email" required />
+        <br>
+        <label for="feedback">Your feedback:</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">Submit</Button1>
+        <p v-if="submissionStatus">{{ submissionStatus }}</p>
+      </form>
+    </div>
+    </div>
+    </main>
+  </template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+import BaseInput from '@/components/InputFields/BaseInput.vue';
+import Button1 from '@/components/Buttons/Button1.vue';
+
+const email = ref("");
+const message = ref("");
+const submissionStatus = ref("");
+
+const submitForm = async () => {
+  
+};
+</script>
+
+<style scoped>
+main {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    font-family: 'Poppins', sans-serif;
+}
+
+.wrapper {
+  width: 60%;
+  height: 100%;
+  margin: 30px;
+  margin-bottom: 4rem;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+#formFrame {
+  width: 400px;
+  padding: 40px;
+  border-radius: 50px;
+  color: #101010;
+}
+
+textarea {
+  padding: 10px;
+  max-width: 100%;
+  line-height: 1.5;
+  border-radius: 5px;
+  border: 1px solid #ccc;
+  box-shadow: 1px 1px 1px #999;
+}
+
+textarea {
+  width: 500px;
+  height: 100px;
+  background: none repeat scroll 0 0 rgba(255, 255, 255, 0.151);
+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) inset;
+  color: #555555;
+  font-size: 0.9em;
+  line-height: 1.4em;
+  padding: 5px 8px;
+  transition: background-color 0.2s ease 0s;
+}
+
+
+textarea:focus {
+  background: none repeat scroll 0 0 #FFFFFF;
+  outline-width: 0;
+}
+</style>
\ No newline at end of file