Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/AllController.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/AllController.java	(revision 929e93c33edbce0bd95761ba0c816259b90f33d4)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package com.ukim.finki.develop.finkwave.controller;
-
-import com.ukim.finki.develop.finkwave.model.Admin;
-import com.ukim.finki.develop.finkwave.model.EventProjection;
-import com.ukim.finki.develop.finkwave.repository.AdminRepository;
-import com.ukim.finki.develop.finkwave.repository.EventRepository;
-import com.ukim.finki.develop.finkwave.repository.ListenRepository;
-import com.ukim.finki.develop.finkwave.repository.SongRepository;
-import lombok.AllArgsConstructor;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@CrossOrigin("*")
-@AllArgsConstructor
-@RequestMapping("/all")
-public class AllController {
-    private final AdminRepository adminRepository;
-    private final EventRepository eventRepository;
-    private final ListenRepository listenRepository;
-
-    @GetMapping("/admins")
-        public HttpEntity<List<Admin>> getAllAdmins(){
-        return ResponseEntity.ok(adminRepository.findAll());
-    }
-    @GetMapping("/events")
-    public HttpEntity<List<EventProjection>> getAllEvents(){
-        return ResponseEntity.ok(eventRepository.findAllByLocation("Skopje, Macedonia"));
-    }
-    @GetMapping("/listens")
-    public HttpEntity<Map<String,?>> getAllListen(){
-        return ResponseEntity.ok(Map.of(
-                "links", listenRepository.findAll().stream().map(s -> s.getSong().getLink()).limit(10).toList()));
-    }
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/SongController.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/SongController.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/SongController.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
@@ -0,0 +1,29 @@
+package com.ukim.finki.develop.finkwave.controller;
+
+import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
+import com.ukim.finki.develop.finkwave.repository.SongRepository;
+import com.ukim.finki.develop.finkwave.service.AuthService;
+import com.ukim.finki.develop.finkwave.service.SongService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/songs")
+@AllArgsConstructor
+public class SongController {
+    private final SongRepository songRepository;
+    private final AuthService authService;
+    private final SongService songService;
+
+    @GetMapping
+    private HttpEntity<List<MusicalEntityDto>> getSongs(){
+        Long userId = authService.getCurrentUserID();
+        return ResponseEntity.ok(songService.getTopSongs(userId));
+    }
+}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/MusicalEntity.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/MusicalEntity.java	(revision 929e93c33edbce0bd95761ba0c816259b90f33d4)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/MusicalEntity.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
@@ -37,4 +37,6 @@
     private LocalDate releaseDate;
 
+    private String cover;
+
     @ManyToOne(fetch = FetchType.LAZY)
     @OnDelete(action = OnDeleteAction.CASCADE)
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java	(revision 929e93c33edbce0bd95761ba0c816259b90f33d4)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
@@ -1,4 +1,5 @@
 package com.ukim.finki.develop.finkwave.model.dto;
 
+import jakarta.annotation.Nullable;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -14,4 +15,14 @@
     private String type;
     private String releasedBy;
+    private String cover;
     private Boolean isLikedByCurrentUser;
+
+    public MusicalEntityDto(Long id, String title, String genre, String type, String releasedBy, Boolean isLikedByCurrentUser) {
+        this.id = id;
+        this.title = title;
+        this.genre = genre;
+        this.type = type;
+        this.releasedBy = releasedBy;
+        this.isLikedByCurrentUser = isLikedByCurrentUser;
+    }
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SongRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SongRepository.java	(revision 929e93c33edbce0bd95761ba0c816259b90f33d4)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SongRepository.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
@@ -21,4 +21,5 @@
             "'SONG', " +
             "u.fullName, " +
+            "me.cover," +
             "(CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END)) " +
             "FROM Song s " +
@@ -39,4 +40,5 @@
             "'SONG', " +
             "u.fullName, " +
+            "me.cover," +
             "(CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END)) " +
             "FROM Song s "+
@@ -49,3 +51,26 @@
             "WHERE ps.playlist.id=:playlistId")
     List<MusicalEntityDto>findSongsByPlaylistId(@Param("playlistId")Long playlistId, @Param("currentUserId")Long currentUserId);
+
+    @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(" +
+            "s.id, " +
+            "me.title, " +
+            "me.genre, " +
+            "'SONG', " +
+            "u.fullName, " +
+            "me.cover," +
+            "FALSE ) " +
+//            "(CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END)) " +
+//            "COUNT(*) " +
+            "FROM Song s "+
+            "JOIN s.musicalEntities me " +
+            "JOIN me.releasedBy a " +
+            "JOIN a.nonAdminUser nau "+
+            "JOIN nau.user u " +
+            "JOIN Listen l on l.song.id = s.id " +
+            "GROUP BY s.id, me.title, me.genre, u.fullName, me.cover " +
+            "ORDER BY count(*) desc "
+    )
+    // todo: handle likes, momentalno site se false za da raboti joinot
+    // todo: add paging
+    List<MusicalEntityDto> findTopByListens(@Param("currentUserId")Long currentUserId);
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/SongService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/SongService.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/SongService.java	(revision 15782a6b61f879e7ae18f6653755c6198f32150f)
@@ -0,0 +1,18 @@
+package com.ukim.finki.develop.finkwave.service;
+
+import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
+import com.ukim.finki.develop.finkwave.repository.SongRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class SongService {
+    private final SongRepository songRepository;
+
+    public List<MusicalEntityDto> getTopSongs(Long userId){
+        return songRepository.findTopByListens(userId);
+    }
+}
