diff --git a/WEB-INF/src/controleurs/Discover.java b/WEB-INF/src/controleurs/Discover.java
new file mode 100644
index 0000000000000000000000000000000000000000..31645e0ee2641c9c65e0ddeaa9a0bbdcd919a993
--- /dev/null
+++ b/WEB-INF/src/controleurs/Discover.java
@@ -0,0 +1,84 @@
+package controleurs;
+
+import dao.ThreadDAO;
+import dao.UserDAO;
+import dto.Message;
+import dto.MyThread;
+import dto.User;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+
+@WebServlet("/Discover")
+public class Discover extends HttpServlet {
+    public void service(HttpServletRequest req, HttpServletResponse res)
+            throws IOException {
+        if (req.getSession().getAttribute("user") != null) {
+            UserDAO userDao = new UserDAO();
+            ThreadDAO threadDao = new ThreadDAO();
+            PrintWriter out = res.getWriter();
+            String login = (String) req.getSession().getAttribute("login");
+
+            User user = (User) req.getSession().getAttribute("user");
+
+            if (user != null) {
+                List<Message> messages = null;
+                messages = threadDao.getAllMessages();
+
+                out.println("<html><body><meta charset=\"utf-8\">");
+                out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
+                out.println("<title>Discover</title>");
+
+                out.println("<h1>Discover the threads you're not following yet</h1>");
+
+                out.println(PageGeneration.generateNavMenu());
+
+                if (!messages.isEmpty()) {
+                    for (Message message : messages) {
+                        MyThread msgThread = null;
+                        try {
+                            msgThread = threadDao.getThreadById(message.getThreadId());
+                        } catch (SQLException e) {
+                            throw new RuntimeException(e);
+                        }
+                        out.println("<div class=\"message\">");
+                        out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>");
+                        out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
+                        out.println("<p class=\"sender\">by " + userDao.getUserById(message.getSenderId()).getUserName() + "</p>");
+
+                        out.println("<form class=\"followThread\" action=\"http://localhost:8080/s4a021-web-backend/FollowThread\" method=\"post\">");
+                        out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() +"\">");
+                        out.println("<button type=\"submit\">Follow</button>");
+                        out.println("</form>");
+                    }
+                }
+                else {
+                    out.println("<p class=\"information\">No new thread to discover for now !</p>");
+                }
+
+                out.println("<div class=\"discover\">");
+                out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>");
+                out.println("</div>");
+
+                out.println("</body>");
+                out.println("<footer>");
+                out.println("Connected as " + login);
+                out.println("</footer>");
+                out.println("</html>");
+
+            }
+
+
+        } else {
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
+        }
+
+    }
+
+}
diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java
index a31cea7043a98b6f13f100d2958eabfc3b45d6d9..cbc8c1119af13c70e00dc2c2311e55e6d0649fc5 100644
--- a/WEB-INF/src/controleurs/Feed.java
+++ b/WEB-INF/src/controleurs/Feed.java
@@ -20,7 +20,6 @@ public class Feed extends HttpServlet {
     public void service(HttpServletRequest req, HttpServletResponse res)
             throws IOException {
         if (req.getSession().getAttribute("user") != null) {
-            System.out.println("Utilisateur connecté :" + req.getSession().getAttribute("user"));
             UserDAO userDao = new UserDAO();
             ThreadDAO threadDao = new ThreadDAO();
             PrintWriter out = res.getWriter();
@@ -41,7 +40,7 @@ public class Feed extends HttpServlet {
                 out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
                 out.println("<title>Welcome</title>");
 
-                out.println("<h1>Welcome " + login + "</h1>");
+                out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>");
                 
                 out.println(PageGeneration.generateNavMenu());
 
diff --git a/WEB-INF/src/controleurs/FollowThread.java b/WEB-INF/src/controleurs/FollowThread.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d69a3afe78565cf8aa5fc4410e3338edce29d46
--- /dev/null
+++ b/WEB-INF/src/controleurs/FollowThread.java
@@ -0,0 +1,37 @@
+package controleurs;
+
+import dao.ThreadDAO;
+import dao.UserDAO;
+import dto.User;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.SQLException;
+
+@WebServlet("/FollowThread")
+public class FollowThread {
+    public void service(HttpServletRequest req, HttpServletResponse res)
+            throws IOException {
+        if (req.getSession().getAttribute("user") != null) {
+            User user = (User) req.getSession().getAttribute("user");
+
+            UserDAO userDao = new UserDAO();
+            ThreadDAO threadDao = new ThreadDAO();
+            PrintWriter out = res.getWriter();
+            String login = (String) req.getSession().getAttribute("login");
+
+            try {
+                userDao.followThread(user, threadDao.getThreadById((Integer.parseInt(req.getParameter("threadid")))));
+            }
+            catch (SQLException sqle) {
+                sqle.getStackTrace();
+            }
+        }
+        else {
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
+        }
+    }
+}
diff --git a/WEB-INF/src/controleurs/Following.java b/WEB-INF/src/controleurs/Following.java
index 07cc323cdea3a7da039db2b37c01ccc7c99062a1..d98f435d92f44d3d2b96e95095137649f9174d28 100644
--- a/WEB-INF/src/controleurs/Following.java
+++ b/WEB-INF/src/controleurs/Following.java
@@ -25,7 +25,7 @@ public class Following extends HttpServlet {
             UserDAO userDAO = new UserDAO();
 
             String login = (String) req.getSession().getAttribute("login");
-            User user = userDAO.getUserByLogs(login, req.getSession().getAttribute("password").toString());
+            User user = (User) req.getSession().getAttribute("user");
             if (!userDAO.isDatabased(user)) res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
 
             List<MyThread> threadsFollowedByUser = null;
diff --git a/WEB-INF/src/dao/ThreadDAO.java b/WEB-INF/src/dao/ThreadDAO.java
index 3c5ae83b48744ea65cf9106bc81258a21398a035..8c3860f2f21cfa147c9fa75005c20dad93243b30 100644
--- a/WEB-INF/src/dao/ThreadDAO.java
+++ b/WEB-INF/src/dao/ThreadDAO.java
@@ -20,7 +20,7 @@ public class ThreadDAO {
         ArrayList<Message> messages = new ArrayList<>();
         try{
             Statement stmt = this.con.createStatement();
-            ResultSet rs = stmt.executeQuery("SELECT * FROM msg;");
+            ResultSet rs = stmt.executeQuery("SELECT * FROM msg ORDER BY posted_at DESC;");
 
             while(rs.next()){
                 int msgId = rs.getInt(1);
diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java
index c2c3eb05f34dd5a648197b3a80c736899b68caf7..0e8ec682c0e13a348c9ec60809eb18d90efd7ac6 100644
--- a/WEB-INF/src/dao/UserDAO.java
+++ b/WEB-INF/src/dao/UserDAO.java
@@ -169,9 +169,7 @@ public class UserDAO {
     public void postMessage(User user, MyThread thread, String message) throws SQLException {
         PreparedStatement ps = this.con.prepareStatement("INSERT INTO msg (userID_msg, threadID, msg, posted_at) VALUES(?, ?, ?, ?)");
         try {
-            System.out.println("dans le try de post message");
             ps.setInt(1, user.getId());
-            // PROBLEME ICI 
             ps.setInt(2, thread.getId());
             ps.setString(3, message);
             Date date = Date.valueOf(LocalDate.now());