diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index add57be..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-bin/
-obj/
-/packages/
-riderModule.iml
-/_ReSharper.Caches/
\ No newline at end of file
diff --git a/.idea/.idea.W542.GandalfReborn/.idea/codeStyles/codeStyleConfig.xml b/.idea/.idea.W542.GandalfReborn/.idea/codeStyles/codeStyleConfig.xml
deleted file mode 100644
index a55e7a1..0000000
--- a/.idea/.idea.W542.GandalfReborn/.idea/codeStyles/codeStyleConfig.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.W542.GandalfReborn/.idea/dataSources.xml b/.idea/.idea.W542.GandalfReborn/.idea/dataSources.xml
deleted file mode 100644
index c500b12..0000000
--- a/.idea/.idea.W542.GandalfReborn/.idea/dataSources.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- postgresql
- true
- true
- org.postgresql.Driver
- jdbc:postgresql://localhost:5432/gandalf_reborn?user=root&password=root
- $ProjectFileDir$
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.W542.GandalfReborn/.idea/vcs.xml b/.idea/.idea.W542.GandalfReborn/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/.idea.W542.GandalfReborn/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Abstractions/InvokerContext.cs b/Abstractions/InvokerContext.cs
deleted file mode 100644
index 12248b3..0000000
--- a/Abstractions/InvokerContext.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Abstractions;
-
-public class InvokerContext
-{
- public Abstractions.Invoker? Invoker { get; set; }
-}
\ No newline at end of file
diff --git a/Data/Database/Repositories/AuthCodeRepository.cs b/Data/Database/Repositories/AuthCodeRepository.cs
deleted file mode 100644
index 1319d03..0000000
--- a/Data/Database/Repositories/AuthCodeRepository.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Linq.Expressions;
-using LanguageExt.Common;
-using Microsoft.EntityFrameworkCore;
-using W542.GandalfReborn.Data.Entities.Base;
-using W542.GandalfReborn.Data.Entities.Security;
-using W542.GandalfReborn.Data.Entities.Subject;
-using W542.GandalfReborn.Data.Entities.Tenant;
-using W542.GandalfReborn.Data.Entities.Version;
-
-namespace W542.GandalfReborn.Data.Database.Repositories;
-
-public class AuthCodeRepository(ApplicationContext context) : GrRepository(context), IAuthCodeRepository;
-
-public interface IAuthCodeRepository : IGrRepository;
\ No newline at end of file
diff --git a/Data/Entities/Base/IMappingEntity.cs b/Data/Entities/Base/IMappingEntity.cs
deleted file mode 100644
index 247737c..0000000
--- a/Data/Entities/Base/IMappingEntity.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace W542.GandalfReborn.Data.Entities.Base;
-
-public interface IMappingEntity;
\ No newline at end of file
diff --git a/Data/Entities/Security/AuthorityType.cs b/Data/Entities/Security/AuthorityType.cs
deleted file mode 100644
index b635b58..0000000
--- a/Data/Entities/Security/AuthorityType.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace W542.GandalfReborn.Data.Entities.Security;
-
-public enum AuthorityType
-{
- Tenant,
- App
-}
\ No newline at end of file
diff --git a/Data/Entities/Security/TokenType.cs b/Data/Entities/Security/TokenType.cs
deleted file mode 100644
index 6f2285d..0000000
--- a/Data/Entities/Security/TokenType.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace W542.GandalfReborn.Data.Entities.Security;
-
-public enum TokenType
-{
- Application,
- User
-}
\ No newline at end of file
diff --git a/Data/Entities/Subject/SignIn/SignInMethod.cs b/Data/Entities/Subject/SignIn/SignInMethod.cs
deleted file mode 100644
index 851ee44..0000000
--- a/Data/Entities/Subject/SignIn/SignInMethod.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace W542.GandalfReborn.Data.Entities.Subject.SignIn;
-
-public enum SignInMethod
-{
- Simple,
- Google,
- Steam
-}
\ No newline at end of file
diff --git a/Data/Entities/Tenant/OwnerData.cs b/Data/Entities/Tenant/OwnerData.cs
deleted file mode 100644
index 3319af7..0000000
--- a/Data/Entities/Tenant/OwnerData.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using W542.GandalfReborn.Data.Entities.Base;
-
-namespace W542.GandalfReborn.Data.Entities.Tenant;
-
-public abstract class OwnerData : VisibilityData
-{
- public required long OwnerId { get; set; }
-}
\ No newline at end of file
diff --git a/src/dotnet/.gitignore b/src/dotnet/.gitignore
new file mode 100644
index 0000000..d978554
--- /dev/null
+++ b/src/dotnet/.gitignore
@@ -0,0 +1,97 @@
+# Created by https://www.toptal.com/developers/gitignore/api/rider
+# Edit at https://www.toptal.com/developers/gitignore?templates=rider
+
+### Rider ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+# End of https://www.toptal.com/developers/gitignore/api/rider
+
+*.sln.DotSettings.user
+.idea/**/.name
+.idea/**/vcs.xml
+
+*.db
+*.db-wal
+*.db-shm
+**/bin/
+**/obj/
+
+.vs/
+*.log
+*.tlog
\ No newline at end of file
diff --git a/.idea/.idea.W542.GandalfReborn/.idea/.gitignore b/src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/.gitignore
similarity index 88%
rename from .idea/.idea.W542.GandalfReborn/.idea/.gitignore
rename to src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/.gitignore
index 7648847..c98dc88 100644
--- a/.idea/.idea.W542.GandalfReborn/.idea/.gitignore
+++ b/src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/.gitignore
@@ -2,10 +2,10 @@
/shelf/
/workspace.xml
# Rider ignored files
+/contentModel.xml
+/.idea.Suspectus.GandalfReborn.iml
/modules.xml
/projectSettingsUpdater.xml
-/contentModel.xml
-/.idea.W542.GandalfReborn.iml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
diff --git a/.idea/.idea.W542.GandalfReborn/.idea/indexLayout.xml b/src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/indexLayout.xml
similarity index 80%
rename from .idea/.idea.W542.GandalfReborn/.idea/indexLayout.xml
rename to src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/indexLayout.xml
index 32440b5..89ff583 100644
--- a/.idea/.idea.W542.GandalfReborn/.idea/indexLayout.xml
+++ b/src/dotnet/.idea/.idea.Suspectus.GandalfReborn/.idea/indexLayout.xml
@@ -2,8 +2,7 @@
- Docker
- Scripts
+ ../../../gandalf-reborn
diff --git a/Core/Core.csproj b/src/dotnet/Core/Core.csproj
similarity index 100%
rename from Core/Core.csproj
rename to src/dotnet/Core/Core.csproj
diff --git a/LICENSE.md b/src/dotnet/LICENSE.md
similarity index 100%
rename from LICENSE.md
rename to src/dotnet/LICENSE.md
diff --git a/Service/Service.csproj b/src/dotnet/Service/Service.csproj
similarity index 100%
rename from Service/Service.csproj
rename to src/dotnet/Service/Service.csproj
diff --git a/Abstractions/Invoker.cs b/src/dotnet/Suspectus.GandalfReborn.Abstractions/Invoker.cs
similarity index 97%
rename from Abstractions/Invoker.cs
rename to src/dotnet/Suspectus.GandalfReborn.Abstractions/Invoker.cs
index 3760f88..c8f6d61 100644
--- a/Abstractions/Invoker.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Abstractions/Invoker.cs
@@ -2,7 +2,7 @@ using System.Collections.Immutable;
using System.Security.Claims;
using System.Text.RegularExpressions;
-namespace Abstractions;
+namespace Suspectus.GandalfReborn.Abstractions;
public partial class Invoker
{
diff --git a/src/dotnet/Suspectus.GandalfReborn.Abstractions/InvokerContext.cs b/src/dotnet/Suspectus.GandalfReborn.Abstractions/InvokerContext.cs
new file mode 100644
index 0000000..658f59d
--- /dev/null
+++ b/src/dotnet/Suspectus.GandalfReborn.Abstractions/InvokerContext.cs
@@ -0,0 +1,6 @@
+namespace Suspectus.GandalfReborn.Abstractions;
+
+public class InvokerContext
+{
+ public Invoker? Invoker { get; set; }
+}
\ No newline at end of file
diff --git a/Abstractions/Abstractions.csproj b/src/dotnet/Suspectus.GandalfReborn.Abstractions/Suspectus.GandalfReborn.Abstractions.csproj
similarity index 74%
rename from Abstractions/Abstractions.csproj
rename to src/dotnet/Suspectus.GandalfReborn.Abstractions/Suspectus.GandalfReborn.Abstractions.csproj
index 17b910f..9cea2c7 100644
--- a/Abstractions/Abstractions.csproj
+++ b/src/dotnet/Suspectus.GandalfReborn.Abstractions/Suspectus.GandalfReborn.Abstractions.csproj
@@ -4,6 +4,7 @@
net9.0
enable
enable
+ Suspectus.GandalfReborn.Abstractions
diff --git a/Api/Commands/AuthCodeRequestCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/AuthCodeRequestCommand.cs
similarity index 85%
rename from Api/Commands/AuthCodeRequestCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/AuthCodeRequestCommand.cs
index 52b4e9a..ca5c3a9 100644
--- a/Api/Commands/AuthCodeRequestCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/AuthCodeRequestCommand.cs
@@ -1,7 +1,7 @@
using LanguageExt.Common;
-using W542.GandalfReborn.Data.Dto;
+using Suspectus.GandalfReborn.Data.Dto;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public class AuthCodeRequestCommand : IGrCommand>
{
diff --git a/Api/Commands/CreateAuthCodeCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateAuthCodeCommand.cs
similarity index 75%
rename from Api/Commands/CreateAuthCodeCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateAuthCodeCommand.cs
index bf68754..562c251 100644
--- a/Api/Commands/CreateAuthCodeCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateAuthCodeCommand.cs
@@ -1,7 +1,7 @@
using LanguageExt.Common;
-using W542.GandalfReborn.Data.Dto;
+using Suspectus.GandalfReborn.Data.Dto;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public class CreateAuthCodeCommand : IGrCommand>
{
diff --git a/Api/Commands/CreateTokensCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateTokensCommand.cs
similarity index 63%
rename from Api/Commands/CreateTokensCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateTokensCommand.cs
index 6d453c4..775a4dc 100644
--- a/Api/Commands/CreateTokensCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/CreateTokensCommand.cs
@@ -1,7 +1,7 @@
using LanguageExt.Common;
-using W542.GandalfReborn.Data.Dto;
+using Suspectus.GandalfReborn.Data.Dto;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public class CreateTokensCommand : IGrCommand>
{
diff --git a/Api/Commands/HashPasswordCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/HashPasswordCommand.cs
similarity index 76%
rename from Api/Commands/HashPasswordCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/HashPasswordCommand.cs
index fcb9de6..3262406 100644
--- a/Api/Commands/HashPasswordCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/HashPasswordCommand.cs
@@ -1,6 +1,6 @@
using LanguageExt.Common;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public class HashPasswordCommand : IGrCommand>
{
diff --git a/Api/Commands/IGrCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/IGrCommand.cs
similarity index 60%
rename from Api/Commands/IGrCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/IGrCommand.cs
index ba4e4fd..76fa3ca 100644
--- a/Api/Commands/IGrCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/IGrCommand.cs
@@ -1,5 +1,5 @@
using MediatR;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public interface IGrCommand : IRequest;
\ No newline at end of file
diff --git a/Api/Commands/RegisterCommand.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/RegisterCommand.cs
similarity index 71%
rename from Api/Commands/RegisterCommand.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Commands/RegisterCommand.cs
index 6d2bee9..618e991 100644
--- a/Api/Commands/RegisterCommand.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Commands/RegisterCommand.cs
@@ -1,7 +1,7 @@
using LanguageExt.Common;
-using W542.GandalfReborn.Data.Entities.Subject;
+using Suspectus.GandalfReborn.Data.Entities.Subject;
-namespace W542.GandalfReborn.Commands;
+namespace Suspectus.GandalfReborn.Commands;
public class RegisterCommand : IGrCommand>
{
diff --git a/Api/Controllers/AuthController.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Controllers/AuthController.cs
similarity index 92%
rename from Api/Controllers/AuthController.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Controllers/AuthController.cs
index cd2ad0a..64cc4cb 100644
--- a/Api/Controllers/AuthController.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Controllers/AuthController.cs
@@ -1,8 +1,8 @@
using MediatR;
using Microsoft.AspNetCore.Mvc;
-using W542.GandalfReborn.Commands;
+using Suspectus.GandalfReborn.Commands;
-namespace W542.GandalfReborn.Controllers;
+namespace Suspectus.GandalfReborn.Controllers;
[ApiController]
[Route("api/[controller]")]
diff --git a/Api/Extensions/ResultExtentions.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Extensions/ResultExtentions.cs
similarity index 94%
rename from Api/Extensions/ResultExtentions.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Extensions/ResultExtentions.cs
index 6bff2bc..c4d432e 100644
--- a/Api/Extensions/ResultExtentions.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Extensions/ResultExtentions.cs
@@ -1,6 +1,6 @@
using LanguageExt.Common;
-namespace W542.GandalfReborn.Extensions;
+namespace Suspectus.GandalfReborn.Extensions;
public static class ResultExtensions
{
diff --git a/Api/Handlers/Commands/IGrCommandHandler.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/IGrCommandHandler.cs
similarity index 61%
rename from Api/Handlers/Commands/IGrCommandHandler.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/IGrCommandHandler.cs
index 0aa0a56..3856f27 100644
--- a/Api/Handlers/Commands/IGrCommandHandler.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/IGrCommandHandler.cs
@@ -1,6 +1,6 @@
using MediatR;
-using W542.GandalfReborn.Commands;
+using Suspectus.GandalfReborn.Commands;
-namespace W542.GandalfReborn.Handlers.Commands;
+namespace Suspectus.GandalfReborn.Handlers.Commands;
public interface IGrCommandHandler : IRequestHandler where TCommand : IGrCommand;
\ No newline at end of file
diff --git a/Api/Handlers/Commands/RegisterCommandHandler.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/RegisterCommandHandler.cs
similarity index 75%
rename from Api/Handlers/Commands/RegisterCommandHandler.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/RegisterCommandHandler.cs
index a0223e3..8eb1e5f 100644
--- a/Api/Handlers/Commands/RegisterCommandHandler.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Commands/RegisterCommandHandler.cs
@@ -1,15 +1,13 @@
using LanguageExt.Common;
using MediatR;
-using W542.GandalfReborn.Commands;
-using W542.GandalfReborn.Data.Database.Repositories;
-using W542.GandalfReborn.Data.Entities.Base;
-using W542.GandalfReborn.Data.Entities.Subject;
-using W542.GandalfReborn.Data.Entities.Subject.SignIn;
-using W542.GandalfReborn.Data.Entities.Tenant;
-using W542.GandalfReborn.Extensions;
-using W542.GandalfReborn.Handlers.Security;
+using Suspectus.GandalfReborn.Commands;
+using Suspectus.GandalfReborn.Data.Database.Repositories;
+using Suspectus.GandalfReborn.Data.Entities.Base;
+using Suspectus.GandalfReborn.Data.Entities.Subject;
+using Suspectus.GandalfReborn.Data.Entities.Subject.SignIn;
+using Suspectus.GandalfReborn.Extensions;
-namespace W542.GandalfReborn.Handlers.Commands;
+namespace Suspectus.GandalfReborn.Handlers.Commands;
public class RegisterCommandHandler(ISubjectRepository subjectRepository, IMediator mediator) : IGrCommandHandler>
{
diff --git a/Api/Handlers/Security/AuthCodeRequestCommandHandler.cs b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Security/AuthCodeRequestCommandHandler.cs
similarity index 89%
rename from Api/Handlers/Security/AuthCodeRequestCommandHandler.cs
rename to src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Security/AuthCodeRequestCommandHandler.cs
index 1056782..5ab5ec0 100644
--- a/Api/Handlers/Security/AuthCodeRequestCommandHandler.cs
+++ b/src/dotnet/Suspectus.GandalfReborn.Api/Handlers/Security/AuthCodeRequestCommandHandler.cs
@@ -2,14 +2,14 @@ using LanguageExt.Common;
using MediatR;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
-using W542.GandalfReborn.Commands;
-using W542.GandalfReborn.Data.Database.Repositories;
-using W542.GandalfReborn.Data.Dto;
-using W542.GandalfReborn.Data.Entities.Subject.SignIn;
-using W542.GandalfReborn.Extensions;
-using W542.GandalfReborn.Handlers.Commands;
+using Suspectus.GandalfReborn.Commands;
+using Suspectus.GandalfReborn.Data.Database.Repositories;
+using Suspectus.GandalfReborn.Data.Dto;
+using Suspectus.GandalfReborn.Data.Entities.Subject.SignIn;
+using Suspectus.GandalfReborn.Extensions;
+using Suspectus.GandalfReborn.Handlers.Commands;
-namespace W542.GandalfReborn.Handlers.Security;
+namespace Suspectus.GandalfReborn.Handlers.Security;
public class AuthCodeRequestCommandHandler(IPasswordHasher