Index: src/main/java/com/db/finki/www/build_board/entity/Moderator.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/Moderator.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/java/com/db/finki/www/build_board/entity/Moderator.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,10 @@
+package com.db.finki.www.build_board.entity;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "moderator")
+public class Moderator extends BBUser {
+
+}
Index: src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -3,4 +3,7 @@
 import com.db.finki.www.build_board.entity.user_types.BBUser;
 import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 import lombok.*;
 
Index: src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -6,8 +6,5 @@
 import jakarta.persistence.Table;
 import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
+import lombok.NoArgsConstructor
 import java.util.ArrayList;
 import java.util.List;
Index: src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -6,5 +6,4 @@
 import lombok.*;
 
-import java.util.Map;
 import java.util.List;
 
Index: src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -41,4 +41,12 @@
 
     @Override
+    public String getUsername() {
+        return username;
+    }
+    @Override
+    public String getPassword() {
+        return password;
+    }
+    @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {
         return List.of();
Index: src/main/java/com/db/finki/www/build_board/repository/threads/TopicRepository.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/threads/TopicRepository.java	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/java/com/db/finki/www/build_board/repository/threads/TopicRepository.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -1,13 +1,9 @@
 package com.db.finki.www.build_board.repository.threads;
 
-import com.db.finki.www.build_board.entity.threads.BBThread;
 import com.db.finki.www.build_board.entity.threads.Topic;
-import com.db.finki.www.build_board.entity.threads.interfaces.NamedThread;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
 
 @Repository
Index: src/main/java/com/db/finki/www/build_board/service/threads/NamedThreadService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/threads/NamedThreadService.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/java/com/db/finki/www/build_board/service/threads/NamedThreadService.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,24 @@
+package com.db.finki.www.build_board.service.threads;
+
+import com.db.finki.www.build_board.entity.threads.interfaces.NamedThread;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+@Service
+public class NamedThreadService {
+    //TODO: Add project support also
+     private final TopicServiceImpl topicsService;
+
+    public NamedThreadService(TopicServiceImpl topicsService) {
+        this.topicsService = topicsService;
+    }
+
+    public List<NamedThread> findAll(){
+        List<NamedThread> results = (List<NamedThread>) (List<?>) topicsService.getAll();
+
+        Collections.shuffle(results);
+        return results;
+    }
+}
Index: src/main/java/com/db/finki/www/build_board/service/threads/TopicService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/threads/TopicService.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/java/com/db/finki/www/build_board/service/threads/TopicService.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,11 @@
+package com.db.finki.www.build_board.service.threads;
+
+import com.db.finki.www.build_board.entity.BBUser;
+import com.db.finki.www.build_board.entity.threads.Topic;
+
+import java.util.List;
+
+public interface TopicService {
+    void create(String title, String description, BBUser user);
+    List<Topic> getAll();
+}
Index: src/main/java/com/db/finki/www/build_board/service/threads/TopicServiceImpl.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/threads/TopicServiceImpl.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/java/com/db/finki/www/build_board/service/threads/TopicServiceImpl.java	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,32 @@
+package com.db.finki.www.build_board.service.threads;
+
+import com.db.finki.www.build_board.entity.BBUser;
+import com.db.finki.www.build_board.entity.threads.Topic;
+import com.db.finki.www.build_board.repository.threads.TopicRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class TopicServiceImpl implements TopicService {
+    private final TopicRepository topicRepository;
+
+    public TopicServiceImpl(TopicRepository topicRepository) {
+        this.topicRepository = topicRepository;
+    }
+
+
+    @Override
+    public void create(String title, String description, BBUser user) {
+        Topic topic = new Topic();
+        topic.setTitle(title);
+        topic.setContent(description);
+        topic.setUser(user);
+        topicRepository.save(topic);
+    }
+
+    @Override
+    public List<Topic> getAll() {
+        return topicRepository.findAll();
+    }
+}
Index: src/main/resources/db/migration/U1__remove_ddl.sql
===================================================================
--- src/main/resources/db/migration/U1__remove_ddl.sql	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/resources/db/migration/U1__remove_ddl.sql	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -36,3 +36,2 @@
 drop function if exists clean_routines CASCADE;
 DROP TRIGGER IF EXISTS validate_same_parent ON discussion_thread CASCADE;
-
Index: src/main/resources/db/migration/V2__adding_test_data.sql
===================================================================
--- src/main/resources/db/migration/V2__adding_test_data.sql	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/resources/db/migration/V2__adding_test_data.sql	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,110 @@
+INSERT INTO users (username, is_activate, password, description, registered_at, sex)
+VALUES
+    ('user1', true, '$2a$12$0f.x7aBM2wFBZBXoLPj0BObVsk.J1kXFYo5nb4niAWkI4hk5tHvDy', 'First user', NOW(), 'M'),
+    ('user2', true, '$2a$12$VkR0a47LDVM6aUqFcEJGSu9jhZCz.05tCoyiRicFObt4f2x2gijKa', 'Second user', NOW(), 'F'),
+    ('user3', true, '$2a$12$eSLdHHJ1KFgv.dOupmloXeItjrt2o1IB6ER6Nq7WYj9Jfr2bEwK2a', 'Third user', NOW(), 'M'),
+    ('user4', true, '$2a$12$dF5SXcNhMulgU3Qre3nh1e.aatRiJZsnfoBSqReGnXe9rIbHYVWhe', 'Fourth user', NOW(), 'F'),
+    ('user5', true, '$2a$12$zHrloz8WG2zo5S6MTf1C0ez1raMlmDJdB8OOa2I1S2pVy9oI76YTa', 'Fifth user', NOW(), 'M');
+
+INSERT INTO thread (content, user_id)
+VALUES
+    ('Main content for topic thread 1', 1),
+    ('Main content for topic thread 2', 2),
+    ('Discussion content for topic 1', 1),
+    ('Discussion content for topic 2', 2),
+    ('Project-specific thread content', 3),
+    ('Reply to topic 1', 4),
+    ('Further discussion on topic 2', 5);
+
+INSERT INTO topic_thread (id, title, guidelines, parent_id)
+VALUES
+    (1, 'Topic 1', '{"rule1": "Follow guidelines"}', NULL),
+    (2, 'Topic 2', '{"rule2": "Be respectful"}', NULL);
+
+INSERT INTO discussion_thread (id, parent_id)
+VALUES
+    (3, 1),
+    (4, 2),
+    (6, 3),
+    (7, 4);
+
+INSERT INTO project_thread (id, title, repo_url)
+VALUES
+    (5, 'Project 1 Thread', 'http://github.com/project1');
+
+INSERT INTO likes (user_id, thread_id)
+VALUES
+    (1, 3),
+    (2, 4),
+    (3, 5),
+    (4, 6),
+    (5, 7);
+
+INSERT INTO tag (name)
+VALUES
+    ('Tag1'),
+    ('Tag2'),
+    ('Tag3');
+
+INSERT INTO tag_threads (thread_id, tag_name)
+VALUES
+    (1, 'Tag1'),
+    (3, 'Tag2'),
+    (5, 'Tag3'),
+    (6, 'Tag1');
+
+INSERT INTO topic_belongs_to_project (topic_id, project_id)
+VALUES
+    (1, 5),
+    (2, 5);
+
+INSERT INTO blacklisted_user (topic_id, user_id, moderator_id, start_date, end_date, reason)
+VALUES
+    (1, 2, 1, NOW(), NOW() + INTERVAL '7 days', 'Spamming'),
+    (2, 3, 4, NOW(), NOW() + INTERVAL '3 days', 'Offensive language');
+
+INSERT INTO developer_associated_with_project (project_id, developer_id, started_at)
+VALUES
+    (5, 2, NOW()),
+    (5, 3, NOW());
+
+INSERT INTO permissions (name)
+VALUES
+    ('Create Thread'),
+    ('Delete Thread');
+
+INSERT INTO project_roles (name, project_id, description)
+VALUES
+    ('Admin', 5, 'Admin role for the project'),
+    ('Developer', 5, 'Developer role for the project');
+
+INSERT INTO users_project_roles (user_id, project_id, role_name)
+VALUES
+    (3, 5, 'Admin'),
+    (2, 5, 'Developer'),
+    (4, 5, 'Developer');
+
+INSERT INTO project_roles_permissions (permission_name, role_name, project_id)
+VALUES
+    ('Create Thread', 'Admin', 5),
+    ('Delete Thread', 'Admin', 5);
+
+INSERT INTO project_request (description, status, user_id, project_id)
+VALUES
+    ('Request to join Project 1', 'PENDING', 2, 5),
+    ('Request to join Project 1', 'ACCEPTED', 4, 5);
+
+INSERT INTO report (created_at, description, status, thread_id, for_user_id, by_user_id)
+VALUES
+    (NOW(), 'Inappropriate content', 'PENDING', 3, 2, 1),
+    (NOW(), 'Spam content', 'DENIED', 6, 4, 3);
+
+INSERT INTO channel (name, description, project_id, developer_id)
+VALUES
+    ('General', 'General discussion channel', 5, 2),
+    ('Updates', 'Project updates channel', 5, 3);
+
+INSERT INTO messages (sent_at, content, sent_by, project_id, channel_name)
+VALUES
+    (NOW(), 'Hello, team!', 2, 5, 'General'),
+    (NOW(), 'We need to push the deadline.', 3, 5, 'Updates');
Index: src/main/resources/templates/home.html
===================================================================
--- src/main/resources/templates/home.html	(revision 2abaa44927c23d9b724aa8c56a19a58ce453b88a)
+++ src/main/resources/templates/home.html	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -41,4 +41,6 @@
         <a href="/login" class="btn btn-primary btn-sm ms-auto" th:if="${session.user == null}">Log in</a>
     </div>
+    <a href="/login">Log in</a>
+
 </nav>
 
Index: src/main/resources/templates/project.html
===================================================================
--- src/main/resources/templates/project.html	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
+++ src/main/resources/templates/project.html	(revision b2d40bf34aa35b393a026eee1fe6ec7abeee7fc1)
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <title>Projects</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
+  <style>
+    body {
+      background-color: #000d20; /* Dark background for the whole page */
+    }
+    .card {
+      background-color: #030e23; /* Darker blue shade for the cards */
+      border: 2px solid #262a2d; /* Light blue border */
+      box-shadow: 0 6px 15px rgba(0, 0, 0, 0.4); /* Adding depth with a stronger shadow */
+      transition: transform 0.3s ease, box-shadow 0.3s ease;
+      height: 350px; /* Fixed height for larger cards */
+    }
+    .card:hover {
+      transform: translateY(-10px); /* More prominent lift on hover */
+      box-shadow: 0 10px 25px rgba(0, 0, 0, 0.6); /* Deeper shadow on hover */
+    }
+    .card-header {
+      /*1a6e9c*/
+      background-color: #168f77; /* Green accent header color */
+      color: #000000;
+    }
+    .card-body {
+      background-color: #00386e; /* Same blue as the card body */
+      color: #ffffff;
+      height: 200px; /* Larger height for the card body */
+      overflow-y: auto; /* Allow scrolling if content exceeds height */
+    }
+    .card-footer {
+      background-color: #000d20;
+      color: #ffffff;
+    }
+    .card-title {
+      color: #e0e0e0;
+    }
+    .card-text {
+      color: #ffffff;
+    }
+    .btn-link {
+      color: #53daa2; /* Green accent for buttons */
+    }
+  </style>
+</head>
+<body>
+
+<header class="container ms-4 mt-4">
+  <h1 class="text-light">Projects</h1>
+  <h2 class="text-muted ps-3 fs-5">View All Projects</h2>
+</header>
+
+<div class="container w-100 pt-5">
+  <!-- Card 1 -->
+  <div class="card mb-4">
+    <div class="card-header">
+      <h2 class="card-title">Project 1</h2>
+    </div>
+    <div class="card-body">
+      <p class="card-text">Short description of Project 1.</p>
+      <button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#collapseProject1" aria-expanded="false" aria-controls="collapseProject1">
+        Learn More
+      </button>
+      <div class="collapse mt-3" id="collapseProject1">
+        <div class="card card-body">
+          <p>More detailed information about Project 1...</p>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <!-- Card 2 -->
+  <div class="card mb-4">
+    <div class="card-header">
+      <h2 class="card-title">Project 2</h2>
+    </div>
+    <div class="card-body">
+      <p class="card-text">Short description of Project 2.</p>
+      <button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#collapseProject2" aria-expanded="false" aria-controls="collapseProject2">
+        Learn More
+      </button>
+      <div class="collapse mt-3" id="collapseProject2">
+        <div class="card card-body">
+          <p>More detailed information about Project 2...</p>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <!-- Card 3 -->
+  <div class="card mb-4">
+    <div class="card-header">
+      <h2 class="card-title">Project 3</h2>
+    </div>
+    <div class="card-body">
+      <p class="card-text">Short description of Project 3.</p>
+      <button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#collapseProject3" aria-expanded="false" aria-controls="collapseProject3">
+        Learn More
+      </button>
+      <div class="collapse mt-3" id="collapseProject3">
+        <div class="card card-body">
+          <p>More detailed information about Project 3...</p>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <!-- Card 4 -->
+  <div class="card mb-4">
+    <div class="card-header">
+      <h2 class="card-title">Project 4</h2>
+    </div>
+    <div class="card-body">
+      <p class="card-text">Short description of Project 4.</p>
+      <button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#collapseProject4" aria-expanded="false" aria-controls="collapseProject4">
+        Learn More
+      </button>
+      <div class="collapse mt-3" id="collapseProject4">
+        <div class="card card-body">
+          <p>More detailed information about Project 4...</p>
+        </div>
+      </div>
+    </div>
+  </div>
+
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
