Index: compose.yml
===================================================================
--- compose.yml	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ compose.yml	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -5,4 +5,4 @@
     image: postgres
     env_file:
-      - env
+      - ./env
     container_name: build_board_db
Index: src/main/java/com/db/finki/www/build_board/config/WebSecurityConfig.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/config/WebSecurityConfig.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/config/WebSecurityConfig.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -19,5 +19,4 @@
 import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
 import org.springframework.security.web.context.SecurityContextRepository;
-import org.springframework.security.web.util.matcher.AndRequestMatcher;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 
Index: src/main/java/com/db/finki/www/build_board/controller/ExceptionHandler.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/ExceptionHandler.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/controller/ExceptionHandler.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -1,11 +1,8 @@
 package com.db.finki.www.build_board.controller;
 
-import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.HttpServerErrorException;
 import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.NoHandlerFoundException;
 import org.springframework.web.servlet.resource.NoResourceFoundException;
 
@@ -31,8 +28,8 @@
     }
 
-    @org.springframework.web.bind.annotation.ExceptionHandler(value = {HttpServerErrorException.InternalServerError.class })
-    public ModelAndView handleNotFound(HttpServerErrorException.InternalServerError exception) {
-        return mavBuilder(exception,"This is a server issue.\nNot your fault :).",500);
-    }
+//    @org.springframework.web.bind.annotation.ExceptionHandler(value = {HttpServerErrorException.InternalServerError.class })
+//    public ModelAndView handleNotFound(HttpServerErrorException.InternalServerError exception) {
+//        return mavBuilder(exception,"This is a server issue.\nNot your fault :).",500);
+//    }
 
 
@@ -42,5 +39,4 @@
         exception.printStackTrace();
         return mavBuilder(exception,"An error occurred.",-1);
-
     }
 }
Index: src/main/java/com/db/finki/www/build_board/controller/thread_controller/DiscussionController.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/thread_controller/DiscussionController.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/controller/thread_controller/DiscussionController.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,6 +3,4 @@
 import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.db.finki.www.build_board.service.thread.impl.DiscussionService;
-import com.db.finki.www.build_board.service.thread.impl.TopicServiceImpl;
-import com.db.finki.www.build_board.service.thread.itf.TopicService;
 import jakarta.servlet.http.HttpSession;
 import org.springframework.data.repository.query.Param;
Index: src/main/java/com/db/finki/www/build_board/controller/thread_controller/TagController.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/thread_controller/TagController.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/controller/thread_controller/TagController.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,4 +3,5 @@
 import com.db.finki.www.build_board.entity.thread.Project;
 import com.db.finki.www.build_board.entity.thread.Topic;
+import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.db.finki.www.build_board.service.thread.impl.ProjectService;
 import com.db.finki.www.build_board.service.thread.itf.TagService;
@@ -13,4 +14,5 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.SessionAttribute;
 
 
@@ -56,7 +58,8 @@
             @PathVariable(name = "title") @P("project") Project project,
             @RequestParam(name = "tagName") String tagName,
-            @RequestParam @P("username") String username
+            @RequestParam @P("username") String username,
+            @SessionAttribute("user") BBUser user
     ) {
-        projectService.addTag(project, tagName);
+        projectService.addTag(project, tagName,user);
         return "redirect:/projects/" + project.getTitle();
     }
Index: src/main/java/com/db/finki/www/build_board/controller/util/LikesController.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/util/LikesController.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/controller/util/LikesController.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -4,8 +4,6 @@
 import com.db.finki.www.build_board.entity.thread.Project;
 import com.db.finki.www.build_board.entity.thread.Topic;
-import com.db.finki.www.build_board.entity.thread.discussion_thread.Discussion;
 import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.db.finki.www.build_board.service.util.ThreadService;
-import jakarta.servlet.http.HttpSession;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -14,5 +12,4 @@
 import org.springframework.web.bind.annotation.SessionAttribute;
 
