Index: ChapterX.Application/AISuggestion/Commands/AddHandler.cs
===================================================================
--- ChapterX.Application/AISuggestion/Commands/AddHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/AISuggestion/Commands/AddHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -23,5 +23,5 @@
                 SuggestedText = request.SuggestedText,
                 StoryId = request.StoryId,
-                Accepted = null,
+                Accepted = false,
                 CreatedAt = DateTime.UtcNow
             };
Index: ChapterX.Application/AISuggestion/Commands/UpdateHandler.cs
===================================================================
--- ChapterX.Application/AISuggestion/Commands/UpdateHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/AISuggestion/Commands/UpdateHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -25,5 +25,5 @@
             suggestion.SuggestedText = request.SuggestedText;
             suggestion.Accepted = request.Accepted;
-            if (request.Accepted == true)
+            if (request.Accepted)
                 suggestion.AppliedAt = DateTime.UtcNow;
 
Index: ChapterX.Application/AISuggestion/Commands/UpdateRequest.cs
===================================================================
--- ChapterX.Application/AISuggestion/Commands/UpdateRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/AISuggestion/Commands/UpdateRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -7,5 +7,5 @@
         string OriginalText,
         string SuggestedText,
-        bool? Accepted
+        bool Accepted
     ) : IRequest<UpdateResponse>;
 }
Index: ChapterX.Application/AISuggestion/Queries/GetByChapterHandler.cs
===================================================================
--- ChapterX.Application/AISuggestion/Queries/GetByChapterHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,24 +1,0 @@
-using ChapterX.Domain.Repositories;
-using MediatR;
-using Microsoft.Extensions.Logging;
-
-namespace ChapterX.Application.AISuggestion.Queries
-{
-    public class GetByChapterHandler : IRequestHandler<GetByChapterRequest, GetByChapterResponse>
-    {
-        private readonly IAISuggestionRepository _aiSuggestionRepository;
-        private readonly ILogger<GetByChapterHandler> _logger;
-
-        public GetByChapterHandler(IAISuggestionRepository aiSuggestionRepository, ILogger<GetByChapterHandler> logger)
-        {
-            _aiSuggestionRepository = aiSuggestionRepository;
-            _logger = logger;
-        }
-
-        public async Task<GetByChapterResponse> Handle(GetByChapterRequest request, CancellationToken cancellationToken)
-        {
-            var suggestions = await _aiSuggestionRepository.GetByChapterIdAsync(request.ChapterId, cancellationToken);
-            return new GetByChapterResponse(suggestions);
-        }
-    }
-}
Index: ChapterX.Application/AISuggestion/Queries/GetByChapterRequest.cs
===================================================================
--- ChapterX.Application/AISuggestion/Queries/GetByChapterRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,6 +1,0 @@
-using MediatR;
-
-namespace ChapterX.Application.AISuggestion.Queries
-{
-    public record GetByChapterRequest(int ChapterId) : IRequest<GetByChapterResponse>;
-}
Index: ChapterX.Application/AISuggestion/Queries/GetByChapterResponse.cs
===================================================================
--- ChapterX.Application/AISuggestion/Queries/GetByChapterResponse.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,4 +1,0 @@
-namespace ChapterX.Application.AISuggestion.Queries
-{
-    public record GetByChapterResponse(IEnumerable<Domain.Entities.AISuggestion> AISuggestions);
-}
Index: ChapterX.Application/Abstractions/IApplicationDbContext.cs
===================================================================
--- ChapterX.Application/Abstractions/IApplicationDbContext.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Abstractions/IApplicationDbContext.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -1,4 +1,3 @@
 using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Storage;
 using UserEntity = ChapterX.Domain.Entities.User;
 using StoryEntity = ChapterX.Domain.Entities.Story;
@@ -41,5 +40,4 @@
         DbSet<NeedApprovalEntity> NeedApprovals { get; }
         Task<int> SaveChangesAsync(CancellationToken cancellationToken = default);
-        Task<IDbContextTransaction> BeginTransactionAsync(CancellationToken cancellationToken = default);
     }
 }
