Index: src/main/java/it/finki/tinki/repository/InternshipRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/InternshipRepository.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/repository/InternshipRepository.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -1,5 +1,7 @@
 package it.finki.tinki.repository;
 
+import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
@@ -10,3 +12,5 @@
 public interface InternshipRepository extends JpaRepository<Internship, Long> {
     List<Internship> findAllByAccount_Id(Long accountId);
+    List<Internship> findAllByTitleContainsOrDescriptionContains(String title, String description);
+    List<Internship> findAllBySkillsTrainedContaining(Skill skill);
 }
Index: src/main/java/it/finki/tinki/repository/JobRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/JobRepository.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/repository/JobRepository.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -1,4 +1,5 @@
 package it.finki.tinki.repository;
 
+import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Work.Job;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -6,7 +7,10 @@
 
 import java.util.List;
+import java.util.Set;
 
 @Repository
 public interface JobRepository extends JpaRepository<Job, Long>{
     List<Job> findAllByAccount_Id(Long accountId);
+    List<Job> findAllByTitleContainsOrDescriptionContains(String title, String description);
+    List<Job> findAllBySkillsRequiredContaining(Skill skill);
 }
Index: src/main/java/it/finki/tinki/repository/ProjectRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/ProjectRepository.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/repository/ProjectRepository.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -1,4 +1,6 @@
 package it.finki.tinki.repository;
 
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Work.Job;
 import it.finki.tinki.model.Work.Project;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -10,3 +12,5 @@
 public interface ProjectRepository extends JpaRepository<Project, Long> {
     List<Project> findAllByAccount_Id(Long accountId);
+    List<Project> findAllByTitleContainsOrDescriptionContains(String title, String description);
+    List<Project> findAllBySkillsRequiredContaining(Skill skill);
 }
Index: src/main/java/it/finki/tinki/repository/SkillRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/SkillRepository.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/repository/SkillRepository.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -5,4 +5,5 @@
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Optional;
 
@@ -10,3 +11,4 @@
 public interface SkillRepository extends JpaRepository<Skill, Long> {
     Optional<Skill> findById(Long id);
+    List<Skill> findAllByNameContaining(String text);
 }
Index: src/main/java/it/finki/tinki/service/SkillService.java
===================================================================
--- src/main/java/it/finki/tinki/service/SkillService.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/service/SkillService.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -7,3 +7,4 @@
 public interface SkillService {
     List<Skill> returnSkillsBasedOnId(List<Long> skillIds);
+    List<Skill> returnBasedOnText(String text);
 }
Index: src/main/java/it/finki/tinki/service/WorkService.java
===================================================================
--- src/main/java/it/finki/tinki/service/WorkService.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/service/WorkService.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -4,4 +4,8 @@
 import it.finki.tinki.model.Work.Job;
 import it.finki.tinki.model.Work.Project;
+import it.finki.tinki.model.dto.response.work.InternshipResponseDTO;
+import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+import it.finki.tinki.model.dto.response.work.ProjectResponseDTO;
+import it.finki.tinki.model.dto.response.work.WorkResponseDTO;
 import it.finki.tinki.model.enumerator.AccountType;
 
@@ -19,3 +23,6 @@
     Internship insertInternship(String title, String description, Long adccId, int salary, List<Long> skillsTrained, int openSpots, AccountType type);
     Project insertProject(String title, String description, Long adccId, int salary, List<Long> skillsRequired, Date validUntil, AccountType type);
+    List<JobResponseDTO> fullTextJobSearch(String text);
+    List<InternshipResponseDTO> fullTextInternshipSearch(String text);
+    List<ProjectResponseDTO> fullTextProjectSearch(String text);
 }
Index: src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -29,3 +29,7 @@
         return list;
     }
+
+    public List<Skill> returnBasedOnText(String text){
+        return this.skillRepository.findAllByNameContaining(text);
+    }
 }
Index: src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -7,4 +7,9 @@
 import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Users.Account;
