diff --git a/pom.xml b/pom.xml
index 37df6c7668b9d40d3c7074418cb9f808ff7f81ab..4feab6cfba55120612383f7c941fb493bcdab3c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-		<java.version>21</java.version>
+		<java.version>17</java.version>
 	</properties>
 
 	<dependencies>
@@ -35,14 +35,53 @@
 			<artifactId>spring-boot-starter-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.data</groupId>
+			<artifactId>spring-data-jpa</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.mysql</groupId>
+			<artifactId>mysql-connector-j</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>jakarta.persistence</groupId>
+			<artifactId>jakarta.persistence-api</artifactId>
+			<version>3.2.0-M2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-security</artifactId>
+		</dependency>
+
 	</dependencies>
 
 	<build>
 		<plugins>
+
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok</artifactId>
+						</exclude>
+					</excludes>
+				</configuration>
 			</plugin>
+
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java
new file mode 100644
index 0000000000000000000000000000000000000000..e9b82c3f56b9faa7b980f0375e9a68e6316107b0
--- /dev/null
+++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java
@@ -0,0 +1,8 @@
+package no.ntnu.idi.stud.savingsapp.model;
+
+public enum Role {
+
+  USER,
+
+  ADMIN
+}
diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..c54eab520f2b1ec25b71dc61322fff59b0d0b801
--- /dev/null
+++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java
@@ -0,0 +1,87 @@
+package no.ntnu.idi.stud.savingsapp.model;
+
+import jakarta.annotation.Nonnull;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Entity
+@Table(name = "user")
+public class User implements UserDetails{
+
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
+  private Long id;
+
+  @NonNull
+  @Column(name = "first_name", nullable = false)
+  private String firstName;
+
+  @NonNull
+  @Column(name = "last_name", nullable = false)
+  private String lastName;
+
+  @NonNull
+  @Column(name = "email", nullable = false)
+  private String email;
+
+  @NonNull
+  @Column(name = "password", nullable = false)
+  private String password;
+
+  @NonNull
+  private Date createdAt;
+  @Nonnull
+  @Enumerated(EnumType.STRING)
+
+  private Role role;
+
+  @Override
+  public Collection<? extends GrantedAuthority> getAuthorities() {
+    return List.of(new SimpleGrantedAuthority(role.name()));
+  }
+
+  @Override
+  public String getUsername() {
+    return this.email;
+  }
+
+
+  @Override
+  public boolean isAccountNonExpired() {
+    return true;
+  }
+
+  @Override
+  public boolean isAccountNonLocked() {
+    return true;
+  }
+
+  @Override
+  public boolean isCredentialsNonExpired() {
+    return true;
+  }
+
+  @Override
+  public boolean isEnabled() {
+    return true;
+  }
+}