Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AuthRequestDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AuthRequestDto.java	(revision 0792d02b326867cae564f7072133934be31d9dee)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AuthRequestDto.java	(revision 3de009b3a9676182b474a121be9e8d177d692101)
@@ -1,6 +1,9 @@
 package com.ukim.finki.develop.finkwave.model.dto;
 
+import com.ukim.finki.develop.finkwave.model.enums.UserType;
 import jakarta.annotation.Nullable;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
 
 public record AuthRequestDto(
@@ -9,4 +12,5 @@
         String email,
         String password,
+        ArrayList<UserType> userType,
         @Nullable MultipartFile profilePhoto){
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/enums/UserType.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/enums/UserType.java	(revision 3de009b3a9676182b474a121be9e8d177d692101)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/enums/UserType.java	(revision 3de009b3a9676182b474a121be9e8d177d692101)
@@ -0,0 +1,6 @@
+package com.ukim.finki.develop.finkwave.model.enums;
+
+public enum UserType {
+    LISTENER,
+    ARTIST
+}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AuthService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AuthService.java	(revision 0792d02b326867cae564f7072133934be31d9dee)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AuthService.java	(revision 3de009b3a9676182b474a121be9e8d177d692101)
@@ -7,4 +7,8 @@
 import java.util.UUID;
 
+import com.ukim.finki.develop.finkwave.model.*;
+import com.ukim.finki.develop.finkwave.model.enums.UserType;
+import com.ukim.finki.develop.finkwave.repository.ArtistRepository;
+import com.ukim.finki.develop.finkwave.repository.ListenerRepository;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -19,8 +23,4 @@
 import com.ukim.finki.develop.finkwave.exceptions.UserAlreadyExistsException;
 import com.ukim.finki.develop.finkwave.exceptions.UserNotFoundException;
-import com.ukim.finki.develop.finkwave.model.NonAdminUser;
-import com.ukim.finki.develop.finkwave.model.RefreshToken;
-import com.ukim.finki.develop.finkwave.model.Role;
-import com.ukim.finki.develop.finkwave.model.User;
 import com.ukim.finki.develop.finkwave.model.dto.AuthRequestDto;
 import com.ukim.finki.develop.finkwave.model.dto.LoginRequestDto;
@@ -39,8 +39,13 @@
     private final UserRepository userRepository;
     private final NonAdminUserRepository nonAdminUserRepository;
-    private final PasswordEncoder passwordEncoder;
+    private final ArtistRepository artistRepository;
+    private final ListenerRepository listenerRepository;
+
     private final JwtService jwtService;
     private final RefreshTokenService refreshTokenService;
+
+    private final PasswordEncoder passwordEncoder;
     private final AuthProperties authProperties;
+
 
     private static final long MAX_FILE_SIZE = 2_000_000;
@@ -151,4 +156,16 @@
         user.setNonAdminUser(nonAdminUser);
         nonAdminUserRepository.save(nonAdminUser);
+
+        if (authRequestDto.userType().contains(UserType.ARTIST)){
+            Artist artist = new Artist();
+            artist.setNonAdminUser(nonAdminUser);
+            artistRepository.save(artist);
+        }
+        if (authRequestDto.userType().contains(UserType.LISTENER)){
+            Listener listener = new Listener();
+            listener.setNonAdminUser(nonAdminUser);
+            listenerRepository.save(listener);
+        }
+
         return user;
     }
Index: frontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision 0792d02b326867cae564f7072133934be31d9dee)
+++ frontend/src/pages/Register.tsx	(revision 3de009b3a9676182b474a121be9e8d177d692101)
@@ -4,5 +4,5 @@
 import axiosInstance, { scheduleTokenRefresh } from "../api/axiosInstance";
 import { useAuth } from "../context/authContext";
-import type { User } from "../utils/types";
+import type { User, UserRegisterType } from "../utils/types";
 
 const Register = () => {
@@ -11,4 +11,5 @@
 	const [password, setPassword] = useState("");
 	const [fullname, setFullname] = useState("");
+	const [userType, setUserType] = useState<UserRegisterType[]>([]);
 	const [email, setEmail] = useState("");
 	const [profilePhotoFile, setProfilePhotoFile] = useState<File | null>(null);
@@ -43,9 +44,14 @@
 		}
 
