diff --git a/tp_note_2023_2024/prisma/dev.db b/tp_note_2023_2024/prisma/dev.db
index 92ac8b423c734ca85427625327704038a29ed206..bd6a8b3c7e0e47213d688d8a7bb7e1e2ba296f58 100644
Binary files a/tp_note_2023_2024/prisma/dev.db and b/tp_note_2023_2024/prisma/dev.db differ
diff --git a/tp_note_2023_2024/src/requestHandlers/project.ts b/tp_note_2023_2024/src/requestHandlers/project.ts
index 9c3e92ee0260b23768327660e233d7c8bd749760..02aff9445e3391ce4b826c1f44472dd6ca7681b5 100644
--- a/tp_note_2023_2024/src/requestHandlers/project.ts
+++ b/tp_note_2023_2024/src/requestHandlers/project.ts
@@ -2,4 +2,65 @@ import { prisma } from '../db';
 import type { Request, Response } from 'express';
 import { HttpError } from '../error';
 import { assert } from 'superstruct';
+import { ProjectUpdateData } from "../validation/project";
+import { responde } from "../functions";
 
+export async function update_one(req: Request, res: Response) {
+    
+    assert(req.body, ProjectUpdateData);
+    
+    const project = await prisma.project.update({
+      where: { id: Number(req.params.project_id) },
+      data: req.body,
+      include: {
+        tasks: true,
+      }
+    });
+    if (project == null) {
+      throw new HttpError("Project doesn't exist", 404);
+    }
+    responde(res, 200, "Project succesfully updated.", project);
+}
+
+
+export async function delete_one(req: Request, res: Response) {
+    const project = await prisma.project.delete({
+        where: { id: Number(req.params.project_id) }
+    });
+    if (project == null) {
+      throw new HttpError("Project doesn't exist", 404);
+    }
+    responde(res, 204, "Project succesfully deleted.");
+}
+
+export async function get_project_tasks(req: Request, res: Response) {
+  const project = await prisma.project.findUnique({
+    where: { id: Number(req.params.project_id) },
+    include: {
+      tasks: true,
+    },
+  });
+  if (project == null) {
+    throw new HttpError("Project doesn't exist", 404);
+  }
+  res.status(200).json(project.tasks);
+}
+
+export async function create_project_task(req: Request, res: Response) {
+  const project = await prisma.project.update({
+    where: { id: Number(req.params.project_id) },
+    data: {
+      tasks: {
+        create: req.body,
+      },
+    },
+    include: {
+      tasks: true,
+    },
+  });
+
+  if (project == null) {
+    throw new HttpError("Project doesn't exist", 404);
+  }
+  responde(res, 201, "Task succesfully created.", project.tasks);
+}
diff --git a/tp_note_2023_2024/src/requestHandlers/user.ts b/tp_note_2023_2024/src/requestHandlers/user.ts
index 72c7c105396d2d46a26e880d3998da89bcec3cc6..9de48c46635c60e5183170128d975d0ee09f5ac8 100644
--- a/tp_note_2023_2024/src/requestHandlers/user.ts
+++ b/tp_note_2023_2024/src/requestHandlers/user.ts
@@ -9,9 +9,13 @@ import { ProjectCreationData } from '../validation/project';
 
 export async function get_all(req: Request, res: Response) {
   const users = await prisma.user.findMany({
-    include : {
-      createdProjects: true
-    }
+    include: {
+      createdProjects: {
+        include: {
+          tasks: true,
+        },
+      },
+    },
   });
   res.status(200).json(users);
 }
@@ -20,7 +24,11 @@ export async function get_one(req: Request, res: Response) {
   const user = await prisma.user.findUnique({
     where: { id: Number(req.params.user_id) },
     include: {
-      createdProjects: true,
+      createdProjects: {
+        include: {
+          tasks: true,
+        },
+      },
     },
   });
   if (user == null) {
@@ -41,6 +49,9 @@ export async function update_one(req: Request, res: Response) {
   const user = await prisma.user.update({
     where: { id: Number(req.params.user_id) },
     data: req.body,
+    include: {
+      createdProjects: true,
+    },
   });
   responde(res, 200, "User succesfully updated.", user);
 }
@@ -50,7 +61,7 @@ export async function delete_one(req: Request, res: Response) {
   if (user == null) {
     throw new HttpError("User doesn't exist", 404)
   }
-  responde(res, 200, "User succesfully deleted.");
+  responde(res, 204, "User succesfully deleted.");
 }
 
 export async function create_user_project(req: Request, res: Response) {
@@ -64,6 +75,9 @@ export async function create_user_project(req: Request, res: Response) {
         create: req.body
       }
     },
+    include: {
+      createdProjects: true,
+    }
   });
   if (user == null) {
     throw new HttpError("User doesn't exist", 404);
@@ -75,7 +89,11 @@ export async function get_user_project(req: Request, res: Response) {
   const user = await prisma.user.findUnique({
     where: { id: Number(req.params.user_id) },
     include: {
-      createdProjects: true,
+      createdProjects: {
+        include: {
+          tasks: true
+        }
+      },
     },
   });
   if (user == null) {
diff --git a/tp_note_2023_2024/src/routes/routes_projects.ts b/tp_note_2023_2024/src/routes/routes_projects.ts
index 65ecbf9500ef7583b24cfdc189b1512c8cf4b03c..695ade1abf15db5c3b6374f1f9ccc8327fe39c49 100644
--- a/tp_note_2023_2024/src/routes/routes_projects.ts
+++ b/tp_note_2023_2024/src/routes/routes_projects.ts
@@ -1,6 +1,11 @@
 import express from "express";
-import * as user from "../requestHandlers/user";
+import * as project from "../requestHandlers/project";
 var ex = require("express"),
   router = ex.Router();
 
+router.patch("/:project_id", project.update_one);
+router.delete("/:project_id", project.delete_one);
+router.get("/:project_id/tasks", project.get_project_tasks);
+router.post("/:project_id/tasks", project.create_project_task);
+
 module.exports = router;
diff --git a/tp_note_2023_2024/src/validation/project.ts b/tp_note_2023_2024/src/validation/project.ts
index f99cb945557009aa0d9fb9f5ae81f85f5dfe0fd8..d7519635b1be3332d053214ac0a6da11f9a9c1d8 100644
--- a/tp_note_2023_2024/src/validation/project.ts
+++ b/tp_note_2023_2024/src/validation/project.ts
@@ -3,8 +3,6 @@ import { object, string, optional, size, partial, integer, array } from 'superst
 export const ProjectCreationData = object({
     name: string(),
     description: optional(string()),
-    creatorId: integer(),
-    tasks: optional(array())
 });
 
 export const ProjectUpdateData = partial(ProjectCreationData);
\ No newline at end of file