Index: ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs
===================================================================
--- ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -210,4 +210,7 @@
                 e.Property(x => x.IsRead).HasColumnName("is_read");
                 e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.RecipientUserId).HasColumnName("recipient_user_id");
+                e.Property(x => x.Type).HasColumnName("type");
+                e.Property(x => x.Link).HasColumnName("link");
             });
 
Index: ChapterX.Infrastructure/Repositories/CommentRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/CommentRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/CommentRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -19,9 +19,12 @@
 
         public async Task<IEnumerable<Comment>> GetByChapterIdAsync(int chapterId, CancellationToken cancellationToken = default)
-        {
-            return await _dbSet
-                .Where(c => c.StoryId == chapterId)
+            => await _dbSet.Where(c => c.StoryId == chapterId).ToListAsync(cancellationToken);
+
+        public async Task<IEnumerable<Comment>> GetByStoryIdAsync(int storyId, CancellationToken cancellationToken = default)
+            => await _dbSet
+                .Include(c => c.User)
+                .Where(c => c.StoryId == storyId)
+                .OrderByDescending(c => c.CreatedAt)
                 .ToListAsync(cancellationToken);
-        }
     }
 }
Index: ChapterX.Infrastructure/Repositories/LikesRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/LikesRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/LikesRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -2,9 +2,5 @@
 using ChapterX.Domain.Repositories;
 using ChapterX.Infrastructure.Data.DataContext;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
 
 namespace ChapterX.Infrastructure.Repositories
@@ -15,4 +11,19 @@
         {
         }
+
+        public async Task<IEnumerable<Likes>> GetByStoryIdAsync(int storyId, CancellationToken cancellationToken = default)
+            => await _dbSet.Where(l => l.StoryId == storyId).ToListAsync(cancellationToken);
+
+        public async Task<bool> ExistsAsync(int userId, int storyId, CancellationToken cancellationToken = default)
+            => await _dbSet.AnyAsync(l => l.UserId == userId && l.StoryId == storyId, cancellationToken);
+
+        public async Task<bool> DeleteByUserAndStoryAsync(int userId, int storyId, CancellationToken cancellationToken = default)
+        {
+            var like = await _dbSet.FirstOrDefaultAsync(l => l.UserId == userId && l.StoryId == storyId, cancellationToken);
+            if (like == null) return false;
+            _dbSet.Remove(like);
+            await _context.SaveChangesAsync(cancellationToken);
+            return true;
+        }
     }
 }
Index: ChapterX.Infrastructure/Repositories/NotificationRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/NotificationRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/NotificationRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -15,7 +15,8 @@
         // This method returns all notifications; adjust filter when a User relation is added.
         public async Task<IEnumerable<Notification>> GetByUserIdAsync(int userId, CancellationToken cancellationToken = default)
-        {
-            return await _dbSet.ToListAsync(cancellationToken);
-        }
+            => await _dbSet
+                .Where(n => n.RecipientUserId == userId)
+                .OrderByDescending(n => n.CreatedAt)
+                .ToListAsync(cancellationToken);
     }
 }
Index: ChapterX.Infrastructure/Repositories/ReadingListItemsRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/ReadingListItemsRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/ReadingListItemsRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -14,4 +14,13 @@
         public async Task<bool> ExistsAsync(int listId, int storyId, CancellationToken cancellationToken = default)
             => await _dbSet.AnyAsync(i => i.ListId == listId && i.StoryId == storyId, cancellationToken);
+
+        public async Task<bool> DeleteByListAndStoryAsync(int listId, int storyId, CancellationToken cancellationToken = default)
+        {
+            var item = await _dbSet.FirstOrDefaultAsync(i => i.ListId == listId && i.StoryId == storyId, cancellationToken);
+            if (item == null) return false;
+            _dbSet.Remove(item);
+            await _context.SaveChangesAsync(cancellationToken);
+            return true;
+        }
     }
 }
Index: ChapterX.Infrastructure/Repositories/ReadingListRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/ReadingListRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/ReadingListRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -15,5 +15,13 @@
         {
             return await _dbSet
+                .Include(r => r.User)
                 .Include(r => r.ReadingListItems)
+                    .ThenInclude(i => i.Story)
+                        .ThenInclude(s => s.Writer)
+                            .ThenInclude(w => w!.User)
+                .Include(r => r.ReadingListItems)
+                    .ThenInclude(i => i.Story)
+                        .ThenInclude(s => s.HasGenres)
+                            .ThenInclude(hg => hg.Genre)
                 .ToListAsync(cancellationToken);
         }
@@ -23,5 +31,13 @@
             return await _dbSet
                 .Where(r => r.UserId == userId)
+                .Include(r => r.User)
                 .Include(r => r.ReadingListItems)
+                    .ThenInclude(i => i.Story)
+                        .ThenInclude(s => s.Writer)
+                            .ThenInclude(w => w!.User)
+                .Include(r => r.ReadingListItems)
+                    .ThenInclude(i => i.Story)
+                        .ThenInclude(s => s.HasGenres)
+                            .ThenInclude(hg => hg.Genre)
                 .ToListAsync(cancellationToken);
         }
Index: ChapterX.Infrastructure/Repositories/StoryRepository.cs
===================================================================
--- ChapterX.Infrastructure/Repositories/StoryRepository.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Infrastructure/Repositories/StoryRepository.cs	(revision 73b69b22fa1e9888b8530a66db4a150efb8f52bc)
@@ -12,4 +12,14 @@
         }
 
+        public override async Task<IEnumerable<Story>> GetAllAsync(CancellationToken cancellationToken = default)
+        {
+            return await _dbSet
+                .Include(s => s.HasGenres)
+                    .ThenInclude(hg => hg.Genre)
+                .Include(s => s.Writer)
+                    .ThenInclude(w => w!.User)
+                .ToListAsync(cancellationToken);
+        }
+
         public async Task<IEnumerable<Story>> GetByWriterIdAsync(int writerId, CancellationToken cancellationToken = default)
         {
