diff --git a/AMessanger.Application/AMessanger.Application.csproj b/AMessanger.Application/AMessanger.Application.csproj
index 4022601..368bf78 100644
--- a/AMessanger.Application/AMessanger.Application.csproj
+++ b/AMessanger.Application/AMessanger.Application.csproj
@@ -8,6 +8,7 @@
+
diff --git a/AMessanger.DataAccess/AMessanger.DataAccess.csproj b/AMessanger.DataAccess/AMessanger.DataAccess.csproj
new file mode 100644
index 0000000..520ff22
--- /dev/null
+++ b/AMessanger.DataAccess/AMessanger.DataAccess.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/AMessanger.DataAccess/Entities/UserEntity.cs b/AMessanger.DataAccess/Entities/UserEntity.cs
new file mode 100644
index 0000000..5247702
--- /dev/null
+++ b/AMessanger.DataAccess/Entities/UserEntity.cs
@@ -0,0 +1,8 @@
+namespace AMessanger.DataAccess.Entities;
+
+public class UserEntity(Guid id, string name, string hashedPassword)
+{
+ public Guid Id { get; set; } = id;
+ public string Name { get; set; } = name;
+ public string HashedPassword { get; set; } = hashedPassword;
+}
\ No newline at end of file
diff --git a/AMessanger.DataAccess/Repositories/UsersRepository.cs b/AMessanger.DataAccess/Repositories/UsersRepository.cs
new file mode 100644
index 0000000..a53a3c3
--- /dev/null
+++ b/AMessanger.DataAccess/Repositories/UsersRepository.cs
@@ -0,0 +1,65 @@
+using AMessanger.Core;
+using AMessanger.Core.Abstraction;
+using AMessanger.Core.DTO;
+using AMessanger.Core.Models;
+using AMessanger.DataAccess.Entities;
+
+namespace AMessanger.DataAccess.Repositories;
+
+public class UsersRepository : IUsersRepository
+{
+ private static readonly List sUsers = [];
+
+ public Task> AddAsync(User user, CancellationToken cancellationToken = default)
+ {
+ sUsers.Add(new(user.Id, user.Name, user.HashedPassword));
+
+ return Task.FromResult(Result.Success(user.Id));
+ }
+
+ public Task> DeleteAsync(Guid id, CancellationToken cancellationToken = default)
+ {
+ var user = sUsers.Find(u => u.Id == id);
+ if (user == null)
+ return Task.FromResult(Result.Error("Not found"));
+
+ sUsers.Remove(user);
+ return Task.FromResult(Result.Success(user.Id));
+ }
+
+ public Task>> GetAllAsync(CancellationToken cancellationToken = default)
+ {
+ return Task.FromResult(
+ Result>.Success(
+ sUsers.Select(u => new User(u.Id, u.Name, u.HashedPassword))
+ )
+ );
+ }
+
+ public Task> GetByIdAsync(Guid id, CancellationToken cancellationToken = default)
+ {
+ var user = sUsers.Find(u => u.Id == id);
+ if (user == null)
+ return Task.FromResult(Result.Error("Not found"));
+
+ return Task.FromResult(
+ Result.Success(new User(user.Id, user.Name, user.HashedPassword))
+ );
+ }
+
+ public Task> GetByUserNameAsync(string userName, CancellationToken cancellationToken = default)
+ {
+ var user = sUsers.Find(u => u.Name.Equals(userName, StringComparison.InvariantCultureIgnoreCase));
+ if (user == null)
+ return Task.FromResult(Result.Error("Not found"));
+
+ return Task.FromResult(
+ Result.Success(new User(user.Id, user.Name, user.HashedPassword))
+ );
+ }
+
+ public Task> UpdateAsync(Guid id, UpdateUserDto dto, CancellationToken cancellationToken = default)
+ {
+ throw new NotImplementedException();
+ }
+}
\ No newline at end of file
diff --git a/AMessanger.slnx b/AMessanger.slnx
index 4ae8611..f229aa9 100644
--- a/AMessanger.slnx
+++ b/AMessanger.slnx
@@ -6,4 +6,5 @@
+