Index: ChapterX.API/Controllers/ChaptersController.cs
===================================================================
--- ChapterX.API/Controllers/ChaptersController.cs	(revision 0b502c2664f4d6c64626f3394b4f1dc540e0aa9b)
+++ ChapterX.API/Controllers/ChaptersController.cs	(revision a8f4a2de5e875427a864aef1aa2ca9b7905549cc)
@@ -1,4 +1,5 @@
 using ChapterX.Application.Chapter.Commands;
 using ChapterX.Application.Chapter.Queries;
+using ChapterX.Domain.Repositories;
 using MediatR;
 using Microsoft.AspNetCore.Authorization;
@@ -14,9 +15,11 @@
     {
         private readonly IMediator _mediator;
+        private readonly IChapterRepository _chapterRepository;
         private readonly ILogger<ChaptersController> _logger;
 
-        public ChaptersController(IMediator mediator, ILogger<ChaptersController> logger)
+        public ChaptersController(IMediator mediator, IChapterRepository chapterRepository, ILogger<ChaptersController> logger)
         {
             _mediator = mediator;
+            _chapterRepository = chapterRepository;
             _logger = logger;
         }
@@ -38,4 +41,12 @@
             var response = await _mediator.Send(new GetRequest(id));
             return Ok(response);
+        }
+
+        [HttpPatch("{id:int}/view")]
+        [AllowAnonymous]
+        public async Task<ActionResult> IncrementView(int id)
+        {
+            await _chapterRepository.IncrementViewCountAsync(id);
+            return NoContent();
         }
 
Index: ChapterX.API/Controllers/StoriesController.cs
===================================================================
--- ChapterX.API/Controllers/StoriesController.cs	(revision 0b502c2664f4d6c64626f3394b4f1dc540e0aa9b)
+++ ChapterX.API/Controllers/StoriesController.cs	(revision a8f4a2de5e875427a864aef1aa2ca9b7905549cc)
@@ -29,5 +29,22 @@
             _logger.LogInformation("Fetching all stories");
             var response = await _mediator.Send(request);
-            return Ok(response);
+            var stories = response.Stories.Select(s => new
+            {
+                id = s.Id,
+                userId = s.UserId,
+                title = s.Title,
+                shortDescription = s.ShortDescription,
+                image = s.Image,
+                content = s.Content,
+                matureContent = s.MatureContent,
+                createdAt = s.CreatedAt,
+                updatedAt = s.UpdatedAt,
+                writer = s.Writer == null ? null : new { user = s.Writer.User == null ? null : new { username = s.Writer.User.Username } },
+                hasGenres = s.HasGenres.Select(hg => new { genre = new { name = hg.Genre?.Name ?? "" } }),
+                likes = s.Likes.Select(l => new { userId = l.UserId }),
+                comments = s.Comments.Select(c => new { id = c.Id }),
+                chapters = s.Chapters.Select(c => new { id = c.Id, viewCount = c.ViewCount }),
+            });
+            return Ok(new { stories });
         }
 
@@ -39,5 +56,23 @@
             _logger.LogInformation("Fetching story with ID: {StoryId}", id);
             var response = await _mediator.Send(new GetRequest(id));
-            return Ok(response);
+            if (response.Story == null) return NotFound();
+            var s = response.Story;
+            return Ok(new
+            {
+                id = s.Id,
+                userId = s.UserId,
+                title = s.Title,
+                shortDescription = s.ShortDescription,
+                image = s.Image,
+                content = s.Content,
+                matureContent = s.MatureContent,
+                createdAt = s.CreatedAt,
+                updatedAt = s.UpdatedAt,
+                writer = s.Writer == null ? null : new { user = s.Writer.User == null ? null : new { username = s.Writer.User.Username } },
+                hasGenres = s.HasGenres.Select(hg => new { genre = new { name = hg.Genre?.Name ?? "" } }),
+                likes = s.Likes.Select(l => new { userId = l.UserId }),
+                comments = s.Comments.Select(c => new { id = c.Id }),
+                chapters = s.Chapters.Select(c => new { id = c.Id, viewCount = c.ViewCount }),
+            });
         }
 
@@ -76,5 +111,6 @@
             _logger.LogInformation("Deleting story with ID: {StoryId}", id);
             var callerId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
-            var response = await _mediator.Send(new DeleteRequest(id, callerId));
+            var isAdmin = User.IsInRole("Admin");
+            var response = await _mediator.Send(new DeleteRequest(id, callerId, isAdmin));
             return Ok(response);
         }
