Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AlbumDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AlbumDto.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/AlbumDto.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -12,6 +12,6 @@
     private List<MusicalEntityDto>songs;
 
-    public AlbumDto(Long id, String title, String genre, String type, String releasedBy, Boolean isLikedByCurrentUser) {
-        super(id, title, genre, type, releasedBy, isLikedByCurrentUser);
+    public AlbumDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, Boolean isLikedByCurrentUser) {
+        super(id, title, genre, type, releasedBy, artistUsername, isLikedByCurrentUser);
     }
 
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/BasicSongDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/BasicSongDto.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/BasicSongDto.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -7,4 +7,5 @@
     String title,
     String artist,
+    String artistUsername,
     String link,
     @Nullable String cover
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 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -1,5 +1,4 @@
 package com.ukim.finki.develop.finkwave.model.dto;
 
-import jakarta.annotation.Nullable;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -17,9 +16,11 @@
     private String type;
     private String releasedBy;
+    private String artistUsername;
     private String cover;
     private Boolean isLikedByCurrentUser;
     private String album;
+    private Long albumId;
 
-    public MusicalEntityDto(Long id, String title, String genre, String type, String releasedBy, Boolean isLikedByCurrentUser) {
+    public MusicalEntityDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, Boolean isLikedByCurrentUser) {
         this.id = id;
         this.title = title;
@@ -27,8 +28,9 @@
         this.type = type;
         this.releasedBy = releasedBy;
+        this.artistUsername = artistUsername;
         this.isLikedByCurrentUser = isLikedByCurrentUser;
     }
 
-    public MusicalEntityDto(Long id, String title, String genre, String type, String releasedBy, String cover, Boolean isLikedByCurrentUser) {
+    public MusicalEntityDto(Long id, String title, String genre, String type, String releasedBy, String releasedByUsername, String cover, Boolean isLikedByCurrentUser) {
         this.id = id;
         this.title = title;
@@ -36,4 +38,5 @@
         this.type = type;
         this.releasedBy = releasedBy;
+        this.artistUsername = artistUsername;
         this.cover = cover;
         this.isLikedByCurrentUser = isLikedByCurrentUser;
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDetailsDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDetailsDto.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDetailsDto.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -14,21 +14,20 @@
     private List<ReviewDto> reviews;
 
-    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, String cover, Boolean isLikedByCurrentUser, String album, String link, List<ArtistContributionSummaryDto> contributions, List<ReviewDto> reviews) {
-        super(id, title, genre, type, releasedBy, cover, isLikedByCurrentUser, album, link);
+    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, String cover, Boolean isLikedByCurrentUser, String album, Long albumId, String link, List<ReviewDto> reviews, List<ArtistContributionSummaryDto> contributions) {
+        super(id, title, genre, type, releasedBy, artistUsername, cover, isLikedByCurrentUser, album, albumId, link);
+        this.reviews = reviews;
         this.contributions = contributions;
-        this.reviews = reviews;
     }
 
-    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, Boolean isLikedByCurrentUser, String link, List<ArtistContributionSummaryDto> contributions, List<ReviewDto> reviews) {
-        super(id, title, genre, type, releasedBy, isLikedByCurrentUser, link);
+    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, Boolean isLikedByCurrentUser, String link, List<ReviewDto> reviews, List<ArtistContributionSummaryDto> contributions) {
+        super(id, title, genre, type, releasedBy, artistUsername, isLikedByCurrentUser, link);
+        this.reviews = reviews;
         this.contributions = contributions;
-        this.reviews = reviews;
     }
 
-    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, String cover, Boolean isLikedByCurrentUser, String link, List<ArtistContributionSummaryDto> contributions, List<ReviewDto> reviews) {
-        super(id, title, genre, type, releasedBy, cover, isLikedByCurrentUser, link);
+    public SongDetailsDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, String cover, Boolean isLikedByCurrentUser, String link, List<ReviewDto> reviews, List<ArtistContributionSummaryDto> contributions) {
+        super(id, title, genre, type, releasedBy, artistUsername, cover, isLikedByCurrentUser, link);
+        this.reviews = reviews;
         this.contributions = contributions;
-        this.reviews = reviews;
     }
-
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDto.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/SongDto.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -13,18 +13,18 @@
     // todo: clean up constructors
 
-    public SongDto(Long id, String title, String genre, String type, String releasedBy, String cover, Boolean isLikedByCurrentUser, String album, String link) {
-        super(id, title, genre, type, releasedBy, cover, isLikedByCurrentUser, album);
+
+    public SongDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, String cover, Boolean isLikedByCurrentUser, String album, Long albumId, String link) {
+        super(id, title, genre, type, releasedBy, artistUsername, cover, isLikedByCurrentUser, album, albumId);
         this.link = link;
     }
 
-    public SongDto(Long id, String title, String genre, String type, String releasedBy, Boolean isLikedByCurrentUser, String link) {
-        super(id, title, genre, type, releasedBy, isLikedByCurrentUser);
+    public SongDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, Boolean isLikedByCurrentUser, String link) {
+        super(id, title, genre, type, releasedBy, artistUsername, isLikedByCurrentUser);
         this.link = link;
     }
 
