Index: backend/.gitignore
===================================================================
--- backend/.gitignore	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ backend/.gitignore	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -4,4 +4,13 @@
 !**/src/main/**/target/
 !**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+
+### DO NOT NEET THESE BELOW ###
 
 ### STS ###
@@ -13,10 +22,4 @@
 .springBeans
 .sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
 
 ### NetBeans ###
Index: backend/docker-compose.yml
===================================================================
--- backend/docker-compose.yml	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/docker-compose.yml	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,17 @@
+
+services:
+  db:
+    image: postgres:17
+    container_name: shifter-db
+    ports:
+      - "7781:5432"
+    environment:
+      POSTGRES_DB: ${POSTGRES_DB}
+      POSTGRES_USER: ${POSTGRES_USER}
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+    volumes:
+      - shifter-db-data:/var/lib/postgresql/data
+    restart: always
+
+volumes:
+  shifter-db-data:
Index: backend/src/main/java/com/shifterwebapp/shifter/course/Course.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/Course.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/Course.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,57 @@
+package com.shifterwebapp.shifter.course;
+
+import com.shifterwebapp.shifter.course.enums.Difficulty;
+import com.shifterwebapp.shifter.coursecontent.CourseContent;
+import com.shifterwebapp.shifter.enrollment.Enrollment;
+import jakarta.persistence.*;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+public class Course {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_seq")
+    @SequenceGenerator(name = "course_seq", sequenceName = "course_sequence", allocationSize = 1)
+    private Long id;
+    
+    private String title;
+    
+    private String topic;
+    
+    private Difficulty difficulty;
+    
+    private Float durationHours;
+    
+    private Float price;
+    
+    private Float rating;
+    
+    private Integer ratingCount;
+    
+    private String descriptionShort;
+
+    @Lob
+    private String description;
+
+    @Lob
+    private String descriptionLong;
+    
+    @ElementCollection
+    private List<String> skillsGained;
+
+    @ElementCollection
+    private List<String> whatWillBeLearned;
+    
+    @OneToMany(mappedBy = "course", cascade = CascadeType.ALL, orphanRemoval = true)
+    private List<Enrollment> enrollments;
+
+    @OneToMany(mappedBy = "course", cascade = CascadeType.ALL, orphanRemoval = true)
+    private List<CourseContent> courseContents;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/course/CourseDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/CourseDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/CourseDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,44 @@
+package com.shifterwebapp.shifter.course;
+
+import com.shifterwebapp.shifter.course.enums.Difficulty;
+import com.shifterwebapp.shifter.coursecontent.CourseContentDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CourseDto {
+
+    private Long id;
+
+    private String title;
+
+    private String topic;
+
+    private Difficulty difficulty;
+
+    private Float durationHours;
+
+    private Float price;
+
+    private Float rating;
+
+    private Integer ratingCount;
+
+    private String descriptionShort;
+
+    private String description;
+
+    private String descriptionLong;
+
+    private List<String> skillsGained;
+
+    private List<String> whatWillBeLearned;
+
+    private List<CourseContentDto> courseContents;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/course/CourseRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/CourseRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/CourseRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.course;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CourseRepository extends JpaRepository<Course, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/course/enums/Difficulty.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/enums/Difficulty.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/enums/Difficulty.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,8 @@
+package com.shifterwebapp.shifter.course.enums;
+
+public enum Difficulty {
+    BEGINNER,
+    INTERMEDIATE,
+    ADVANCED,
+    EXPERT
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/course/service/CourseService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/service/CourseService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/service/CourseService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.course.service;
+
+public class CourseService {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/course/service/ImplCourseService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/course/service/ImplCourseService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/course/service/ImplCourseService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,21 @@
+package com.shifterwebapp.shifter.course.service;
+
+import com.shifterwebapp.shifter.course.CourseDto;
+import com.shifterwebapp.shifter.course.enums.Difficulty;
+import com.shifterwebapp.shifter.user.enums.Skills;
+
+import java.util.List;
+
+public interface ImplCourseService {
+    List<CourseDto> getAllCourses();
+    CourseDto getCourseById(Long id);
+
+    List<CourseDto> searchCoursesByTitle(String searchTitle);
+    List<CourseDto> searchCoursesByTopic(String searchTopic);
+    List<CourseDto> searchCoursesByDifficulty(Difficulty searchDifficulty);
+    List<CourseDto> searchCoursesByPrice(Float floorPrice, Float ceilPrice);
+    List<CourseDto> searchCoursesByDurationHours(Float floorHours, Float ceilHours);
+    List<CourseDto> searchCoursesBySkillsGained(List<Skills> searchSkills);
+
+
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContent.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContent.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContent.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,33 @@
+package com.shifterwebapp.shifter.coursecontent;
+
+import com.shifterwebapp.shifter.course.Course;
+import jakarta.persistence.*;
+import com.shifterwebapp.shifter.coursecontent.enums.ContentType;
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+public class CourseContent {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_seq")
+    @SequenceGenerator(name = "course_seq", sequenceName = "course_sequence", allocationSize = 1)
+    private Long id;
+
+    private String title;
+
+    private Integer position;
+
+    private String contentURL;
+
+    private ContentType contentType;
+
+    @ManyToOne
+    @JoinColumn(name = "course_id")
+    private Course course;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,23 @@
+package com.shifterwebapp.shifter.coursecontent;
+
+import com.shifterwebapp.shifter.coursecontent.enums.ContentType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CourseContentDto {
+
+    private String title;
+
+    private Integer position;
+
+    private String contentURL;
+
+    private ContentType contentType;
+
+    private Integer courseId;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/CourseContentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.coursecontent;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CourseContentRepository extends JpaRepository<CourseContent, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/enums/ContentType.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/enums/ContentType.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/enums/ContentType.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,8 @@
+package com.shifterwebapp.shifter.coursecontent.enums;
+
+public enum ContentType {
+    VIDEO,
+    TEXT,
+    FILE,
+    QUIZ
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/CourseContentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/CourseContentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/CourseContentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.coursecontent.service;
+
+public class CourseContentService {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/ImplCourseContentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/ImplCourseContentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/coursecontent/service/ImplCourseContentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,7 @@
+package com.shifterwebapp.shifter.coursecontent.service;
+
+import com.shifterwebapp.shifter.coursecontent.CourseContentDto;
+
+public interface ImplCourseContentService {
+
+}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/CourseContentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/CourseContentDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CourseContentDto {
-
-    private String title;
-
-    private Integer position;
-
-    private String contentURL;
-
-    private ContentType contentType;
-
-    private Integer courseId;
-}
-
-enum ContentType {
-    VIDEO,
-    TEXT,
-    FILE,
-    QUIZ
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/CourseDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/CourseDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,49 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import com.shifterwebapp.shifter.model.CourseContent;
-import com.shifterwebapp.shifter.model.Enrollment;
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CourseDto {
-
-    private String title;
-
-    private String topic;
-
-    private Difficulty difficulty;
-
-    private Float durationHours;
-
-    private Float price;
-
-    private Float rating;
-
-    private Integer ratingCount;
-
-    private String descriptionShort;
-
-    private String description;
-
-    private String descriptionLong;
-
-    private List<String> skillsGained;
-
-    private List<String> whatWillBeLearned;
-
-    private List<CourseContentDto> courseContents;
-}
-
-enum Difficulty {
-    BEGINNER,
-    INTERMEDIATE,
-    ADVANCED,
-    EXPERT
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/EnrollmentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/EnrollmentDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,32 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class EnrollmentDto {
-
-    private EnrollmentStatus enrollmentStatus;
-
-    private Integer percentCompleted;
-
-    private Date date;
-
-    private PaymentDto payment;
-
-    private ReviewDto review;
-
-    private CourseDto course;
-}
-
-enum EnrollmentStatus {
-    PENDING,
-    ACTIVE,
-    COMPLETED
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/PaymentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/PaymentDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import com.shifterwebapp.shifter.model.Enrollment;
-import com.shifterwebapp.shifter.model.User;
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Date;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class PaymentDto {
-
-    private Float amount;
-
-    private Date date;
-
-    private PaymentMethod paymentMethod;
-
-    private PaymentStatus paymentStatus;
-
-    private Integer enrollmentId;
-}
-
-enum PaymentMethod {
-    CARD,
-    PAYPAL,
-    CASYS
-}
-
-enum PaymentStatus {
-    PENDING,
-    COMPLETED,
-    FAILED
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/ReviewDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/ReviewDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import com.shifterwebapp.shifter.model.Enrollment;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.OneToOne;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ReviewDto {
-    private Integer rating;
-
-    private String comment;
-
-    private Boolean canBeUsedAsTestimonial;
-
-    private Date date;
-
-    private Integer enrollmentId;
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/dto/UserDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/dto/UserDto.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,68 +1,0 @@
-package com.shifterwebapp.shifter.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class UserDto {
-    private String email;
-
-    private String name;
-
-    private CompanyType companyType;
-
-    private String workPosition;
-
-    private List<Interests> interests;
-
-    private List<Skills> skills;
-
-    private List<Skills> skillGap;
-
-    private Integer points;
-
-    private List<Integer> favoriteCourses;
-
-    private List<PaymentDto> payments;
-}
-
-
-
-enum CompanyType {
-    FREELANCE,
-    STARTUP,
-    SME,
-    MIDMARKET,
-    ENTERPRISE,
-    OTHER
-}
-
-enum Interests {
-    SALES_STRATEGIES,
-    MARKETING,
-    LEADERSHIP,
-    MANAGEMENT,
-    DIGITAL_TRANSFORMATION,
-    BUSINESS_TRANSFORMATION,
-    ENTREPRENEURSHIP,
-    STARTUP,
-    SALES,
-    NEGOTIATION,
-    FINANCE_FOR_BUSINESS
-}
-
-enum Skills {
-    COMMUNICATION,
-    STRATEGIC_PLANING,
-    LEADERSHIP,
-    SALES_TECHNIQUES,
-    SALES,
-    NEGOTIATION,
-    MARKETING,
-    PROBLEM_SOLVING,
-}
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/Enrollment.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/Enrollment.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/Enrollment.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,41 @@
+package com.shifterwebapp.shifter.enrollment;
+
+import com.shifterwebapp.shifter.course.Course;
+import com.shifterwebapp.shifter.enrollment.enums.EnrollmentStatus;
+import com.shifterwebapp.shifter.payment.Payment;
+import com.shifterwebapp.shifter.review.Review;
+import jakarta.persistence.*;
+import lombok.*;
+
+import java.util.Date;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+public class Enrollment {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "enrollment_seq")
+    @SequenceGenerator(name = "enrollment_seq", sequenceName = "enrollment_sequence", allocationSize = 1)
+    private Long id;
+
+    private EnrollmentStatus enrollmentStatus;
+
+    private Integer percentCompleted;
+
+    private Date date;
+
+    @OneToOne
+    @JoinColumn(name = "payment_id")
+    private Payment payment;
+
+    @OneToOne(mappedBy = "enrollment", cascade = CascadeType.ALL, orphanRemoval = true)
+    private Review review;
+
+    @ManyToOne
+    @JoinColumn(name = "course_id")
+    private Course course;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,30 @@
+package com.shifterwebapp.shifter.enrollment;
+
+import com.shifterwebapp.shifter.course.CourseDto;
+import com.shifterwebapp.shifter.enrollment.enums.EnrollmentStatus;
+import com.shifterwebapp.shifter.payment.PaymentDto;
+import com.shifterwebapp.shifter.review.ReviewDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class EnrollmentDto {
+
+    private EnrollmentStatus enrollmentStatus;
+
+    private Integer percentCompleted;
+
+    private Date date;
+
+    private PaymentDto payment;
+
+    private ReviewDto review;
+
+    private CourseDto course;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/EnrollmentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.enrollment;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface EnrollmentRepository extends JpaRepository<Enrollment, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/enums/EnrollmentStatus.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/enums/EnrollmentStatus.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/enums/EnrollmentStatus.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,7 @@
+package com.shifterwebapp.shifter.enrollment.enums;
+
+public enum EnrollmentStatus {
+    PENDING,
+    ACTIVE,
+    COMPLETED
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/EnrollmentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/EnrollmentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/EnrollmentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.enrollment.service;
+
+public class EnrollmentService {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/ImplEnrollmentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/ImplEnrollmentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/enrollment/service/ImplEnrollmentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,16 @@
+package com.shifterwebapp.shifter.enrollment.service;
+
+import com.shifterwebapp.shifter.enrollment.EnrollmentDto;
+import com.shifterwebapp.shifter.enrollment.enums.EnrollmentStatus;
+
+public interface ImplEnrollmentService {
+    EnrollmentDto getEnrollmentsByUser(Long userId);
+    EnrollmentDto getEnrollmentsByCourse(Long courseId);
+
+    EnrollmentDto enrollUser(Long userId, Long courseId);
+
+    Boolean isUserEnrolled(Long userId, Long courseId);
+
+    EnrollmentDto updateEnrollmentsStatus(Long userId, Long courseId, EnrollmentStatus newStatus);
+
+}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/Course.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/Course.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,58 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-
-import java.util.List;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class Course {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_seq")
-    @SequenceGenerator(name = "course_seq", sequenceName = "course_sequence", allocationSize = 1)
-    private Integer id;
-    
-    private String title;
-    
-    private String topic;
-    
-    private Difficulty difficulty;
-    
-    private Float durationHours;
-    
-    private Float price;
-    
-    private Float rating;
-    
-    private Integer ratingCount;
-    
-    private String descriptionShort;
-    
-    private String description;
-    
-    private String descriptionLong;
-    
-    @ElementCollection
-    private List<String> skillsGained;
-
-    @ElementCollection
-    private List<String> whatWillBeLearned;
-    
-    @OneToMany(mappedBy = "course")
-    private List<Enrollment> enrollments;
-
-    @OneToMany(mappedBy = "course")
-    private List<CourseContent> courseContents;
-}
-
-enum Difficulty {
-    BEGINNER,
-    INTERMEDIATE,
-    ADVANCED,
-    EXPERT
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/CourseContent.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/CourseContent.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,37 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class CourseContent {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_seq")
-    @SequenceGenerator(name = "course_seq", sequenceName = "course_sequence", allocationSize = 1)
-    private Integer id;
-
-    private String title;
-
-    private Integer position;
-
-    private String contentURL;
-
-    private ContentType contentType;
-
-    @ManyToOne
-    @JoinColumn(name = "course_id")
-    private Course course;
-}
-
-enum ContentType {
-    VIDEO,
-    TEXT,
-    FILE,
-    QUIZ
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/Enrollment.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/Enrollment.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-
-import java.util.Date;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class Enrollment {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "enrollment_seq")
-    @SequenceGenerator(name = "enrollment_seq", sequenceName = "enrollment_sequence", allocationSize = 1)
-    private Integer id;
-
-    private EnrollmentStatus enrollmentStatus;
-
-    private Integer percentCompleted;
-
-    private Date date;
-
-    @OneToOne
-    @JoinColumn(name = "payment_id")
-    private Payment payment;
-
-    @OneToOne(mappedBy = "enrollment")
-    private Review review;
-
-    @ManyToOne
-    @JoinColumn(name = "course_id")
-    private Course course;
-}
-
-enum EnrollmentStatus {
-    PENDING,
-    ACTIVE,
-    COMPLETED
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/Payment.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/Payment.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,46 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-
-import java.util.Date;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class Payment {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "payment_seq")
-    @SequenceGenerator(name = "payment_seq", sequenceName = "payment_sequence", allocationSize = 1)
-    private Integer id;
-
-    private Float amount;
-
-    private Date date;
-
-    private PaymentMethod paymentMethod;
-
-    private PaymentStatus paymentStatus;
-
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private User user;
-
-    @OneToOne(mappedBy = "payment")
-    private Enrollment enrollment;
-}
-
-enum PaymentMethod {
-    CARD,
-    PAYPAL,
-    CASYS
-}
-
-enum PaymentStatus {
-    PENDING,
-    COMPLETED,
-    FAILED
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/Review.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/Review.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,31 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-
-import java.util.Date;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class Review {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "review_seq")
-    @SequenceGenerator(name = "review_seq", sequenceName = "review_sequence", allocationSize = 1)
-    private Integer id;
-
-    private Integer rating;
-
-    private String comment;
-
-    private Boolean canBeUsedAsTestimonial;
-
-    private Date date;
-
-    @OneToOne
-    @JoinColumn(name = "enrollment_id")
-    private Enrollment enrollment;
-}
Index: ckend/src/main/java/com/shifterwebapp/shifter/model/User.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/model/User.java	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ 	(revision )
@@ -1,87 +1,0 @@
-package com.shifterwebapp.shifter.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import jakarta.persistence.*;
-import lombok.*;
-
-import java.util.List;
-
-@Getter
-@Setter
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-@Entity
-public class User {
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_seq")
-    @SequenceGenerator(name = "user_seq", sequenceName = "user_sequence", allocationSize = 1)
-    private Integer id;
-    
-    private String email;
-    
-    @JsonIgnore
-    private String passwordHash;    // THIS SHOULD BE CHANGED
-
-    private String name;
-    
-    private Boolean isAdmin;
-    
-    private CompanyType companyType;
-    
-    private String workPosition;
-    
-    @ElementCollection(targetClass = Interests.class)
-    @Enumerated(EnumType.STRING)
-    private List<Interests> interests;
-
-    @ElementCollection(targetClass = Skills.class)
-    @Enumerated(EnumType.STRING)
-    private List<Skills> skills;
-
-    @ElementCollection(targetClass = Skills.class)
-    @Enumerated(EnumType.STRING)
-    private List<Skills> skillGap;
-    
-    private Integer points;
-
-    @ElementCollection
-    private List<Integer> favoriteCourses;
-
-    @OneToMany(mappedBy = "user")
-    private List<Payment> payments;
-}
-
-enum CompanyType {
-    FREELANCE,
-    STARTUP,
-    SME,
-    MIDMARKET,
-    ENTERPRISE,
-    OTHER
-}
-
-enum Interests {
-    SALES_STRATEGIES,
-    MARKETING,
-    LEADERSHIP,
-    MANAGEMENT,
-    DIGITAL_TRANSFORMATION,
-    BUSINESS_TRANSFORMATION,
-    ENTREPRENEURSHIP,
-    STARTUP,
-    SALES,
-    NEGOTIATION,
-    FINANCE_FOR_BUSINESS
-}
-
-enum Skills {
-    COMMUNICATION,
-    STRATEGIC_PLANING,
-    LEADERSHIP,
-    SALES_TECHNIQUES,
-    SALES,
-    NEGOTIATION,
-    MARKETING,
-    PROBLEM_SOLVING,
-}
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/Payment.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/Payment.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/Payment.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,39 @@
+package com.shifterwebapp.shifter.payment;
+
+import com.shifterwebapp.shifter.enrollment.Enrollment;
+import com.shifterwebapp.shifter.payment.enums.PaymentMethod;
+import com.shifterwebapp.shifter.payment.enums.PaymentStatus;
+import com.shifterwebapp.shifter.user.User;
+import jakarta.persistence.*;
+import lombok.*;
+
+import java.util.Date;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+public class Payment {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "payment_seq")
+    @SequenceGenerator(name = "payment_seq", sequenceName = "payment_sequence", allocationSize = 1)
+    private Long id;
+
+    private Float amount;
+
+    private Date date;
+
+    private PaymentMethod paymentMethod;
+
+    private PaymentStatus paymentStatus;
+
+    @ManyToOne
+    @JoinColumn(name = "user_id")
+    private User user;
+
+    @OneToOne(mappedBy = "payment", cascade = CascadeType.ALL, orphanRemoval = true)
+    private Enrollment enrollment;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,26 @@
+package com.shifterwebapp.shifter.payment;
+
+import com.shifterwebapp.shifter.payment.enums.PaymentMethod;
+import com.shifterwebapp.shifter.payment.enums.PaymentStatus;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PaymentDto {
+
+    private Float amount;
+
+    private Date date;
+
+    private PaymentMethod paymentMethod;
+
+    private PaymentStatus paymentStatus;
+
+    private Integer enrollmentId;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/PaymentRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.payment;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface PaymentRepository extends JpaRepository<Payment, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentMethod.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentMethod.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentMethod.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,7 @@
+package com.shifterwebapp.shifter.payment.enums;
+
+public enum PaymentMethod {
+    CARD,
+    PAYPAL,
+    CASYS
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentStatus.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentStatus.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/enums/PaymentStatus.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,7 @@
+package com.shifterwebapp.shifter.payment.enums;
+
+public enum PaymentStatus {
+    PENDING,
+    COMPLETED,
+    FAILED
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/service/ImplPaymentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/service/ImplPaymentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/service/ImplPaymentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,21 @@
+package com.shifterwebapp.shifter.payment.service;
+
+import com.shifterwebapp.shifter.payment.PaymentDto;
+import com.shifterwebapp.shifter.payment.enums.PaymentMethod;
+
+import java.util.List;
+
+public interface ImplPaymentService {
+    List<PaymentDto> getPaymentsByUser(Long userId);
+    List<PaymentDto> getPaymentsByCourse(Long courseId);
+
+    Double getTotalRevenueByCourse(Long courseId);
+    Double getTotalMonthlyRevenueByCourse(Long courseId, Integer month, Integer year);
+    Double getTotalYearlyRevenueByCourse(Long courseId, Integer year);
+
+    Boolean hasUserPaidForCourse(Long userId, Long courseId);
+
+    PaymentDto initiatePayment(Long userId, Long courseId, PaymentMethod paymentMethod);
+    PaymentDto completePayment(Long paymentId);
+    PaymentDto failPayment(Long paymentId);
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/payment/service/PaymentService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/payment/service/PaymentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/payment/service/PaymentService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.payment.service;
+
+public class PaymentService {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/review/Review.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/review/Review.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/review/Review.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,32 @@
+package com.shifterwebapp.shifter.review;
+
+import com.shifterwebapp.shifter.enrollment.Enrollment;
+import jakarta.persistence.*;
+import lombok.*;
+
+import java.util.Date;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+public class Review {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "review_seq")
+    @SequenceGenerator(name = "review_seq", sequenceName = "review_sequence", allocationSize = 1)
+    private Long id;
+
+    private Integer rating;
+
+    private String comment;
+
+    private Boolean canBeUsedAsTestimonial;
+
+    private Date date;
+
+    @OneToOne
+    @JoinColumn(name = "enrollment_id")
+    private Enrollment enrollment;
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/review/ReviewDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/review/ReviewDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/review/ReviewDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,25 @@
+package com.shifterwebapp.shifter.review;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ReviewDto {
+
+    private Long id;
+
+    private Integer rating;
+
+    private String comment;
+
+    private Boolean canBeUsedAsTestimonial;
+
+    private Date date;
+
+    private Integer enrollmentId;
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/review/ReviewRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/review/ReviewRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/review/ReviewRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.review;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ReviewRepository extends JpaRepository<Review, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/review/service/ImplReviewService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/review/service/ImplReviewService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/review/service/ImplReviewService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,14 @@
+package com.shifterwebapp.shifter.review.service;
+
+import com.shifterwebapp.shifter.review.ReviewDto;
+
+import java.util.List;
+
+public interface ImplReviewService {
+    ReviewDto getReviewById(Long id);
+    List<ReviewDto> getReviewsByCourse(Long courseId);
+    List<ReviewDto> getReviewsByUser(Long userId);
+    Float getAverageRatingByCourse(Long courseId);
+
+    Boolean hasBeenReviewedByUser(Long userId);
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/review/service/ReviewService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/review/service/ReviewService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/review/service/ReviewService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.review.service;
+
+public class ReviewService {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/User.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/User.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/User.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,59 @@
+package com.shifterwebapp.shifter.user;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.shifterwebapp.shifter.payment.Payment;
+import com.shifterwebapp.shifter.user.enums.CompanyType;
+import com.shifterwebapp.shifter.user.enums.Interests;
+import com.shifterwebapp.shifter.user.enums.Skills;
+import jakarta.persistence.*;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Entity
+@Table(name = "\"user\"")
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_seq")
+    @SequenceGenerator(name = "user_seq", sequenceName = "user_sequence", allocationSize = 1)
+    private Long id;
+
+    private String name;
+
+    private String email;
+    
+    @JsonIgnore
+    private String passwordHash;    // THIS SHOULD BE CHANGED
+
+    private Boolean isAdmin;
+    
+    private CompanyType companyType;
+    
+    private String workPosition;
+    
+    @ElementCollection(targetClass = Interests.class)
+    @Enumerated(EnumType.STRING)
+    private List<Interests> interests;
+
+    @ElementCollection(targetClass = Skills.class)
+    @Enumerated(EnumType.STRING)
+    private List<Skills> skills;
+
+    @ElementCollection(targetClass = Skills.class)
+    @Enumerated(EnumType.STRING)
+    private List<Skills> skillGap;
+    
+    private Integer points;
+
+    @ElementCollection
+    private List<Integer> favoriteCourses;
+
+    @OneToMany(mappedBy = "user")       // Maybe CascadeType.PERSIST ????
+    private List<Payment> payments;
+}
+
Index: backend/src/main/java/com/shifterwebapp/shifter/user/UserDto.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/UserDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/UserDto.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,39 @@
+package com.shifterwebapp.shifter.user;
+
+import com.shifterwebapp.shifter.payment.PaymentDto;
+import com.shifterwebapp.shifter.user.enums.CompanyType;
+import com.shifterwebapp.shifter.user.enums.Interests;
+import com.shifterwebapp.shifter.user.enums.Skills;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserDto {
+    private String email;
+
+    private String name;
+
+    private CompanyType companyType;
+
+    private String workPosition;
+
+    private List<Interests> interests;
+
+    private List<Skills> skills;
+
+    private List<Skills> skillGap;
+
+    private Integer points;
+
+    private List<Integer> favoriteCourses;
+
+    private List<PaymentDto> payments;
+}
+
+
+
Index: backend/src/main/java/com/shifterwebapp/shifter/user/UserRepository.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/UserRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/UserRepository.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,6 @@
+package com.shifterwebapp.shifter.user;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository<User, Long> {
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/enums/CompanyType.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/enums/CompanyType.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/enums/CompanyType.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,10 @@
+package com.shifterwebapp.shifter.user.enums;
+
+public enum CompanyType {
+    FREELANCE,
+    STARTUP,
+    SME,
+    MIDMARKET,
+    ENTERPRISE,
+    OTHER
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/enums/Interests.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/enums/Interests.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/enums/Interests.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,15 @@
+package com.shifterwebapp.shifter.user.enums;
+
+public enum Interests {
+    SALES_STRATEGIES,
+    MARKETING,
+    LEADERSHIP,
+    MANAGEMENT,
+    DIGITAL_TRANSFORMATION,
+    BUSINESS_TRANSFORMATION,
+    ENTREPRENEURSHIP,
+    STARTUP,
+    SALES,
+    NEGOTIATION,
+    FINANCE_FOR_BUSINESS
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/enums/Skills.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/enums/Skills.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/enums/Skills.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,12 @@
+package com.shifterwebapp.shifter.user.enums;
+
+public enum Skills {
+    COMMUNICATION,
+    STRATEGIC_PLANING,
+    LEADERSHIP,
+    SALES_TECHNIQUES,
+    SALES,
+    NEGOTIATION,
+    MARKETING,
+    PROBLEM_SOLVING,
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/service/ImplUserService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/service/ImplUserService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/service/ImplUserService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,42 @@
+package com.shifterwebapp.shifter.user.service;
+
+import com.shifterwebapp.shifter.course.CourseDto;
+import com.shifterwebapp.shifter.payment.Payment;
+import com.shifterwebapp.shifter.review.ReviewDto;
+import com.shifterwebapp.shifter.user.UserDto;
+import com.shifterwebapp.shifter.user.enums.CompanyType;
+import com.shifterwebapp.shifter.user.enums.Interests;
+import com.shifterwebapp.shifter.user.enums.Skills;
+
+import java.util.List;
+
+public interface ImplUserService {
+    List<UserDto> getAllUsers();
+    UserDto getUserById(Long id);
+
+    List<CourseDto> getAllBoughtCourses(Long id);
+    CourseDto getBoughtCourse(Long userId, Long courseId);
+    List<ReviewDto> getAllReviews(Long id);
+    ReviewDto getReview(Long userId, Long reviewId);
+
+    UserDto updateName(Long id, String newName);
+    UserDto updateMail(Long id, String newMail);
+    UserDto updatePass(Long id, String newPassHash);
+    UserDto updateWorkPosition(Long id, String newWorkPosition);
+    UserDto updateCompanyType(Long id, CompanyType newCompanyType);
+
+    UserDto addInterest(Long id, Interests newInterest);
+    UserDto addSkill(Long id, Skills newSkill);
+    UserDto addSkillGap(Long id, Skills newSkillGap);
+    UserDto addFavoriteCourse(Long id, Interests newFavoriteCourseId);
+    UserDto addPoints(Long id, Integer newPointsAchieved);
+    UserDto addPayment(Long id, Payment newPayment);
+
+    UserDto removeInterest(Long id, Interests removeInterest);
+    UserDto removeSkill(Long id, Skills removeSkill);
+    UserDto removeSkillGap(Long id, Skills removeSkillGap);
+    UserDto removeFavoriteCourse(Long id, Interests removeFavoriteCourseId);
+    UserDto removePoints(Long id, Integer removePointsAchieved);
+    UserDto removePayment(Long id, Payment removePayment);
+
+}
Index: backend/src/main/java/com/shifterwebapp/shifter/user/service/UserService.java
===================================================================
--- backend/src/main/java/com/shifterwebapp/shifter/user/service/UserService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
+++ backend/src/main/java/com/shifterwebapp/shifter/user/service/UserService.java	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -0,0 +1,4 @@
+package com.shifterwebapp.shifter.user.service;
+
+public class UserService {
+}
Index: backend/src/main/resources/application.properties
===================================================================
--- backend/src/main/resources/application.properties	(revision 28a0f1e699697bfdd6b980fc72fa073669c3527e)
+++ backend/src/main/resources/application.properties	(revision d061aac450daa79ad7e43ae505b0db48a22e27a4)
@@ -1,1 +1,8 @@
 spring.application.name=Shifter
+spring.datasource.url=jdbc:postgresql://${POSTGRES_HOST}:5432/${POSTGRES_DB}?pgbouncer=true
+spring.datasource.username=${POSTGRES_USER}
+spring.datasource.password=${POSTGRES_PASSWORD}
+spring.datasource.driver-class-name=org.postgresql.Driver
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