+import it.finki.tinki.model.Work.Work;
+import it.finki.tinki.model.dto.response.work.InternshipResponseDTO;
+import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+import it.finki.tinki.model.dto.response.work.ProjectResponseDTO;
+import it.finki.tinki.model.dto.response.work.WorkResponseDTO;
 import it.finki.tinki.model.enumerator.AccountType;
 import it.finki.tinki.repository.*;
@@ -15,6 +20,5 @@
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
@@ -125,3 +129,81 @@
         return jb;
     }
+
+    @Override
+    public List<JobResponseDTO> fullTextJobSearch(String text) {
+        List<Skill> skills = this.skillService.returnBasedOnText(text);
+
+        List<Job> jobs = this.jobRepository.findAllByTitleContainsOrDescriptionContains(text,text);
+        List<Job> sjob = new ArrayList<>();
+
+        skills.forEach(skill -> {
+            sjob.addAll(this.jobRepository.findAllBySkillsRequiredContaining(skill));
+        });
+
+        sjob.forEach(job -> {
+            if(!jobs.contains(job)){
+                jobs.add(job);
+            }
+        });
+
+        List<JobResponseDTO> jobs2 = new ArrayList<>();
+
+        jobs.forEach(job -> {
+            jobs2.add(new JobResponseDTO(job));
+        });
+
+        return jobs2;
+    }
+
+    @Override
+    public List<InternshipResponseDTO> fullTextInternshipSearch(String text) {
+        List<Skill> skills = this.skillService.returnBasedOnText(text);
+
+        List<Internship> jobs = this.internshipRepository.findAllByTitleContainsOrDescriptionContains(text,text);
+        List<Internship> sjob = new ArrayList<>();
+
+        skills.forEach(skill -> {
+            sjob.addAll(this.internshipRepository.findAllBySkillsTrainedContaining(skill));
+        });
+
+        sjob.forEach(job -> {
+            if(!jobs.contains(job)){
+                jobs.add(job);
+            }
+        });
+
+        List<InternshipResponseDTO> jobs2 = new ArrayList<>();
+
+        jobs.forEach(job -> {
+            jobs2.add(new InternshipResponseDTO(job));
+        });
+
+        return jobs2;
+    }
+
+    @Override
+    public List<ProjectResponseDTO> fullTextProjectSearch(String text) {
+        List<Skill> skills = this.skillService.returnBasedOnText(text);
+
+        List<Project> jobs = this.projectRepository.findAllByTitleContainsOrDescriptionContains(text,text);
+        List<Project> sjob = new ArrayList<>();
+
+        skills.forEach(skill -> {
+            sjob.addAll(this.projectRepository.findAllBySkillsRequiredContaining(skill));
+        });
+
+        sjob.forEach(job -> {
+            if(!jobs.contains(job)){
+                jobs.add(job);
+            }
+        });
+
+        List<ProjectResponseDTO> jobs2 = new ArrayList<>();
+
+        jobs.forEach(job -> {
+            jobs2.add(new ProjectResponseDTO(job));
+        });
+
+        return jobs2;
+    }
 }
Index: src/main/java/it/finki/tinki/web/controller/LoginController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -149,3 +149,18 @@
     }
 
+    @GetMapping(path = "/job/search")
+    public List<JobResponseDTO> jobRes(@RequestParam(name = "text") String text){
+        return this.workService.fullTextJobSearch(text);
+    }
+
+    @GetMapping(path = "/internship/search")
+    public List<InternshipResponseDTO> internshipRes(@RequestParam(name = "text") String text){
+        return this.workService.fullTextInternshipSearch(text);
+    }
+
+    @GetMapping(path = "/project/search")
+    public List<ProjectResponseDTO> projectRes(@RequestParam(name = "text") String text){
+        return this.workService.fullTextProjectSearch(text);
+    }
+
 }
Index: src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision f067338250f079f3984e5fb2760b5bb372234918)
@@ -11,8 +11,7 @@
 import it.finki.tinki.model.dto.response.work.ProjectResponseDTO;
 import it.finki.tinki.service.WorkService;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @RestController
