Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -0,0 +1,76 @@
+package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Table(name = "applications")
+public class Application {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @ManyToOne
+    private JobSeeker jobSeeker;
+
+    @ManyToOne
+    private JobAdvertisement jobAdvertisement;
+
+    @Column(name = "resume_file_name", nullable = false)
+    private String resumeFileName;
+
+    @ElementCollection
+    private List<String> questionAnswers;
+
+    private String message;
+
+    private LocalDateTime submittedOn;
+
+    @Enumerated(EnumType.STRING)
+    private ApplicationStatus status;
+
+    public Application(JobSeeker jobSeeker, JobAdvertisement jobAdvertisement, String resumeFileName, List<String> answers, String message) {
+        this.jobSeeker = jobSeeker;
+        this.jobAdvertisement = jobAdvertisement;
+        this.resumeFileName = resumeFileName;
+        this.questionAnswers = answers;
+        this.message = message;
+        submittedOn = LocalDateTime.now();
+        this.status = ApplicationStatus.PROPOSED;
+    }
+
+    public static ApplicationDetailsDTO mapToApplicationDetailsDTO (Application application) {
+        return new ApplicationDetailsDTO(
+                application.getId(),
+                application.getJobSeeker().getId(),
+                application.getJobSeeker().getName(),
+                application.getJobSeeker().getEmail(),
+                application.getJobSeeker().getPhoneNumber(),
+                application.getJobAdvertisement().getRecruiter().getName(),
+                application.getJobAdvertisement().getRecruiter().getEmail(),
+                application.getJobAdvertisement().getRecruiter().getPhoneNumber(),
+                application.getJobAdvertisement().getId(),
+                application.getJobAdvertisement().getTitle(),
+                application.getQuestionAnswers(),
+                application.getResumeFileName(),
+                application.getMessage(),
+                application.getSubmittedOn(),
+                application.getStatus().name()
+        );
+    }
+}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+@Data
+@AllArgsConstructor
+public class ApplicationDTO {
+    private Long jobSeekerId;
+    private Long jobAdId;
+    private MultipartFile resumeFile;
+    private String answerOne;
+    private String answerTwo;
+    private String answerThree;
+    private String messageToRecruiter;
+}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -0,0 +1,30 @@
+package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
+
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+public class ApplicationDetailsDTO {
+    private Long id;
+    private Long jobSeekerId;
+    private String jobSeekerName;
+    private String jobSeekerEmail;
+    private String jobSeekerPhoneNumber;
+    private String recruiterName;
+    private String recruiterEmail;
+    private String recruiterPhoneNumber;
+    private Long jobAdId;
+    private String jobAdTitle;
+    private List<String> questionAnswers;
+    private String fileName;
+    private String message;
+    private LocalDateTime submittedOn;
+    private String status;
+}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationStatusDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationStatusDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationStatusDTO.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class ApplicationStatusDTO {
+    Long id;
+    String status;
+}