Index: ChapterX.Application/Auth/IJwtTokenService.cs
===================================================================
--- ChapterX.Application/Auth/IJwtTokenService.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,7 +1,0 @@
-namespace ChapterX.Application.Auth
-{
-    public interface IJwtTokenService
-    {
-        string GenerateToken(ChapterX.Domain.Entities.User user);
-    }
-}
Index: ChapterX.Application/Auth/LoginHandler.cs
===================================================================
--- ChapterX.Application/Auth/LoginHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,34 +1,0 @@
-using ChapterX.Domain.Repositories;
-using MediatR;
-
-namespace ChapterX.Application.Auth
-{
-    public class LoginHandler : IRequestHandler<LoginRequest, LoginResponse>
-    {
-        private readonly IUserRepository _userRepository;
-        private readonly IJwtTokenService _jwtTokenService;
-
-        public LoginHandler(IUserRepository userRepository, IJwtTokenService jwtTokenService)
-        {
-            _userRepository = userRepository;
-            _jwtTokenService = jwtTokenService;
-        }
-
-        public async Task<LoginResponse> Handle(LoginRequest request, CancellationToken cancellationToken)
-        {
-            var user = await _userRepository.GetByEmailAsync(request.Email, cancellationToken)
-                ?? throw new UnauthorizedAccessException("No account found with this email. Please register first.");
-
-            if (!BCrypt.Net.BCrypt.Verify(request.Password, user.Password))
-                throw new UnauthorizedAccessException("Incorrect password. Please try again.");
-
-            var token = _jwtTokenService.GenerateToken(user);
-
-            var role = user.Admin != null ? "admin"
-                : user.Writer != null ? "writer"
-                : "regular";
-
-            return new LoginResponse(token, user.Id, user.Username, user.Email, user.Name, user.Surname, role);
-        }
-    }
-}
Index: ChapterX.Application/Auth/LoginRequest.cs
===================================================================
--- ChapterX.Application/Auth/LoginRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,10 +1,0 @@
-using MediatR;
-using System.ComponentModel.DataAnnotations;
-
-namespace ChapterX.Application.Auth
-{
-    public record LoginRequest(
-        [Required][EmailAddress][MaxLength(200)] string Email,
-        [Required][MaxLength(128)] string Password
-    ) : IRequest<LoginResponse>;
-}
Index: ChapterX.Application/Auth/LoginResponse.cs
===================================================================
--- ChapterX.Application/Auth/LoginResponse.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,4 +1,0 @@
-namespace ChapterX.Application.Auth
-{
-    public record LoginResponse(string Token, int UserId, string Username, string Email, string Name, string Surname, string Role);
-}
Index: ChapterX.Application/Auth/RegisterHandler.cs
===================================================================
--- ChapterX.Application/Auth/RegisterHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,55 +1,0 @@
-using ChapterX.Application.Abstractions;
-using ChapterX.Domain.Repositories;
-using MediatR;
-
-namespace ChapterX.Application.Auth
-{
-    public class RegisterHandler : IRequestHandler<RegisterRequest, RegisterResponse>
-    {
-        private readonly IUserRepository _userRepository;
-        private readonly IWriterRepository _writerRepository;
-        private readonly IApplicationDbContext _context;
-
-        public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository, IApplicationDbContext context)
-        {
-            _userRepository = userRepository;
-            _writerRepository = writerRepository;
-            _context = context;
-        }
-
-        public async Task<RegisterResponse> Handle(RegisterRequest request, CancellationToken cancellationToken)
-        {
-            var existing = await _userRepository.GetByEmailAsync(request.Email, cancellationToken);
-            if (existing != null)
-                throw new InvalidOperationException("Email already in use.");
-
-            await using var transaction = await _context.BeginTransactionAsync(cancellationToken);
-            try
-            {
-                var user = new Domain.Entities.User
-                {
-                    Username = request.Username,
-                    Email = request.Email,
-                    Name = request.Name,
-                    Surname = request.Surname,
-                    Password = BCrypt.Net.BCrypt.HashPassword(request.Password),
-                    CreatedAt = DateTime.UtcNow,
-                    UpdatedAt = DateTime.UtcNow
-                };
-
-                await _userRepository.AddAsync(user, cancellationToken);
-
-                var writer = new Domain.Entities.Writer { Id = user.Id };
-                await _writerRepository.AddAsync(writer, cancellationToken);
-
-                await transaction.CommitAsync(cancellationToken);
-                return new RegisterResponse(user.Id, user.Username, user.Email);
-            }
-            catch
-            {
-                await transaction.RollbackAsync(cancellationToken);
-                throw;
-            }
-        }
-    }
-}
Index: ChapterX.Application/Auth/RegisterRequest.cs
===================================================================
--- ChapterX.Application/Auth/RegisterRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,13 +1,0 @@
-using MediatR;
-using System.ComponentModel.DataAnnotations;
-
-namespace ChapterX.Application.Auth
-{
-    public record RegisterRequest(
-        [Required][MaxLength(50)] string Username,
-        [Required][EmailAddress][MaxLength(200)] string Email,
-        [Required][MaxLength(100)] string Name,
-        [Required][MaxLength(100)] string Surname,
-        [Required][MinLength(8)][MaxLength(128)] string Password
-    ) : IRequest<RegisterResponse>;
-}
Index: ChapterX.Application/Auth/RegisterResponse.cs
===================================================================
--- ChapterX.Application/Auth/RegisterResponse.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ 	(revision )
@@ -1,4 +1,0 @@
-namespace ChapterX.Application.Auth
-{
-    public record RegisterResponse(int UserId, string Username, string Email);
-}
Index: ChapterX.Application/Chapter/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Chapter/Commands/AddRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Chapter/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -1,12 +1,11 @@
 using MediatR;
