Index: ChapterX.Application/Auth/RegisterHandler.cs
===================================================================
--- ChapterX.Application/Auth/RegisterHandler.cs	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ ChapterX.Application/Auth/RegisterHandler.cs	(revision 0b502c2664f4d6c64626f3394b4f1dc540e0aa9b)
@@ -1,2 +1,3 @@
+using ChapterX.Application.Abstractions;
 using ChapterX.Domain.Repositories;
 using MediatR;
@@ -8,9 +9,11 @@
         private readonly IUserRepository _userRepository;
         private readonly IWriterRepository _writerRepository;
+        private readonly IApplicationDbContext _context;
 
-        public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository)
+        public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository, IApplicationDbContext context)
         {
             _userRepository = userRepository;
             _writerRepository = writerRepository;
+            _context = context;
         }
 
@@ -21,21 +24,31 @@
                 throw new InvalidOperationException("Email already in use.");
 
-            var user = new Domain.Entities.User
+            await using var transaction = await _context.BeginTransactionAsync(cancellationToken);
+            try
             {
-                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
-            };
+                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);
+                await _userRepository.AddAsync(user, cancellationToken);
 
-            var writer = new Domain.Entities.Writer { Id = user.Id };
-            await _writerRepository.AddAsync(writer, cancellationToken);
+                var writer = new Domain.Entities.Writer { Id = user.Id };
+                await _writerRepository.AddAsync(writer, cancellationToken);
 
-            return new RegisterResponse(user.Id, user.Username, user.Email);
+                await transaction.CommitAsync(cancellationToken);
+                return new RegisterResponse(user.Id, user.Username, user.Email);
+            }
+            catch
+            {
+                await transaction.RollbackAsync(cancellationToken);
+                throw;
+            }
         }
     }