-		if (username === "" || password === "" || fullname === "" || email === "") {
+		if (
+			username === "" ||
+			password === "" ||
+			fullname === "" ||
+			email === "" ||
+			userType.length === 0
+		) {
 			setError("Please fill in all required fields.");
 			return;
 		}
-
 		if (profilePhotoFile && !profilePhotoFile.type.startsWith("image/")) {
 			alert("Only images allowed");
@@ -58,4 +64,5 @@
 		formData.append("email", email);
 		formData.append("password", password);
+		userType.forEach((type) => formData.append("userType", type));
 
 		try {
@@ -77,5 +84,8 @@
 		<div className="flex flex-col items-center justify-center min-h-[90vh] bg-gray-100">
 			<h2 className="text-2xl mb-4">Register</h2>
-			<form className="bg-white p-6 rounded shadow-md w-full max-w-md">
+			<form
+				className="bg-white p-6 rounded shadow-md w-full max-w-md"
+				onSubmit={handleRegister}
+			>
 				{error && <p className="text-red-500 mb-4">{error}</p>}
 				<div className="mb-4">
@@ -126,4 +136,41 @@
 						onChange={(e) => setEmail(e.target.value)}
 					/>
+				</div>
+				<div className="mb-4">
+					<label className="block text-gray-700 mb-2" htmlFor="userType">
+						User Type
+					</label>
+					<input
+						type="checkbox"
+						id="artist"
+						value="ARTIST"
+						onChange={(e) => {
+							if (e.target.checked) {
+								setUserType((prev) => [...prev, "ARTIST"]);
+							} else {
+								setUserType((prev) => prev.filter((type) => type !== "ARTIST"));
+							}
+						}}
+					/>
+					<label htmlFor="artist" className="ml-2 mr-4">
+						Artist
+					</label>
+					<input
+						type="checkbox"
+						id="listener"
+						value="LISTENER"
+						onChange={(e) => {
+							if (e.target.checked) {
+								setUserType((prev) => [...prev, "LISTENER"]);
+							} else {
+								setUserType((prev) =>
+									prev.filter((type) => type !== "LISTENER"),
+								);
+							}
+						}}
+					/>
+					<label htmlFor="listener" className="ml-2">
+						Listener
+					</label>
 				</div>
 				<div className="mb-4">
Index: frontend/src/utils/types.ts
===================================================================
--- frontend/src/utils/types.ts	(revision 0792d02b326867cae564f7072133934be31d9dee)
+++ frontend/src/utils/types.ts	(revision 3de009b3a9676182b474a121be9e8d177d692101)
@@ -1,53 +1,55 @@
 export interface User {
-  username: string;
-  fullName: string;
-  email?: string;
-  profilePhoto?: string | null;
-  role?: "ADMIN" | "NONADMIN";
+	username: string;
+	fullName: string;
+	email?: string;
+	profilePhoto?: string | null;
+	role?: "ADMIN" | "NONADMIN";
 }
 
 export interface ArtistContribution {
-  id: number;
-  title: string;
-  genre: string;
-  role: string;
-  entityType: string;
-  isLikedByCurrentUser: boolean;
+	id: number;
+	title: string;
+	genre: string;
+	role: string;
+	entityType: string;
+	isLikedByCurrentUser: boolean;
 }
 
 export interface MusicalEntity {
-  id: number;
-  title: string;
-  genre: string;
-  type: string;
-  releasedBy: string;
-  isLikedByCurrentUser?: boolean;
+	id: number;
+	title: string;
+	genre: string;
+	type: string;
+	releasedBy: string;
+	isLikedByCurrentUser?: boolean;
 }
 
 export interface Song extends MusicalEntity {
-  type: "SONG";
+	type: "SONG";
 }
 
 export interface Album extends MusicalEntity {
-  type: "ALBUM";
-  songs: Song[];
+	type: "ALBUM";
+	songs: Song[];
 }
 
 export interface Playlist {
-  id: number;
-  name: string;
-  cover: string;
-  creatorName: string;
-  songsInPlaylist: Song[];
-  isSavedByCurrentUser: boolean;
+	id: number;
+	name: string;
+	cover: string;
+	creatorName: string;
+	songsInPlaylist: Song[];
+	isSavedByCurrentUser: boolean;
 }
 
 export interface BaseNonAdminUser {
-  username: string;
-  fullName: string;
-  userType: string;
-  profilePhoto: string;
-  followers: number;
-  following: number;
-  isFollowedByCurrentUser: boolean;
+	username: string;
+	fullName: string;
+	userType: string;
+	profilePhoto: string;
+	followers: number;
+	following: number;
+	isFollowedByCurrentUser: boolean;
 }
+
+export type UserRegisterType = "ARTIST" | "LISTENER";
