Index: src/main/java/it/finki/tinki/TinkiApplication.java
===================================================================
--- src/main/java/it/finki/tinki/TinkiApplication.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/TinkiApplication.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -3,4 +3,5 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
 
 @SpringBootApplication
@@ -10,4 +11,3 @@
         SpringApplication.run(TinkiApplication.class, args);
     }
-
 }
Index: src/main/java/it/finki/tinki/bootstrap/DataHolder.java
===================================================================
--- src/main/java/it/finki/tinki/bootstrap/DataHolder.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/bootstrap/DataHolder.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,5 +1,5 @@
 package it.finki.tinki.bootstrap;
 
-import it.finki.tinki.model.Jobs.Job;
+import it.finki.tinki.model.Work.Job;
 import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Users.Account;
Index: src/main/java/it/finki/tinki/model/EmbeddedMatchId.java
===================================================================
--- src/main/java/it/finki/tinki/model/EmbeddedMatchId.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/model/EmbeddedMatchId.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,5 +1,5 @@
 package it.finki.tinki.model;
 
-import it.finki.tinki.model.Jobs.Work;
+import it.finki.tinki.model.Work.Work;
 import it.finki.tinki.model.Users.User;
 import lombok.Data;
Index: c/main/java/it/finki/tinki/model/Jobs/Internship.java
===================================================================
--- src/main/java/it/finki/tinki/model/Jobs/Internship.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,26 +1,0 @@
-package it.finki.tinki.model.Jobs;
-
-import it.finki.tinki.model.Skill;
-import it.finki.tinki.model.Users.Account;
-import lombok.Data;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Data
-public class Internship extends Work {
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    List<Skill> skillsTrained;
-
-    int openSpots;
-
-    public Internship(){}
-
-    public Internship(String title, String description, Account account, int salary, List<Skill> skillsTrained, int openSpots) {
-        super(title, description, account, salary);
-        this.skillsTrained = skillsTrained;
-        this.openSpots = openSpots;
-    }
-}
Index: c/main/java/it/finki/tinki/model/Jobs/Job.java
===================================================================
--- src/main/java/it/finki/tinki/model/Jobs/Job.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package it.finki.tinki.model.Jobs;
-
-import it.finki.tinki.model.Skill;
-import it.finki.tinki.model.Users.Account;
-import lombok.Data;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Data
-public class Job extends Work {
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    List<Skill> skillsRequired;
-
-    public Job(){}
-
-    public Job(String title, String description, Account account, int salary, List<Skill> skillsRequired) {
-        super(title, description, account, salary);
-        this.skillsRequired = skillsRequired;
-    }
-}
Index: c/main/java/it/finki/tinki/model/Jobs/Project.java
===================================================================
--- src/main/java/it/finki/tinki/model/Jobs/Project.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package it.finki.tinki.model.Jobs;
-
-import it.finki.tinki.model.Skill;
-import it.finki.tinki.model.Users.Account;
-import lombok.Data;
-
-import javax.persistence.*;
-import java.util.Date;
-import java.util.List;
-
-@Entity
-@Data
-public class Project extends Work {
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    List<Skill> skillsRequired;
-
-    Date validUntil;
-
-    public Project(){}
-
-    public Project(String title, String description, Account account, int salary, List<Skill> skillsRequired, Date validUntil) {
-        super(title, description, account, salary);
-        this.skillsRequired = skillsRequired;
-        this.validUntil = validUntil;
-    }
-}
Index: c/main/java/it/finki/tinki/model/Jobs/Work.java
===================================================================
--- src/main/java/it/finki/tinki/model/Jobs/Work.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package it.finki.tinki.model.Jobs;
-
-import it.finki.tinki.model.Users.Account;
-import lombok.Data;
-
-import javax.persistence.*;
-
-@Entity
-@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
-@Data
-public abstract class Work {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    Long id;
-
-    String title;
-    String description;
-
-    @ManyToOne(targetEntity = Account.class)
-    Account account;
-
-    int salary;
-
-    public Work(){}
-
-    public Work(String title, String description, Account account, int salary) {
-        this.title = title;
-        this.description = description;
-        this.account = account;
-        this.salary = salary;
-    }
-}
Index: src/main/java/it/finki/tinki/model/Work/Internship.java
===================================================================
--- src/main/java/it/finki/tinki/model/Work/Internship.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/Work/Internship.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,26 @@
+package it.finki.tinki.model.Work;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Users.Account;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Data
+public class Internship extends Work {
+
+    @ManyToMany(fetch = FetchType.EAGER)
+    List<Skill> skillsTrained;
+
+    int openSpots;
+
+    public Internship(){}
+
+    public Internship(String title, String description, Account account, int salary, List<Skill> skillsTrained, int openSpots) {
+        super(title, description, account, salary);
+        this.skillsTrained = skillsTrained;
+        this.openSpots = openSpots;
+    }
+}
Index: src/main/java/it/finki/tinki/model/Work/Job.java
===================================================================
--- src/main/java/it/finki/tinki/model/Work/Job.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/Work/Job.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,23 @@
+package it.finki.tinki.model.Work;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Users.Account;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Data
+public class Job extends Work {
+
+    @ManyToMany(fetch = FetchType.EAGER)
+    List<Skill> skillsRequired;
+
+    public Job(){}
+
+    public Job(String title, String description, Account account, int salary, List<Skill> skillsRequired) {
+        super(title, description, account, salary);
+        this.skillsRequired = skillsRequired;
+    }
+}
Index: src/main/java/it/finki/tinki/model/Work/Project.java
===================================================================
--- src/main/java/it/finki/tinki/model/Work/Project.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/Work/Project.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,27 @@
+package it.finki.tinki.model.Work;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Users.Account;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.List;
+
+@Entity
+@Data
+public class Project extends Work {
+
+    @ManyToMany(fetch = FetchType.EAGER)
+    List<Skill> skillsRequired;
+
+    Date validUntil;
+
+    public Project(){}
+
+    public Project(String title, String description, Account account, int salary, List<Skill> skillsRequired, Date validUntil) {
+        super(title, description, account, salary);
+        this.skillsRequired = skillsRequired;
+        this.validUntil = validUntil;
+    }
+}
Index: src/main/java/it/finki/tinki/model/Work/Work.java
===================================================================
--- src/main/java/it/finki/tinki/model/Work/Work.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/Work/Work.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,33 @@
+package it.finki.tinki.model.Work;
+
+import it.finki.tinki.model.Users.Account;
+import lombok.Data;
+
+import javax.persistence.*;
+
+@Entity
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+@Data
+public abstract class Work {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    Long id;
+
+    String title;
+    String description;
+
+    @ManyToOne(targetEntity = Account.class)
+    Account account;
+
+    int salary;
+
+    public Work(){}
+
+    public Work(String title, String description, Account account, int salary) {
+        this.title = title;
+        this.description = description;
+        this.account = account;
+        this.salary = salary;
+    }
+}
Index: c/main/java/it/finki/tinki/model/dto/AuthResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/AuthResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.enumerator.AccountType;
-import lombok.Data;
-
-@Data
-public class AuthResponseDTO {
-    private Long id;
-    private String email;
-    private String name;
-    private AccountType type;
-
-    public AuthResponseDTO() {
-        this.id = null;
-        this.email = "Wrong username or password!";
-        this.name = "Wrong username or password!";
-        this.type = null;
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/CompanyRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/CompanyRegisterDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import lombok.Data;
-
-@Data
-public class CompanyRegisterDTO {
-    String email;
-    String password;
-    String name;
-    String country;
-    String city;
-    String street;
-}
Index: c/main/java/it/finki/tinki/model/dto/CompanyResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/CompanyResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.Address;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-public class CompanyResponseDTO extends LoginResponseDTO {
-    private Address address;
-    private List<JobResponseDTO> jobs;
-    private List<InternshipResponseDTO> internships;
-
-    public CompanyResponseDTO(){
-        this.jobs = new ArrayList<>();
-        this.internships = new ArrayList<>();
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/InternshipResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/InternshipResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,32 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.Address;
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Users.Company;
-import it.finki.tinki.model.enumerator.AccountType;
-import lombok.Data;
-
-@Data
-public class InternshipResponseDTO {
-    Long id;
-    String title;
-    String description;
-    int salary;
-    int openSpots;
-    String accountEmail;
-    String accountName;
-    AccountType accountType;
-    Address accountAddress;
-
-    public InternshipResponseDTO(Internship internship){
-        this.id = internship.getId();
-        this.title = internship.getTitle();
-        this.description = internship.getDescription();
-        this.salary = internship.getSalary();
-        this.openSpots = internship.getOpenSpots();
-        this.accountEmail = internship.getAccount().getEmail();
-        this.accountName = internship.getAccount().getName();
-        this.accountType = internship.getAccount().getAccountType();
-        this.accountAddress = ((Company) internship.getAccount()).getAddress();
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/JobResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/JobResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.Address;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Users.Company;
-import it.finki.tinki.model.Users.Team;
-import it.finki.tinki.model.enumerator.AccountType;
-import lombok.Data;
-
-@Data
-public class JobResponseDTO {
-    Long id;
-    String title;
-    String description;
-    int salary;
-    String accountEmail;
-    String accountName;
-    AccountType accountType;
-    Address accountAddress;
-    int members;
-
-    public JobResponseDTO(Job job){
-        this.id = job.getId();
-        this.title = job.getTitle();
-        this.description = job.getDescription();
-        this.salary = job.getSalary();
-        this.accountEmail = job.getAccount().getEmail();
-        this.accountName = job.getAccount().getName();
-        this.accountType = job.getAccount().getAccountType();
-        if(job.getAccount().getAccountType()==AccountType.COMPANY){
-            this.accountAddress = ((Company) job.getAccount()).getAddress();
-            this.members = 0;
-        }else{
-            this.members = ((Team) job.getAccount()).getMembers();
-            this.accountAddress = null;
-        }
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/LoginResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/LoginResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.enumerator.AccountType;
-import lombok.Data;
-
-@Data
-public class LoginResponseDTO {
-    private Long id;
-    private String email;
-    private String name;
-    private AccountType type;
-    private String error;
-
-    public LoginResponseDTO() {
-        this.error = "Invalid username or password!";
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/ProjectResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/ProjectResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.Jobs.Project;
-import it.finki.tinki.model.Users.Team;
-import it.finki.tinki.model.enumerator.AccountType;
-import lombok.Data;
-
-@Data
-public class ProjectResponseDTO {
-    Long id;
-    String title;
-    String description;
-    int salary;
-    String accountEmail;
-    String accountName;
-    AccountType accountType;
-    int members;
-
-    public ProjectResponseDTO(Project project){
-        this.id = project.getId();
-        this.title = project.getTitle();
-        this.description = project.getDescription();
-        this.salary = project.getSalary();
-        this.accountEmail = project.getAccount().getEmail();
-        this.accountName = project.getAccount().getName();
-        this.accountType = project.getAccount().getAccountType();
-        this.members = ((Team) project.getAccount()).getMembers();
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/TeamRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/TeamRegisterDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import lombok.Data;
-
-@Data
-public class TeamRegisterDTO {
-    String email;
-    String password;
-    String name;
-    int members;
-}
Index: c/main/java/it/finki/tinki/model/dto/TeamResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/TeamResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-public class TeamResponseDTO extends LoginResponseDTO{
-    private int members;
-    private List<JobResponseDTO> jobs;
-    private List<ProjectResponseDTO> projects;
-
-    public TeamResponseDTO(){
-        this.jobs = new ArrayList<>();
-        this.projects = new ArrayList<>();
-    }
-}
Index: c/main/java/it/finki/tinki/model/dto/UserRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/UserRegisterDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class UserRegisterDTO {
-    String email;
-    String password;
-    String name;
-    String surname;
-    List<Long> retainedSkills;
-    List<Long> skillsToLearn;
-}
Index: c/main/java/it/finki/tinki/model/dto/UserResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/UserResponseDTO.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package it.finki.tinki.model.dto;
-
-import it.finki.tinki.model.Skill;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-public class UserResponseDTO extends LoginResponseDTO{
-    private String surname;
-    private List<Skill> retained;
-    private List<Skill> toLearn;
-    private List<JobResponseDTO> jobs;
-    private List<InternshipResponseDTO> internships;
-    private List<ProjectResponseDTO> projects;
-
-    public UserResponseDTO(){
-        retained = new ArrayList<>();
-        toLearn = new ArrayList<>();
-        jobs = new ArrayList<>();
-        internships = new ArrayList<>();
-        projects = new ArrayList<>();
-    }
-}
Index: src/main/java/it/finki/tinki/model/dto/register/account/AccountRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/account/AccountRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/account/AccountRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,10 @@
+package it.finki.tinki.model.dto.register.account;
+
+import lombok.Data;
+
+@Data
+public class AccountRegisterDTO {
+    String email;
+    String password;
+    String name;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/account/CompanyRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/account/CompanyRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/account/CompanyRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,10 @@
+package it.finki.tinki.model.dto.register.account;
+
+import lombok.Data;
+
+@Data
+public class CompanyRegisterDTO extends AccountRegisterDTO {
+    String country;
+    String city;
+    String street;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/account/TeamRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/account/TeamRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/account/TeamRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,8 @@
+package it.finki.tinki.model.dto.register.account;
+
+import lombok.Data;
+
+@Data
+public class TeamRegisterDTO extends AccountRegisterDTO {
+    int members;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/account/UserRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/account/UserRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/account/UserRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,12 @@
+package it.finki.tinki.model.dto.register.account;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UserRegisterDTO extends AccountRegisterDTO {
+    String surname;
+    List<Long> retainedSkills;
+    List<Long> skillsToLearn;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,11 @@
+package it.finki.tinki.model.dto.register.work;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InternshipRegisterDTO {
+    int openSpots;
+    List<Long> skillsTrained;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/work/JobRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/JobRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/JobRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,10 @@
+package it.finki.tinki.model.dto.register.work;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class JobRegisterDTO extends WorkRegisterDTO{
+    List<Long> skillsRequired;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,12 @@
+package it.finki.tinki.model.dto.register.work;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ProjectRegisterDTO {
+    Date validUntil;
+    List<Long> skillsRequired;
+}
Index: src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,11 @@
+package it.finki.tinki.model.dto.register.work;
+
+import lombok.Data;
+
+@Data
+public class WorkRegisterDTO {
+    String title;
+    String description;
+    Long accountId;
+    int salary;
+}
Index: src/main/java/it/finki/tinki/model/dto/response/account/CompanyResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/account/CompanyResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/account/CompanyResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,21 @@
+package it.finki.tinki.model.dto.response.account;
+
+import it.finki.tinki.model.Address;
+import it.finki.tinki.model.dto.response.work.InternshipResponseDTO;
+import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class CompanyResponseDTO extends LoginResponseDTO {
+    private Address address;
+    private List<JobResponseDTO> jobs;
+    private List<InternshipResponseDTO> internships;
+
+    public CompanyResponseDTO(){
+        this.jobs = new ArrayList<>();
+        this.internships = new ArrayList<>();
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/account/LoginResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/account/LoginResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/account/LoginResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,17 @@
+package it.finki.tinki.model.dto.response.account;
+
+import it.finki.tinki.model.enumerator.AccountType;
+import lombok.Data;
+
+@Data
+public class LoginResponseDTO {
+    private Long id;
+    private String email;
+    private String name;
+    private AccountType type;
+    private String error;
+
+    public LoginResponseDTO() {
+        this.error = "Invalid username or password!";
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/account/TeamResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/account/TeamResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/account/TeamResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,20 @@
+package it.finki.tinki.model.dto.response.account;
+
+import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+import it.finki.tinki.model.dto.response.work.ProjectResponseDTO;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class TeamResponseDTO extends LoginResponseDTO {
+    private int members;
+    private List<JobResponseDTO> jobs;
+    private List<ProjectResponseDTO> projects;
+
+    public TeamResponseDTO(){
+        this.jobs = new ArrayList<>();
+        this.projects = new ArrayList<>();
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/account/UserResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/account/UserResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/account/UserResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,28 @@
+package it.finki.tinki.model.dto.response.account;
+
+import it.finki.tinki.model.Skill;
+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 lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class UserResponseDTO extends LoginResponseDTO {
+    private String surname;
+    private List<Skill> retained;
+    private List<Skill> toLearn;
+    private List<JobResponseDTO> jobs;
+    private List<InternshipResponseDTO> internships;
+    private List<ProjectResponseDTO> projects;
+
+    public UserResponseDTO(){
+        retained = new ArrayList<>();
+        toLearn = new ArrayList<>();
+        jobs = new ArrayList<>();
+        internships = new ArrayList<>();
+        projects = new ArrayList<>();
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/work/InternshipResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/work/InternshipResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/work/InternshipResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,20 @@
+package it.finki.tinki.model.dto.response.work;
+
+import it.finki.tinki.model.Address;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Users.Company;
+import lombok.Data;
+
+@Data
+public class InternshipResponseDTO extends WorkResponseDTO {
+    int salary;
+    int openSpots;
+    Address accountAddress;
+
+    public InternshipResponseDTO(Internship internship){
+        super(internship.getId(), internship.getTitle(), internship.getDescription(), internship.getSalary(), internship.getAccount());
+        this.salary = internship.getSalary();
+        this.openSpots = internship.getOpenSpots();
+        this.accountAddress = ((Company) internship.getAccount()).getAddress();
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/work/JobResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/work/JobResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/work/JobResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,25 @@
+package it.finki.tinki.model.dto.response.work;
+
+import it.finki.tinki.model.Address;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Users.Company;
+import it.finki.tinki.model.Users.Team;
+import it.finki.tinki.model.enumerator.AccountType;
+import lombok.Data;
+
+@Data
+public class JobResponseDTO extends WorkResponseDTO {
+    Address accountAddress;
+    int members;
+
+    public JobResponseDTO(Job job){
+        super(job.getId(), job.getTitle(), job.getDescription(), job.getSalary(), job.getAccount());
+        if(job.getAccount().getAccountType()==AccountType.COMPANY){
+            this.accountAddress = ((Company) job.getAccount()).getAddress();
+            this.members = 0;
+        }else{
+            this.members = ((Team) job.getAccount()).getMembers();
+            this.accountAddress = null;
+        }
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/work/ProjectResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/work/ProjectResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/work/ProjectResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,15 @@
+package it.finki.tinki.model.dto.response.work;
+
+import it.finki.tinki.model.Work.Project;
+import it.finki.tinki.model.Users.Team;
+import lombok.Data;
+
+@Data
+public class ProjectResponseDTO extends WorkResponseDTO {
+    int members;
+
+    public ProjectResponseDTO(Project project){
+        super(project.getId(), project.getTitle(), project.getDescription(), project.getSalary(), project.getAccount());
+        this.members = ((Team) project.getAccount()).getMembers();
+    }
+}
Index: src/main/java/it/finki/tinki/model/dto/response/work/WorkResponseDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/response/work/WorkResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/response/work/WorkResponseDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,28 @@
+package it.finki.tinki.model.dto.response.work;
+
+import it.finki.tinki.model.Users.Account;
+import it.finki.tinki.model.enumerator.AccountType;
+import lombok.Data;
+
+@Data
+public class WorkResponseDTO {
+    Long id;
+    String title;
+    String description;
+    int salary;
+    String accountEmail;
+    String accountName;
+    AccountType accountType;
+
+    WorkResponseDTO(){}
+
+    WorkResponseDTO(Long id, String title, String description, int salary, Account account){
+        this.id = id;
+        this.title = title;
+        this.description = description;
+        this.salary = salary;
+        this.accountEmail = account.getEmail();
+        this.accountName = account.getName();
+        this.accountType = account.getAccountType();
+    }
+}
Index: src/main/java/it/finki/tinki/repository/InternshipRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/InternshipRepository.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/repository/InternshipRepository.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,5 +1,5 @@
 package it.finki.tinki.repository;
 
-import it.finki.tinki.model.Jobs.Internship;
+import it.finki.tinki.model.Work.Internship;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: src/main/java/it/finki/tinki/repository/JobRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/JobRepository.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/repository/JobRepository.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,5 +1,5 @@
 package it.finki.tinki.repository;
 
-import it.finki.tinki.model.Jobs.Job;
+import it.finki.tinki.model.Work.Job;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: src/main/java/it/finki/tinki/repository/ProjectRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/ProjectRepository.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/repository/ProjectRepository.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,5 +1,5 @@
 package it.finki.tinki.repository;
 
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Project;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: src/main/java/it/finki/tinki/service/MatchmakerService.java
===================================================================
--- src/main/java/it/finki/tinki/service/MatchmakerService.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/service/MatchmakerService.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,7 +1,7 @@
 package it.finki.tinki.service;
 
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.Users.User;
 
Index: src/main/java/it/finki/tinki/service/WorkService.java
===================================================================
--- src/main/java/it/finki/tinki/service/WorkService.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/service/WorkService.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,7 +1,7 @@
 package it.finki.tinki.service;
 
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.enumerator.AccountType;
 
Index: src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -2,7 +2,7 @@
 
 import it.finki.tinki.model.Address;
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Users.Account;
Index: src/main/java/it/finki/tinki/service/impl/MatchmakerServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/MatchmakerServiceImpl.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/service/impl/MatchmakerServiceImpl.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -3,7 +3,7 @@
 import it.finki.tinki.helper.Matchmaker;
 import it.finki.tinki.model.EmbeddedMatchId;
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.Match;
 import it.finki.tinki.model.Skill;
Index: src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,7 +1,7 @@
 package it.finki.tinki.service.impl;
 
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Users.Account;
Index: src/main/java/it/finki/tinki/web/controller/AccountEditController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/AccountEditController.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/web/controller/AccountEditController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -2,16 +2,17 @@
 
 import it.finki.tinki.model.Skill;
-import it.finki.tinki.model.Users.Account;
 import it.finki.tinki.model.Users.Company;
 import it.finki.tinki.model.Users.Team;
 import it.finki.tinki.model.Users.User;
-import it.finki.tinki.model.dto.*;
+import it.finki.tinki.model.dto.register.account.CompanyRegisterDTO;
+import it.finki.tinki.model.dto.register.account.TeamRegisterDTO;
+import it.finki.tinki.model.dto.register.account.UserRegisterDTO;
+import it.finki.tinki.model.dto.response.account.CompanyResponseDTO;
+import it.finki.tinki.model.dto.response.account.TeamResponseDTO;
+import it.finki.tinki.model.dto.response.account.UserResponseDTO;
 import it.finki.tinki.model.enumerator.AccountType;
 import it.finki.tinki.service.AccountService;
 import it.finki.tinki.service.SkillService;
-import org.springframework.web.bind.annotation.PathVariable;
-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;
@@ -30,5 +31,5 @@
     }
 
-    @RequestMapping(path = "/user/{id}/{email}")
+    @PostMapping(path = "/user/{id}/{email}")
     public UserResponseDTO editUser(@PathVariable(name = "id") Long id,
                                     @PathVariable(name = "email") String email,
@@ -48,4 +49,5 @@
             userResponseDTO.setEmail(u.getEmail());
             userResponseDTO.setType(AccountType.USER);
+            userResponseDTO.setError(null);
             userResponseDTO.setName(u.getName());
             userResponseDTO.setSurname(u.getSurname());
@@ -59,5 +61,5 @@
     }
 
-    @RequestMapping(path = "/company/{id}/{email}")
+    @PostMapping(path = "/company/{id}/{email}")
     public CompanyResponseDTO editCompany(@PathVariable(name = "id") Long id,
                                           @PathVariable(name = "email") String email,
@@ -73,4 +75,5 @@
             companyResponseDTO.setId(c.getId());
             companyResponseDTO.setEmail(c.getEmail());
+            companyResponseDTO.setError(null);
             companyResponseDTO.setType(AccountType.COMPANY);
             companyResponseDTO.setName(c.getName());
@@ -83,5 +86,5 @@
     }
 
-    @RequestMapping(path = "/team/{id}/{email}")
+    @PostMapping(path = "/team/{id}/{email}")
     public TeamResponseDTO editTeam(@PathVariable(name = "id") Long id,
                                     @PathVariable(name = "email") String email,
@@ -97,4 +100,5 @@
             teamResponseDTO.setId(t.getId());
             teamResponseDTO.setEmail(t.getEmail());
+            teamResponseDTO.setError(null);
             teamResponseDTO.setType(AccountType.TEAM);
             teamResponseDTO.setName(t.getName());
Index: src/main/java/it/finki/tinki/web/controller/LoginController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -1,7 +1,7 @@
 package it.finki.tinki.web.controller;
 
-import it.finki.tinki.model.Jobs.Internship;
-import it.finki.tinki.model.Jobs.Job;
-import it.finki.tinki.model.Jobs.Project;
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
 import it.finki.tinki.model.Users.Account;
 import it.finki.tinki.model.Users.Company;
@@ -9,4 +9,11 @@
 import it.finki.tinki.model.Users.User;
 import it.finki.tinki.model.dto.*;
+import it.finki.tinki.model.dto.response.account.LoginResponseDTO;
+import it.finki.tinki.model.dto.response.account.CompanyResponseDTO;
+import it.finki.tinki.model.dto.response.account.TeamResponseDTO;
+import it.finki.tinki.model.dto.response.account.UserResponseDTO;
+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.enumerator.AccountType;
 import it.finki.tinki.service.AccountService;
Index: src/main/java/it/finki/tinki/web/controller/RegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/RegisterController.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ src/main/java/it/finki/tinki/web/controller/RegisterController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -3,7 +3,7 @@
 import it.finki.tinki.model.Skill;
 import it.finki.tinki.model.Users.Account;
-import it.finki.tinki.model.dto.CompanyRegisterDTO;
-import it.finki.tinki.model.dto.TeamRegisterDTO;
-import it.finki.tinki.model.dto.UserRegisterDTO;
+import it.finki.tinki.model.dto.register.account.CompanyRegisterDTO;
+import it.finki.tinki.model.dto.register.account.TeamRegisterDTO;
+import it.finki.tinki.model.dto.register.account.UserRegisterDTO;
 import it.finki.tinki.service.AccountService;
 import it.finki.tinki.service.MatchmakerService;
Index: c/main/java/it/finki/tinki/web/controller/WorkEditController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkEditController.java	(revision bd38a558842ebb2aea2de48a93cbe9522759b8ad)
+++ 	(revision )
@@ -1,10 +1,0 @@
-package it.finki.tinki.web.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping(path = "/api/edit/work")
-public class WorkEditController {
-
-}
Index: src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
@@ -0,0 +1,17 @@
+package it.finki.tinki.web.controller;
+
+import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+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;
+
+@RestController
+@RequestMapping(path = "/api/register/work")
+public class WorkRegisterController {
+
+//    @PostMapping("/job")
+//    public JobResponseDTO registerJob(@RequestBody JobRegisterDTO body){
+//
+//    }
+}