-    public SongDto(Long id, String title, String genre, String type, String releasedBy, String cover, Boolean isLikedByCurrentUser, String link) {
-        super(id, title, genre, type, releasedBy, cover, isLikedByCurrentUser);
+    public SongDto(Long id, String title, String genre, String type, String releasedBy, String artistUsername, String cover, Boolean isLikedByCurrentUser, String link) {
+        super(id, title, genre, type, releasedBy, artistUsername, cover, isLikedByCurrentUser);
         this.link = link;
     }
-
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/AlbumRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/AlbumRepository.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/AlbumRepository.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -18,5 +18,5 @@
     @Query("""
         SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(
-            a.id, me.title, me.genre, 'ALBUM', u.fullName, me.cover, FALSE )
+            a.id, me.title, me.genre, 'ALBUM', u.fullName, u.username, me.cover, FALSE )
         FROM Album a
         JOIN a.musicalEntities me
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -23,4 +23,5 @@
                  ELSE 'UNKNOWN' END),
             u.fullName,
+            u.username,
             (CASE WHEN currentUserLike.id IS NOT NULL THEN true ELSE false END))
         FROM Like l
@@ -40,5 +41,5 @@
         SELECT CASE WHEN COUNT (l)>0 THEN true ELSE false END
         FROM MusicalEntity me
-        JOIN Like  l on l.musicalEntity.id=me.id
+        JOIN Like l on l.musicalEntity.id=me.id
         WHERE l.listener.id=:userId
         """)
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 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SongRepository.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -19,5 +19,5 @@
     @Query("""
         SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(
-            s.id, me.title, me.genre, 'SONG', u.fullName, me.cover,
+            s.id, me.title, me.genre, 'SONG', u.fullName, u.username, me.cover,
             (CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END)
         )
@@ -35,5 +35,5 @@
     @Query("""
         SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(
-            s.id, me.title, me.genre, 'SONG', u.fullName, me.cover,
+            s.id, me.title, me.genre, 'SONG', u.fullName, u.username, me.cover,
             (CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END))
         FROM Song s
@@ -55,12 +55,21 @@
             'SONG',
             s.musicalEntities.releasedBy.nonAdminUser.user.fullName,
+            s.musicalEntities.releasedBy.nonAdminUser.user.username,
             s.musicalEntities.cover,
             (EXISTS (SELECT 1 FROM Like l WHERE l.musicalEntity.id = s.id AND l.listener.id = :currentUserId)),
             s.album.musicalEntities.title,
+            s.album.musicalEntities.id,
             s.link
         )
         FROM Song s
-        GROUP BY s.id, s.musicalEntities.title, s.musicalEntities.genre,
-            s.musicalEntities.releasedBy.nonAdminUser.user.fullName, s.musicalEntities.cover, s.album.musicalEntities.title
+        GROUP BY
+            s.id,
+            s.musicalEntities.title,
+            s.musicalEntities.genre,
+            s.musicalEntities.releasedBy.nonAdminUser.user.fullName,
+            s.musicalEntities.releasedBy.nonAdminUser.user.username,
+            s.musicalEntities.cover,
+            s.album.musicalEntities.title,
+            s.album.musicalEntities.id
         ORDER BY count(*) desc
     """)
@@ -75,4 +84,5 @@
             'SONG',
             s.musicalEntities.releasedBy.nonAdminUser.user.fullName,
+            s.musicalEntities.releasedBy.nonAdminUser.user.username,
             s.musicalEntities.cover,
             (EXISTS (SELECT 1 FROM Like l WHERE l.musicalEntity.id = s.id AND l.listener.id = :currentUserId)),
@@ -90,4 +100,5 @@
             me.title,
             u.full_name,
+            u.username,
             s.link,
             me.cover
@@ -109,4 +120,5 @@
             'SONG',
             u.fullName,
+            u.username,
             me.cover,
             (EXISTS (
@@ -116,4 +128,5 @@
             )),
             albumMe.title,
+            albumMe.id,
             s.link
         )
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AlbumService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AlbumService.java	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AlbumService.java	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -34,4 +34,5 @@
                 "ALBUM",
                 album.getMusicalEntities().getReleasedBy().getNonAdminUser().getUser().getFullName(),
+                album.getMusicalEntities().getReleasedBy().getNonAdminUser().getUser().getUsername(),
                 likeRepository.isLikedByUser(currentUserId));
         List<MusicalEntityDto>songsFromAlbum=songRepository.findSongsByAlbum(id,currentUserId);
Index: frontend/src/components/Sidebar.tsx
===================================================================
--- frontend/src/components/Sidebar.tsx	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ frontend/src/components/Sidebar.tsx	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -97,5 +97,4 @@
 							<div
 								key={song.id}
-								onClick={() => navigate(`/songs/${song.id}`)}
 								className="flex items-center gap-3 p-2 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group relative"
 							>
@@ -109,10 +108,47 @@
 								/>
 								<div className="flex-1 min-w-0">
-									<p className="text-sm font-medium text-white truncate">
+									<p
+										onClick={() => navigate(`/songs/${song.id}`)}
+										className="text-sm font-medium text-white truncate hover:underline cursor-pointer"
+									>
 										{song.title}
 									</p>
-									<p className="text-xs text-gray-400 truncate">
-										{song.artist}
-									</p>
+									<div className="flex items-center gap-1 text-xs text-gray-400">
+										<span
+											onClick={(e) => {
+												e.stopPropagation();
+												if (song.artistUsername) {
+													navigate(`/users/${song.artistUsername}`);
+												}
+											}}
+											className={`truncate ${
+												song.artistUsername
+													? "hover:underline cursor-pointer hover:text-white"
+													: ""
+											}`}
+										>
+											{song.artist}
+										</span>
+										{song.album && (
+											<>
+												<span>•</span>
+												<span
+													onClick={(e) => {
+														e.stopPropagation();
+														if (song.albumId) {
+															navigate(`/collection/album/${song.albumId}`);
+														}
+													}}
+													className={`truncate ${
+														song.albumId
+															? "hover:underline cursor-pointer hover:text-white"
+															: ""
+													}`}
+												>
+													{song.album}
+												</span>
+											</>
+										)}
+									</div>
 								</div>
 								{song.link && (
Index: frontend/src/components/search/AlbumResult.tsx
===================================================================
--- frontend/src/components/search/AlbumResult.tsx	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ frontend/src/components/search/AlbumResult.tsx	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -1,2 +1,3 @@
+import { useNavigate } from "react-router-dom";
 import type { Album } from "../../utils/types";
 
@@ -6,6 +7,11 @@
 
 const AlbumResult = ({ album }: AlbumResultProps) => {
+	const navigate = useNavigate();
+
 	return (
-		<div className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group">
+		<div
+			onClick={() => navigate(`/collection/album/${album.id}`)}
+			className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group"
+		>
 			<img
 				src={album.cover || "/favicon.png"}
Index: frontend/src/components/search/UserResult.tsx
===================================================================
--- frontend/src/components/search/UserResult.tsx	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ frontend/src/components/search/UserResult.tsx	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -1,2 +1,3 @@
+import { useNavigate } from "react-router-dom";
 import { baseURL } from "../../api/axiosInstance";
 import type { BaseNonAdminUser } from "../../utils/types";
@@ -8,6 +9,11 @@
 
 const UserResult = ({ user, label }: UserResultProps) => {
+	const navigate = useNavigate();
+
 	return (
-		<div className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group">
+		<div
+			onClick={() => navigate(`/users/${user.username}`)}
+			className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group"
+		>
 			{user.profilePhoto ? (
 				<img
Index: frontend/src/pages/LandingPage.tsx
===================================================================
--- frontend/src/pages/LandingPage.tsx	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ frontend/src/pages/LandingPage.tsx	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -417,8 +417,34 @@
 														{song.title}
 													</h3>
-													<p className="text-sm text-gray-400 mb-3 overflow-hidden text-ellipsis whitespace-nowrap">
-														{song.album}
-													</p>
-													<p className="text-sm text-gray-400 mb-3 overflow-hidden text-ellipsis whitespace-nowrap">
+													{song.album && (
+														<p
+															onClick={(e) => {
+																e.stopPropagation();
+																if (song.albumId) {
+																	navigate(`/collection/album/${song.albumId}`);
+																}
+															}}
+															className={`text-sm text-gray-400 mb-3 overflow-hidden text-ellipsis whitespace-nowrap ${
+																song.albumId
+																	? "hover:underline cursor-pointer hover:text-white"
+																	: ""
+															}`}
+														>
+															{song.album}
+														</p>
+													)}
+													<p
+														onClick={(e) => {
+															e.stopPropagation();
+															if (song.artistUsername) {
+																navigate(`/users/${song.artistUsername}`);
+															}
+														}}
+														className={`text-sm text-gray-400 mb-3 overflow-hidden text-ellipsis whitespace-nowrap ${
+															song.artistUsername
+																? "hover:underline cursor-pointer hover:text-white"
+																: ""
+														}`}
+													>
 														{song.releasedBy}
 													</p>
Index: frontend/src/utils/types.ts
===================================================================
--- frontend/src/utils/types.ts	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
+++ frontend/src/utils/types.ts	(revision 8ccb07eaee0e86c4db97ef4fa7b747503a6fc43d)
@@ -22,4 +22,5 @@
 	type: string;
 	releasedBy: string;
+	artistUsername?: string;
 	cover?: string | null;
 	isLikedByCurrentUser?: boolean;
@@ -29,4 +30,5 @@
 	type: "SONG";
 	album?: string;
+	albumId?: number;
 	link?: string;
 }
@@ -92,6 +94,9 @@
 	title: string;
 	artist: string;
+	artistUsername?: string;
 	cover?: string;
 	link?: string;
+	album?: string;
+	albumId?: number;
 }
 
