diff --git a/src/Duempelkas.Domain/Duempelkas.Domain.csproj b/src/Duempelkas.Domain/Duempelkas.Domain.csproj
new file mode 100644
index 0000000..6c3a887
--- /dev/null
+++ b/src/Duempelkas.Domain/Duempelkas.Domain.csproj
@@ -0,0 +1,7 @@
+
+
+ net10.0
+ enable
+ enable
+
+
diff --git a/src/Duempelkas.Domain/Entities/Account.cs b/src/Duempelkas.Domain/Entities/Account.cs
new file mode 100644
index 0000000..5c35a11
--- /dev/null
+++ b/src/Duempelkas.Domain/Entities/Account.cs
@@ -0,0 +1,11 @@
+namespace Duempelkas.Domain.Entities;
+
+public class Account
+{
+ public int Id { get; set; }
+ public string Name { get; set; } = string.Empty;
+ public decimal CarryoverBalance { get; set; }
+ public DateTime CreatedUtc { get; set; } = DateTime.UtcNow;
+
+ public ICollection Entries { get; set; } = new List();
+}
diff --git a/src/Duempelkas.Domain/Entities/AccountYear.cs b/src/Duempelkas.Domain/Entities/AccountYear.cs
new file mode 100644
index 0000000..dfd962f
--- /dev/null
+++ b/src/Duempelkas.Domain/Entities/AccountYear.cs
@@ -0,0 +1,13 @@
+namespace Duempelkas.Domain.Entities;
+
+public class AccountYear
+{
+ public int Id { get; set; }
+ public int AccountId { get; set; }
+ public int Year { get; set; }
+ public decimal OpeningBalance { get; set; }
+ public DateTime CreatedUtc { get; set; } = DateTime.UtcNow;
+
+ public Account Account { get; set; } = null!;
+ public ICollection Entries { get; set; } = new List();
+}
diff --git a/src/Duempelkas.Domain/Entities/Entry.cs b/src/Duempelkas.Domain/Entities/Entry.cs
new file mode 100644
index 0000000..32828d1
--- /dev/null
+++ b/src/Duempelkas.Domain/Entities/Entry.cs
@@ -0,0 +1,20 @@
+using Duempelkas.Domain.Enums;
+
+namespace Duempelkas.Domain.Entities;
+
+public class Entry
+{
+ public int Id { get; set; }
+ public int AccountId { get; set; }
+ public string DisplayId { get; set; } = string.Empty;
+ public EntryType Type { get; set; }
+ public DateTime Date { get; set; }
+ public string Title { get; set; } = string.Empty;
+ public decimal Amount { get; set; }
+ public bool IsDeleted { get; set; }
+ public int? TransferLinkId { get; set; }
+ public DateTime CreatedUtc { get; set; } = DateTime.UtcNow;
+
+ public Account Account { get; set; } = null!;
+ public TransferLink? TransferLink { get; set; }
+}
diff --git a/src/Duempelkas.Domain/Entities/TransferLink.cs b/src/Duempelkas.Domain/Entities/TransferLink.cs
new file mode 100644
index 0000000..38bc237
--- /dev/null
+++ b/src/Duempelkas.Domain/Entities/TransferLink.cs
@@ -0,0 +1,13 @@
+namespace Duempelkas.Domain.Entities;
+
+public class TransferLink
+{
+ public int Id { get; set; }
+ public int SourceEntryId { get; set; }
+ public int TargetEntryId { get; set; }
+ public string? Note { get; set; }
+ public DateTime CreatedUtc { get; set; } = DateTime.UtcNow;
+
+ public Entry SourceEntry { get; set; } = null!;
+ public Entry TargetEntry { get; set; } = null!;
+}
diff --git a/src/Duempelkas.Domain/Enums/EntryType.cs b/src/Duempelkas.Domain/Enums/EntryType.cs
new file mode 100644
index 0000000..c7281fe
--- /dev/null
+++ b/src/Duempelkas.Domain/Enums/EntryType.cs
@@ -0,0 +1,7 @@
+namespace Duempelkas.Domain.Enums;
+
+public enum EntryType
+{
+ Income = 0,
+ Expense = 1
+}