-import java.util.function.Function;
 
 @Controller
Index: src/main/java/com/db/finki/www/build_board/controller/util/SearchController.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/util/SearchController.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/controller/util/SearchController.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -2,5 +2,4 @@
 
 import com.db.finki.www.build_board.service.search.SearchService;
-import com.db.finki.www.build_board.service.thread.itf.TopicService;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
Index: src/main/java/com/db/finki/www/build_board/entity/compositeId/DeveloperAssociatedWithProjectId.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/compositeId/DeveloperAssociatedWithProjectId.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/compositeId/DeveloperAssociatedWithProjectId.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,7 +3,4 @@
 import com.db.finki.www.build_board.entity.thread.Project;
 import com.db.finki.www.build_board.entity.user_type.BBUser;
-import jakarta.persistence.Column;
-import jakarta.persistence.Id;
-import jakarta.persistence.ManyToOne;
 import lombok.Getter;
 import lombok.Setter;
Index: src/main/java/com/db/finki/www/build_board/entity/request/ProjectRequests.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/request/ProjectRequests.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/request/ProjectRequests.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -16,27 +16,8 @@
 @Entity
 @Table(name = "project_request")
-public class ProjectRequests {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "project_req_gen")
-    @SequenceGenerator(name = "project_req_gen", sequenceName = "project_request_id_seq", initialValue = 1, allocationSize = 1)
-    private int id;
-    private String description;
-
-    private LocalDateTime createdAt;
-
+public class ProjectRequests extends Submission {
     @ManyToOne
     @JoinColumn(name = "project_id")
     private Project project;
-
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private BBUser creator;
-
-    @Enumerated(EnumType.STRING)
-    private Status status;
-
-    @OneToOne
-    @JoinColumn(name = "submission_id")
-    private Submission submission;
 
     public ProjectRequests(Project project, BBUser creator, String description) {
@@ -49,5 +30,6 @@
 
     public Feedback getFeedback() {
-        return submission == null ? null : submission.getFeedback();
+        Feedback feedback = getFeedback(); 
+        return feedback == null ? null : feedback;
     }
 }
Index: c/main/java/com/db/finki/www/build_board/entity/request/Report.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/request/Report.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ 	(revision )
@@ -1,4 +1,0 @@
-package com.db.finki.www.build_board.entity.request;
-
-public class Report {
-}
Index: src/main/java/com/db/finki/www/build_board/entity/request/Submission.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/request/Submission.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/request/Submission.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -1,3 +1,8 @@
 package com.db.finki.www.build_board.entity.request;
+
+import java.time.LocalDateTime;
+
+import com.db.finki.www.build_board.entity.entity_enum.Status;
+import com.db.finki.www.build_board.entity.user_type.BBUser;
 
 import jakarta.persistence.*;
@@ -11,4 +16,5 @@
 @Setter
 @NoArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED)
 public class Submission {
     @Id
@@ -19,3 +25,13 @@
     @OneToOne(mappedBy = "forSubmission")
     private Feedback feedback;
+
+    LocalDateTime createdAt;
+    String description; 
+    
+    @Enumerated(EnumType.STRING)
+    Status status;
+
+    @ManyToOne
+    @JoinColumn(name = "created_by")
+    BBUser creator;
 }
Index: src/main/java/com/db/finki/www/build_board/entity/thread/Tag.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/thread/Tag.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/thread/Tag.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -1,9 +1,7 @@
 package com.db.finki.www.build_board.entity.thread;
 
+import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import jakarta.persistence.Entity;
-import jakarta.persistence.Id;
-import jakarta.persistence.ManyToMany;
-import jakarta.persistence.Table;
+import jakarta.persistence.*;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -24,6 +22,11 @@
     String name;
 