-using System.ComponentModel.DataAnnotations;
 
 namespace ChapterX.Application.Chapter.Commands
 {
     public record AddRequest(
-        [Range(1, int.MaxValue)] int Number,
-        [Required][MaxLength(200)] string Name,
-        [Required][MaxLength(300)] string Title,
-        [Required] string Content,
+        int Number,
+        string Name,
+        string Title,
+        string Content,
         int StoryId
     ) : IRequest<AddResponse>;
Index: ChapterX.Application/Chapter/Commands/DeleteHandler.cs
===================================================================
--- ChapterX.Application/Chapter/Commands/DeleteHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Chapter/Commands/DeleteHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -18,10 +18,7 @@
         public async Task<DeleteResponse> Handle(DeleteRequest request, CancellationToken cancellationToken)
         {
-            var chapter = await _chapterRepository.GetByIdWithStoryAsync(request.Id, cancellationToken);
+            var chapter = await _chapterRepository.GetByIdAsync(request.Id, cancellationToken);
             if (chapter is null)
                 return new DeleteResponse(false);
-
-            if (chapter.Story.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this chapter.");
 
             await _chapterRepository.DeleteAsync(chapter, cancellationToken);
Index: ChapterX.Application/Chapter/Commands/DeleteRequest.cs
===================================================================
--- ChapterX.Application/Chapter/Commands/DeleteRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Chapter/Commands/DeleteRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Chapter.Commands
 {
-    public record DeleteRequest(int Id, int CallerId) : IRequest<DeleteResponse>;
+    public record DeleteRequest(int Id) : IRequest<DeleteResponse>;
 }
Index: ChapterX.Application/Chapter/Commands/UpdateHandler.cs
===================================================================
--- ChapterX.Application/Chapter/Commands/UpdateHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Chapter/Commands/UpdateHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -18,10 +18,7 @@
         public async Task<UpdateResponse> Handle(UpdateRequest request, CancellationToken cancellationToken)
         {
-            var chapter = await _chapterRepository.GetByIdWithStoryAsync(request.Id, cancellationToken);
+            var chapter = await _chapterRepository.GetByIdAsync(request.Id, cancellationToken);
             if (chapter is null)
                 return new UpdateResponse(false);
-
-            if (chapter.Story.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this chapter.");
 
             chapter.Number = request.Number;
Index: ChapterX.Application/Chapter/Commands/UpdateRequest.cs
===================================================================
--- ChapterX.Application/Chapter/Commands/UpdateRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Chapter/Commands/UpdateRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -9,6 +9,5 @@
         string Title,
         string Content,
-        int? WordCount,
-        int CallerId = 0
+        int? WordCount
     ) : IRequest<UpdateResponse>;
 }
Index: ChapterX.Application/ChapterX.Application.csproj
===================================================================
--- ChapterX.Application/ChapterX.Application.csproj	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/ChapterX.Application.csproj	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -8,5 +8,4 @@
 
   <ItemGroup>
-    <PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
     <PackageReference Include="MediatR" Version="14.1.0" />
     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.0" />
Index: ChapterX.Application/Comment/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/AddRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Comment/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -1,11 +1,6 @@
 using MediatR;
-using System.ComponentModel.DataAnnotations;
 
 namespace ChapterX.Application.Comment.Commands
 {
-    public record AddRequest(
-        [Required][MaxLength(2000)] string Content,
-        int UserId,
-        int StoryId
-    ) : IRequest<AddResponse>;
+    public record AddRequest(string Content, int UserId, int StoryId) : IRequest<AddResponse>;
 }
Index: ChapterX.Application/Comment/Commands/DeleteHandler.cs
===================================================================
--- ChapterX.Application/Comment/Commands/DeleteHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Comment/Commands/DeleteHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -22,7 +22,4 @@
                 return new DeleteResponse(false);
 
-            if (comment.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this comment.");
-
             await _commentRepository.DeleteAsync(comment, cancellationToken);
 
Index: ChapterX.Application/Comment/Commands/DeleteRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/DeleteRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Comment/Commands/DeleteRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Comment.Commands
 {
-    public record DeleteRequest(int Id, int CallerId) : IRequest<DeleteResponse>;
+    public record DeleteRequest(int Id) : IRequest<DeleteResponse>;
 }
Index: ChapterX.Application/Comment/Commands/UpdateHandler.cs
===================================================================
--- ChapterX.Application/Comment/Commands/UpdateHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Comment/Commands/UpdateHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -22,7 +22,4 @@
                 return new UpdateResponse(false);
 
-            if (comment.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this comment.");
-
             comment.Content = request.Content;
             comment.UpdatedAt = DateTime.UtcNow;
Index: ChapterX.Application/Comment/Commands/UpdateRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/UpdateRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Comment/Commands/UpdateRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Comment.Commands
 {
-    public record UpdateRequest(int Id, string Content, int CallerId = 0) : IRequest<UpdateResponse>;
+    public record UpdateRequest(int Id, string Content) : IRequest<UpdateResponse>;
 }
Index: ChapterX.Application/Likes/Commands/AddHandler.cs
===================================================================
--- ChapterX.Application/Likes/Commands/AddHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Likes/Commands/AddHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -21,5 +21,5 @@
             {
                 UserId = request.UserId,
-                StoryId = request.StoryId,
+                StoryId = request.ChapterId,
                 CreatedAt = DateTime.UtcNow
             };
Index: ChapterX.Application/Likes/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Likes/Commands/AddRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Likes/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Likes.Commands
 {
-    public record AddRequest(int UserId, int StoryId) : IRequest<AddResponse>;
+    public record AddRequest(int UserId, int ChapterId) : IRequest<AddResponse>;
 }
Index: ChapterX.Application/Notification/Commands/AddHandler.cs
===================================================================
--- ChapterX.Application/Notification/Commands/AddHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Notification/Commands/AddHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -22,8 +22,5 @@
                 Content = request.Content,
                 IsRead = false,
-                CreatedAt = DateTime.UtcNow,
-                RecipientUserId = request.RecipientUserId,
-                Type = request.Type,
-                Link = request.Link,
+                CreatedAt = DateTime.UtcNow
             };
 
Index: ChapterX.Application/Notification/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Notification/Commands/AddRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Notification/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Notification.Commands
 {
-    public record AddRequest(string Content, int? RecipientUserId = null, string? Type = null, string? Link = null) : IRequest<AddResponse>;
+    public record AddRequest(string Content) : IRequest<AddResponse>;
 }
Index: ChapterX.Application/ReadingListItems/Commands/AddHandler.cs
===================================================================
--- ChapterX.Application/ReadingListItems/Commands/AddHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/ReadingListItems/Commands/AddHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -18,8 +18,4 @@
         public async Task<AddResponse> Handle(AddRequest request, CancellationToken cancellationToken)
         {
-            var exists = await _readingListItemsRepository.ExistsAsync(request.ReadingListId, request.StoryId, cancellationToken);
-            if (exists)
-                throw new InvalidOperationException("Story is already in this reading list.");
-
             var readingListItems = new Domain.Entities.ReadingListItems
             {
Index: ChapterX.Application/Story/Commands/AddHandler.cs
===================================================================
--- ChapterX.Application/Story/Commands/AddHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/AddHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -1,3 +1,2 @@
-using ChapterX.Application.Abstractions;
 using ChapterX.Domain.Repositories;
 using MediatR;
@@ -9,15 +8,9 @@
     {
         private readonly IStoryRepository _storyRepository;
-        private readonly IGenreRepository _genreRepository;
-        private readonly IHasGenreRepository _hasGenreRepository;
-        private readonly IApplicationDbContext _context;
         private readonly ILogger<AddHandler> _logger;
 
-        public AddHandler(IStoryRepository storyRepository, IGenreRepository genreRepository, IHasGenreRepository hasGenreRepository, IApplicationDbContext context, ILogger<AddHandler> logger)
+        public AddHandler(IStoryRepository storyRepository, ILogger<AddHandler> logger)
         {
             _storyRepository = storyRepository;
-            _genreRepository = genreRepository;
-            _hasGenreRepository = hasGenreRepository;
-            _context = context;
             _logger = logger;
         }
@@ -25,36 +18,18 @@
         public async Task<AddResponse> Handle(AddRequest request, CancellationToken cancellationToken)
         {
-            await using var transaction = await _context.BeginTransactionAsync(cancellationToken);
-            try
+            var story = new Domain.Entities.Story
             {
-                var story = new Domain.Entities.Story
-                {
-                    MatureContent = request.MatureContent,
-                    Title = request.Title,
-                    ShortDescription = request.ShortDescription,
-                    Image = request.Image,
-                    Content = request.Content,
-                    UserId = request.UserId,
-                    CreatedAt = DateTime.UtcNow,
-                    UpdatedAt = DateTime.UtcNow
-                };
+                MatureContent = request.MatureContent,
+                ShortDescription = request.ShortDescription,
+                Image = request.Image,
+                Content = request.Content,
+                UserId = request.UserId,
+                CreatedAt = DateTime.UtcNow,
+                UpdatedAt = DateTime.UtcNow
+            };
 
-                await _storyRepository.AddAsync(story, cancellationToken);
+            await _storyRepository.AddAsync(story, cancellationToken);
 
-                foreach (var genreName in request.Genres ?? [])
-                {
-                    var genre = await _genreRepository.GetByNameAsync(genreName, cancellationToken);
-                    if (genre == null) continue;
-                    await _hasGenreRepository.AddAsync(new Domain.Entities.HasGenre { StoryId = story.Id, GenreId = genre.Id }, cancellationToken);
-                }
-
-                await transaction.CommitAsync(cancellationToken);
-                return new AddResponse(story.Id);
-            }
-            catch
-            {
-                await transaction.RollbackAsync(cancellationToken);
-                throw;
-            }
+            return new AddResponse(story.Id);
         }
     }
Index: ChapterX.Application/Story/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Story/Commands/AddRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -1,15 +1,6 @@
 using MediatR;
-using System.ComponentModel.DataAnnotations;
 
 namespace ChapterX.Application.Story.Commands
 {
-    public record AddRequest(
-        bool MatureContent,
-        [Required][MaxLength(200)] string Title,
-        [Required][MaxLength(500)] string ShortDescription,
-        [MaxLength(2048)] string? Image,
-        [Required] string Content,
-        int UserId,
-        List<string> Genres
-    ) : IRequest<AddResponse>;
+    public record AddRequest(bool MatureContent, string ShortDescription, string? Image, string Content, int UserId) : IRequest<AddResponse>;
 }
Index: ChapterX.Application/Story/Commands/DeleteHandler.cs
===================================================================
--- ChapterX.Application/Story/Commands/DeleteHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/DeleteHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -22,7 +22,4 @@
                 return new DeleteResponse(false);
 
-            if (!request.IsAdmin && story.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this story.");
-
             await _storyRepository.DeleteAsync(story, cancellationToken);
 
Index: ChapterX.Application/Story/Commands/DeleteRequest.cs
===================================================================
--- ChapterX.Application/Story/Commands/DeleteRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/DeleteRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Story.Commands
 {
-    public record DeleteRequest(int Id, int CallerId, bool IsAdmin = false) : IRequest<DeleteResponse>;
+    public record DeleteRequest(int Id) : IRequest<DeleteResponse>;
 }
Index: ChapterX.Application/Story/Commands/UpdateHandler.cs
===================================================================
--- ChapterX.Application/Story/Commands/UpdateHandler.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/UpdateHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -22,9 +22,5 @@
                 return new UpdateResponse(false);
 
-            if (story.UserId != request.CallerId)
-                throw new UnauthorizedAccessException("You do not own this story.");
-
             story.MatureContent = request.MatureContent;
-            story.Title = request.Title;
             story.ShortDescription = request.ShortDescription;
             story.Image = request.Image;
Index: ChapterX.Application/Story/Commands/UpdateRequest.cs
===================================================================
--- ChapterX.Application/Story/Commands/UpdateRequest.cs	(revision a6e33d1f34c0dbbfff38bfb2c73eea32abfe7cff)
+++ ChapterX.Application/Story/Commands/UpdateRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Story.Commands
 {
-    public record UpdateRequest(int Id, bool MatureContent, string Title, string ShortDescription, string? Image, string Content, int CallerId = 0) : IRequest<UpdateResponse>;
+    public record UpdateRequest(int Id, bool MatureContent, string ShortDescription, string? Image, string Content) : IRequest<UpdateResponse>;
 }
