diff --git a/backend/internal/database/db.go b/backend/internal/database/db.go
index 6bf6fba..0bd67bc 100644
--- a/backend/internal/database/db.go
+++ b/backend/internal/database/db.go
@@ -17,6 +17,7 @@ type Database interface {
 	AddUser(username string, password string) error
 	CheckUser(username string, password string) bool
 	RemoveUser(username string) error
+	RemoveUserFromProject(username string, projectname string) error
 	PromoteToAdmin(username string) error
 	GetUserId(username string) (int, error)
 	AddProject(name string, description string, username string) error
@@ -86,6 +87,10 @@ const isProjectManagerQuery = `SELECT COUNT(*) > 0 FROM user_roles
 								JOIN projects ON user_roles.project_id = projects.id
 								WHERE users.username = ? AND projects.name = ? AND user_roles.p_role = 'project_manager'`
 
+const removeUserFromProjectQuery = `DELETE FROM user_roles 
+									WHERE user_id = (SELECT id FROM users WHERE username = ?) 
+									AND project_id = (SELECT id FROM projects WHERE name = ?)`
+
 // DbConnect connects to the database
 func DbConnect(dbpath string) Database {
 	// Open the database
@@ -147,6 +152,11 @@ func (d *Db) AddUserToProject(username string, projectname string, role string)
 	return err
 }
 
+func (d *Db) RemoveUserFromProject(username string, projectname string) error {
+	_, err := d.Exec(removeUserFromProjectQuery, username, projectname)
+	return err
+}
+
 // ChangeUserRole changes the role of a user within a project.
 func (d *Db) ChangeUserRole(username string, projectname string, role string) error {
 	// Execute the SQL query to change the user's role
diff --git a/backend/internal/handlers/projects/RemoveUserFromProject.go b/backend/internal/handlers/projects/RemoveUserFromProject.go
new file mode 100644
index 0000000..7aefcf8
--- /dev/null
+++ b/backend/internal/handlers/projects/RemoveUserFromProject.go
@@ -0,0 +1,40 @@
+package projects
+
+import (
+	db "ttime/internal/database"
+
+	"github.com/gofiber/fiber/v2"
+	"github.com/gofiber/fiber/v2/log"
+	"github.com/golang-jwt/jwt/v5"
+)
+
+func RemoveUserFromProject(c *fiber.Ctx) error {
+	user := c.Locals("user").(*jwt.Token)
+	claims := user.Claims.(jwt.MapClaims)
+	pm_name := claims["name"].(string)
+
+	project := c.Params("projectName")
+	username := c.Query("userName")
+
+	// Check if the user is a project manager
+	isPM, err := db.GetDb(c).IsProjectManager(pm_name, project)
+	if err != nil {
+		log.Info("Error checking if user is project manager:", err)
+		return c.Status(500).SendString(err.Error())
+	}
+
+	if !isPM {
+		log.Info("User: ", pm_name, " is not a project manager in project: ", project)
+		return c.Status(403).SendString("User is not a project manager")
+	}
+
+	// Remove the user from the project
+	if err = db.GetDb(c).RemoveUserFromProject(username, project); err != nil {
+		log.Info("Error removing user from project:", err)
+		return c.Status(500).SendString(err.Error())
+	}
+
+	// Return success message
+	log.Info("User : ", username, " removed from project: ", project)
+	return c.SendStatus(fiber.StatusOK)
+}
diff --git a/backend/main.go b/backend/main.go
index b5ecacf..42daa5c 100644
--- a/backend/main.go
+++ b/backend/main.go
@@ -121,6 +121,7 @@ func main() {
 	api.Post("/ProjectRoleChange", projects.ProjectRoleChange)
 	api.Put("/promoteToPm/:projectName", projects.PromoteToPm)
 	api.Put("/addUserToProject/:projectName", projects.AddUserToProjectHandler)
+	api.Delete("/removeUserFromProject/:projectName", projects.RemoveUserFromProject)
 	api.Delete("/removeProject/:projectName", projects.RemoveProject)
 	api.Delete("/project/:projectID", projects.DeleteProject)
 
diff --git a/frontend/src/API/API.ts b/frontend/src/API/API.ts
index b3c6eae..3c0f0e9 100644
--- a/frontend/src/API/API.ts
+++ b/frontend/src/API/API.ts
@@ -201,6 +201,12 @@ interface API {
     token: string,
   ): Promise<APIResponse<void>>;
 
+  removeUserFromProject(
+    user: string,
+    project: string,
+    token: string,
+  ): Promise<APIResponse<void>>;
+
   removeProject(
     projectName: string,
     token: string,
@@ -359,6 +365,31 @@ export const api: API = {
     }
   },
 
+  async removeUserFromProject(
+    user: string,
+    project: string,
+    token: string,
+  ): Promise<APIResponse<void>> {
+    try {
+      const response = await fetch(
+        `/api/removeUserFromProject/${project}?userName=${user}`,
+        {
+          method: "DELETE",
+          headers: {
+            "Content-Type": "application/json",
+            Authorization: "Bearer " + token,
+          },
+        },
+      );
+      if (!response.ok) {
+        return { success: false, message: "Failed to remove member" };
+      }
+    } catch (e) {
+      return { success: false, message: "Failed to remove member" };
+    }
+    return { success: true, message: "Removed member" };
+  },
+
   async renewToken(token: string): Promise<APIResponse<string>> {
     try {
       const response = await fetch("/api/loginrenew", {