-    public Tag(String name) {
+    @ManyToOne
+    @JoinColumn(name = "creator_id")
+    BBUser creator;
+
+    public Tag(String name, BBUser user) {
         this.name = name;
+        this.creator = user;
     }
 
@@ -31,4 +34,5 @@
     @ManyToMany(mappedBy = "tags")
     private List<BBThread> threads = new ArrayList<>();
+
 
     @Override
Index: src/main/java/com/db/finki/www/build_board/entity/thread/discussion_thread/VDiscussion.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/thread/discussion_thread/VDiscussion.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/thread/discussion_thread/VDiscussion.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -12,4 +12,5 @@
 import java.time.LocalDateTime;
 
+//TODO: napraj da izlegvat preku created_at
 @Entity
 @Immutable
Index: src/main/java/com/db/finki/www/build_board/entity/user_type/BBUser.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_type/BBUser.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/user_type/BBUser.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -13,5 +13,4 @@
 
 import java.io.File;
-import java.io.Serializable;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -26,5 +25,5 @@
 @Table(name = "users")
 @Inheritance(strategy = InheritanceType.JOINED)
-public class BBUser implements UserDetails, Serializable {
+public class BBUser implements UserDetails {
 
     @Id
Index: src/main/java/com/db/finki/www/build_board/entity/user_type/Developer.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_type/Developer.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/user_type/Developer.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -9,6 +9,4 @@
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
Index: src/main/java/com/db/finki/www/build_board/entity/user_type/Moderator.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_type/Moderator.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/user_type/Moderator.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -9,6 +9,4 @@
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
Index: src/main/java/com/db/finki/www/build_board/entity/user_type/ProjectOwner.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_type/ProjectOwner.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/entity/user_type/ProjectOwner.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -9,6 +9,4 @@
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
Index: src/main/java/com/db/finki/www/build_board/repository/UserRepository.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/UserRepository.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/repository/UserRepository.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -11,5 +11,5 @@
 
 @Repository
-public interface UserRepository extends JpaRepository<BBUser, Long> {
+public interface UserRepository extends JpaRepository<BBUser, Integer> {
     Optional<BBUser> findByUsername(String username);
 
Index: src/main/java/com/db/finki/www/build_board/repository/channel/ChannelRepository.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/channel/ChannelRepository.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/repository/channel/ChannelRepository.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -12,4 +12,4 @@
     List<Channel> findAllByProjectIdOrderByNameAsc(Integer projectId);
     List<Channel> findAllByDeveloperIdOrderByNameAsc(Integer developerId);
-    Channel findByProjectTitleAndName(String title, String name);
+    Channel findByProjectTitleAndNameOrderByNameAsc(String title, String name);
 }
Index: src/main/java/com/db/finki/www/build_board/repository/request/FeedbackRepo.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/request/FeedbackRepo.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/repository/request/FeedbackRepo.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -2,5 +2,4 @@
 
 import com.db.finki.www.build_board.entity.request.Feedback;
-import com.db.finki.www.build_board.entity.request.Submission;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: src/main/java/com/db/finki/www/build_board/repository/request/ProjectRequestRepo.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/request/ProjectRequestRepo.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/repository/request/ProjectRequestRepo.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,5 +3,4 @@
 import com.db.finki.www.build_board.entity.entity_enum.Status;
 import com.db.finki.www.build_board.entity.request.ProjectRequests;
-import com.db.finki.www.build_board.entity.thread.Project;
 import com.db.finki.www.build_board.entity.user_type.BBUser;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -20,7 +19,9 @@
             select *
             from project_request pr
-            where (:latest is null or (pr.user_id,pr.created_at) IN ( select user_id,max(created_at) from project_request pr group by user_id)) 
+            join submission s 
+            on s.id = pr.id
+            where (:latest is null or (s.created_by,s.created_at) IN ( select created_by,max(created_at) from submission pr group by created_by)) 
                         and pr.project_id=:projectId
-                        and (:status is null or pr.status=:status)
+                        and (:status is null or s.status=:status)
             """,
             nativeQuery = true
Index: src/main/java/com/db/finki/www/build_board/repository/thread/TagRepository.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/thread/TagRepository.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/repository/thread/TagRepository.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -8,5 +8,5 @@
 
 @Repository
-public interface TagRepository extends JpaRepository<Tag, Long> {
+public interface TagRepository extends JpaRepository<Tag, String> {
     Optional<Tag> findByName(String name);
 }
Index: src/main/java/com/db/finki/www/build_board/service/channel/ChannelService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/channel/ChannelService.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/channel/ChannelService.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -33,5 +33,5 @@
 
     public Channel create(Project project, String channelName, String description, BBUser user){
-        if(channelRepository.findByProjectTitleAndName(project.getTitle(), channelName) != null) {
+        if(channelRepository.findByProjectTitleAndNameOrderByNameAsc(project.getTitle(), channelName) != null) {
             throw new IllegalArgumentException("Channel with title '" + channelName + "' already exists");
         }
@@ -46,5 +46,5 @@
     }
     public Channel getByNameAndProject(String channelName, Project project){
-        return channelRepository.findByProjectTitleAndName(project.getTitle(), channelName);
+        return channelRepository.findByProjectTitleAndNameOrderByNameAsc(project.getTitle(), channelName);
     }
     public void deleteChannel(String channelName,Project project){
Index: src/main/java/com/db/finki/www/build_board/service/request/ProjectRequestService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/request/ProjectRequestService.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/request/ProjectRequestService.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -6,9 +6,7 @@
 import com.db.finki.www.build_board.entity.thread.Project;
 import com.db.finki.www.build_board.entity.user_type.BBUser;
-import com.db.finki.www.build_board.repository.UserRepository;
 import com.db.finki.www.build_board.repository.request.ProjectRequestRepo;
 import com.db.finki.www.build_board.service.thread.impl.ProjectService;
 import jakarta.transaction.Transactional;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
@@ -19,12 +17,10 @@
     private final ProjectRequestRepo prReqRepo;
     private final FeedbackService feedbackService;
-    private final UserRepository userRepo;
     private final ProjectService projectService;
 
 
-    public ProjectRequestService(ProjectRequestRepo prReqRepo, FeedbackService feedbackService, UserRepository userRepo, ProjectService projectService) {
+    public ProjectRequestService(ProjectRequestRepo prReqRepo, FeedbackService feedbackService,ProjectService projectService) {
         this.prReqRepo = prReqRepo;
         this.feedbackService = feedbackService;
-        this.userRepo = userRepo;
         this.projectService = projectService;
     }
@@ -38,5 +34,5 @@
         ProjectRequests prReq = getRequestById(reqId);
         prReq.setStatus(Status.DENIED);
-        feedbackService.create(desc,creator,FeedbackFor.P,prReq.getSubmission());
+        feedbackService.create(desc,creator,FeedbackFor.P,prReq);
         prReqRepo.save(prReq);
     }
@@ -47,5 +43,5 @@
         prReq.setStatus(Status.ACCEPTED);
 
-        feedbackService.create(creator,FeedbackFor.P,prReq.getSubmission());
+        feedbackService.create(creator,FeedbackFor.P,prReq);
         projectService.addDeveloperToProject(prReq.getProject(), prReq.getCreator());
         prReqRepo.save(prReq);
Index: src/main/java/com/db/finki/www/build_board/service/search/SearchServiceImpl.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/search/SearchServiceImpl.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/search/SearchServiceImpl.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -6,6 +6,4 @@
 import com.db.finki.www.build_board.repository.thread.ProjectRepository;
 import com.db.finki.www.build_board.repository.thread.TopicRepository;
-import com.db.finki.www.build_board.service.util.NamedThreadService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
@@ -21,13 +19,10 @@
     private final FilterMap<Project> projectFilterMap;
     private final ProjectRepository projectRepository;
-    private final NamedThreadService namedThreadService;
 
-    @Autowired
-    public SearchServiceImpl(TopicRepository topicRepository, FilterMap<Topic> TopicFilterMap, FilterMap<Project> ProjectFilterMap, ProjectRepository projectRepository, NamedThreadService namedThreadService) {
+    public SearchServiceImpl(TopicRepository topicRepository, FilterMap<Topic> TopicFilterMap, FilterMap<Project> ProjectFilterMap, ProjectRepository projectRepository) {
         this.topicRepository = topicRepository;
         this.topicFilterMap = TopicFilterMap;
         this.projectFilterMap = ProjectFilterMap;
         this.projectRepository = projectRepository;
-        this.namedThreadService = namedThreadService;
     }
 
Index: src/main/java/com/db/finki/www/build_board/service/thread/impl/ProjectService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/thread/impl/ProjectService.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/thread/impl/ProjectService.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -7,5 +7,4 @@
 import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.db.finki.www.build_board.entity.thread.Project;
-import com.db.finki.www.build_board.entity.user_type.Developer;
 import com.db.finki.www.build_board.repository.UserRepository;
 import com.db.finki.www.build_board.repository.thread.ProjectRepository;
@@ -66,10 +65,10 @@
     }
 
-    public void addTag(Project project, String tagName) {
+    public void addTag(Project project, String tagName, BBUser user) {
         Tag tag = null ;
         try{
             tag=tagService.getByName(tagName);
         }catch (IllegalArgumentException ignore){
-             tag=tagService.create(tagName);
+             tag=tagService.create(tagName,user);
         }
         project.getTags().add(tag);
Index: src/main/java/com/db/finki/www/build_board/service/thread/impl/TagServiceImpl.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/thread/impl/TagServiceImpl.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/thread/impl/TagServiceImpl.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,4 +3,5 @@
 import com.db.finki.www.build_board.entity.thread.Tag;
 import com.db.finki.www.build_board.entity.thread.Topic;
+import com.db.finki.www.build_board.entity.user_type.BBUser;
 import com.db.finki.www.build_board.repository.thread.TagRepository;
 import com.db.finki.www.build_board.service.thread.itf.TagService;
@@ -27,6 +28,6 @@
     }
 
-    public Tag create(String tagName) {
-        return tagRepository.save(new Tag(tagName));
+    public Tag create(String tagName, BBUser user) {
+        return tagRepository.save(new Tag(tagName, user));
     }
 
Index: src/main/java/com/db/finki/www/build_board/service/thread/itf/TagService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/thread/itf/TagService.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/thread/itf/TagService.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -3,4 +3,5 @@
 import com.db.finki.www.build_board.entity.thread.Tag;
 import com.db.finki.www.build_board.entity.thread.Topic;
+import com.db.finki.www.build_board.entity.user_type.BBUser;
 
 import java.util.List;
@@ -10,4 +11,4 @@
     List<Tag> getAll();
     List<Tag> getAllNotUsed(Topic t);
-    Tag create(String name);
+    Tag create(String name, BBUser user);
 }
Index: src/main/java/com/db/finki/www/build_board/service/user/UserStatisticsService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/user/UserStatisticsService.java	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/java/com/db/finki/www/build_board/service/user/UserStatisticsService.java	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -11,9 +11,7 @@
 @Service
 public class UserStatisticsService {
-    private final UserRepository userRepository;
     private final ProjectRepository projectRepository;
 
     public UserStatisticsService(UserRepository userRepository, ProjectRepository projectRepository) {
-        this.userRepository = userRepository;
         this.projectRepository = projectRepository;
     }
Index: src/main/resources/db/migration/V1__init_ddl.sql
===================================================================
--- src/main/resources/db/migration/V1__init_ddl.sql	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/resources/db/migration/V1__init_ddl.sql	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -428,14 +428,14 @@
 ;
 
-create or replace function fn_remove_thread()
-returns trigger 
-language plpgsql
-as 
-$$ 
-BEGIN
-    delete from thread where id = OLD.id; 
-    return OLD;  
-END; 
-$$; 
+-- create or replace function fn_remove_thread()
+-- returns trigger
+-- language plpgsql
+-- as
+-- $$
+-- BEGIN
+--     delete from thread where id = OLD.id;
+--     return OLD;
+-- END;
+-- $$;
 
 
@@ -488,19 +488,19 @@
 execute function fn_insert_general_for_project();
 
-create or replace trigger tr_remove_thread_from_project
-after delete 
-on project_thread
-for each row 
-execute function fn_remove_thread(); 
-
-create or replace trigger tr_remove_thread_from_topic
-after delete 
-on topic_thread
-for each row 
-execute function fn_remove_thread();
-
-create or replace trigger tr_remove_thread_from_discussion 
-after delete 
-on discussion_thread 
-for each row 
-execute function fn_remove_thread();
+-- create or replace trigger tr_remove_thread_from_project
+-- after delete
+-- on project_thread
+-- for each row
+-- execute function fn_remove_thread();
+--
+-- create or replace trigger tr_remove_thread_from_topic
+-- after delete
+-- on topic_thread
+-- for each row
+-- execute function fn_remove_thread();
+--
+-- create or replace trigger tr_remove_thread_from_discussion
+-- after delete
+-- on discussion_thread
+-- for each row
+-- execute function fn_remove_thread();
Index: src/main/resources/db/migration/V2__add_test_data.sql
===================================================================
--- src/main/resources/db/migration/V2__add_test_data.sql	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/resources/db/migration/V2__add_test_data.sql	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -1,2 +1,3 @@
+
 INSERT INTO users (username, is_activate, password, description, registered_at, sex,name,email)
 VALUES
@@ -32,4 +33,5 @@
     ('Reply to topic 1', 4),
     ('Further discussion on topic 2', 5);
+
 
 INSERT INTO topic_thread (id, title, parent_id)
@@ -68,8 +70,9 @@
     (5, 7);
 
+
 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');
+    (2, 3, 2, NOW(), NOW() + INTERVAL '3 days', 'Offensive language');
 
 INSERT INTO permissions (name)
@@ -83,9 +86,10 @@
     ('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');
+    (5, 5, 'Developer'),
+    (1, 5, 'Developer');
 
 INSERT INTO project_roles_permissions (permission_name, role_name, project_id)
@@ -94,9 +98,13 @@
     ('Delete Thread', 'Admin', 5);
 
+insert into submission(created_by,status,description) 
+values 
+(1,'PENDING','Inappropriate content'),
+(3,'DENIED','Spam content');
 
-INSERT INTO report (created_at, description, status, thread_id, for_user_id, by_user_id)
+INSERT INTO report (id,thread_id, for_user_id)
 VALUES
-    (NOW(), 'Inappropriate content', 'PENDING', 3, 2, 1),
-    (NOW(), 'Spam content', 'DENIED', 6, 4, 3);
+    (1, 2, 1),
+    (2, 1, 3);
 
 INSERT INTO channel (name, description, project_id, developer_id)
Index: src/main/resources/templates/project_pages/project-create.html
===================================================================
--- src/main/resources/templates/project_pages/project-create.html	(revision 100766ee7ad1d9c7da5ca157c2cf6cf211f0fa4a)
+++ src/main/resources/templates/project_pages/project-create.html	(revision f50f127750f1e6151b56f1d8651579460fec6c53)
@@ -18,5 +18,5 @@
         </div>
         <div class="card-body">
-            <form th:action="${isCreatingProject==null} ? '/projects/' + ${project.getTitle()} + '/edit' : '/projects/create'" method="post">
+            <form th:action="${isCreatingProject==null} ? '/projects/' + ${project.getTitle()} + '/edit' : '/projects/add'" method="post">
                 <div class="mb-3">
                     <label for="title" class="form-label">Title</label>
