Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
6a9a9b7
chore(persistence): add ef core postgres dependencies
666mxvbee Aug 29, 2026
0887c0b
refactor(domain): simplify validation and remove money ceiling
666mxvbee Sep 2, 2026
2d15b97
feat(domain): add users and canonical friendships
666mxvbee Sep 2, 2026
2bd666d
feat(security): add pin hashing and injectable clock
666mxvbee Sep 2, 2026
8d1c777
feat(accounts): add owners hashes and balance versions
666mxvbee Sep 2, 2026
b5c6bf3
feat(sessions): add expiry revocation and account identity
666mxvbee Sep 4, 2026
56927ed
feat(domain): add banking transactions and immutable history
666mxvbee Sep 4, 2026
efb0eb1
test(domain): verify banking flows and document stage changes
666mxvbee Sep 4, 2026
c84d2eb
style: remove inline code comments
666mxvbee Sep 4, 2026
218a00c
test: separate projects by architectural layer
666mxvbee Sep 4, 2026
a63f570
chore(test): lock new test project dependencies
666mxvbee Sep 4, 2026
41e2f71
fix(domain): enforce transaction shape and exact commission math
666mxvbee Sep 6, 2026
f2a0689
feat(persistence): configure atm database context
666mxvbee Sep 6, 2026
4ce7ffc
chore: configure solution and projects
666mxvbee Oct 8, 2026
50003ea
fix: changed dependencies in .csprojs
666mxvbee Oct 8, 2026
f659ec6
feat: add ValueObjects for Account model
666mxvbee Oct 11, 2026
6304d91
feat: add ResultTypes for Account operations
666mxvbee Oct 11, 2026
24a7fc6
feat: add Account model
666mxvbee Oct 11, 2026
409045d
feat: impl AdminSession.cs
666mxvbee Oct 12, 2026
f404655
feat: impl UserSession.cs
666mxvbee Oct 12, 2026
5a7cf58
fix: formatted property places
666mxvbee Oct 12, 2026
3906e02
fix: init BankOperations
666mxvbee Oct 12, 2026
714010d
feat: create Sessions contracts
666mxvbee Oct 12, 2026
18ae834
feat: init ISessionService.cs interface
666mxvbee Oct 12, 2026
5e6ba8e
fix: add static to class
666mxvbee Oct 12, 2026
de2af2c
fix: init AccountDto.cs
666mxvbee Oct 12, 2026
768ee2d
feat: init BalanceDto.cs
666mxvbee Oct 14, 2026
1864515
feat: add contracts for IAccountService.cs
666mxvbee Oct 14, 2026
6c7e9a2
feat: implemented interface of AccountService
666mxvbee Oct 14, 2026
c16311a
style: renamed the Application.Abstractions.csproj
666mxvbee Oct 14, 2026
ddaa66c
fix: removed creatin account from AccountService into AdminService
666mxvbee Oct 15, 2026
cabe675
fix: CreateAccount now in IAdminService.cs
666mxvbee Oct 15, 2026
ea6224d
feat: init GetOperationHistory.cs
666mxvbee Oct 15, 2026
cd28a0b
feat: add interface of operationHistory repository
666mxvbee Oct 15, 2026
9025659
feat: add Update method in AccountRepository
666mxvbee Oct 15, 2026
9aa32a4
style: renamed the methods with async
666mxvbee Oct 15, 2026
72cf460
feat: add facade for repositories
666mxvbee Oct 15, 2026
3ea281d
style: renamed a few methods in repositories
666mxvbee Oct 15, 2026
c81721a
fix: GetOperationHistory returns a list of operations now
666mxvbee Oct 15, 2026
f724c33
feat: now account creates in AdminService
666mxvbee Oct 15, 2026
024370c
feat: add directory
666mxvbee Oct 15, 2026
7cd75fb
feat: impl the blueprint of AdminService.cs to continue it later
666mxvbee Oct 15, 2026
251c01a
feat: add nullable reference in find methods
666mxvbee Oct 15, 2026
00bbbf8
fix: now users would be able to create one account/session each time …
666mxvbee Oct 15, 2026
6b7a545
fix: now users would be able to create one account/session each time …
666mxvbee Oct 15, 2026
02f9051
feat: separate acccount creation and rehydration
666mxvbee Oct 15, 2026
a8d94d7
feat: add mapping to dto (account)
666mxvbee Oct 15, 2026
b3967ad
feat: wrote AdminService with the method of creating an account
666mxvbee Oct 15, 2026
64bbcfc
fix: delete dependency
666mxvbee Oct 15, 2026
59b97ae
feat: add SystemPassword for IOptions
666mxvbee Oct 15, 2026
1671a53
feat: implemented CreateAdminSession in SessionService.cs
666mxvbee Oct 15, 2026
823ad3e
feat: add mappers for Sessions
666mxvbee Oct 15, 2026
35ed6bc
feat: add dependencies for IOption
666mxvbee Oct 15, 2026
7c79b87
fix: deleted domain models from contracts
666mxvbee Oct 15, 2026
f6852dc
feat: impl SessionService.cs
666mxvbee Oct 17, 2026
38b6558
feat: add interfacecs of transactions to use them in services
666mxvbee Oct 17, 2026
83dbb3b
fix: changed the contracts of OperationHistoryDto.cs now id's are long
666mxvbee Oct 18, 2026
186bf1c
fix: removed OperationType.cs in dto
666mxvbee Oct 18, 2026
a5c8a07
style: fix the naming of method
666mxvbee Oct 18, 2026
4ee6edc
feat: balance mapping to dto
666mxvbee Oct 18, 2026
3c94c69
fix: now money is a public property
666mxvbee Oct 18, 2026
afc0bf9
feat: separate operation creation and rehydration
666mxvbee Oct 18, 2026
57b94b7
feat: add OperationHistory mapper
666mxvbee Oct 18, 2026
2ae2353
fix: deleted nullable reference in find method
666mxvbee Oct 18, 2026
b1448ee
feat: add AccountService.cs
666mxvbee Oct 18, 2026
4aa1546
fix: allow default IDs for new accounts and operations
666mxvbee Oct 18, 2026
97652e8
fix: handle withdrawal failure before persisting changes
666mxvbee Oct 18, 2026
6065d68
fix: reject non-positive deposit and withdrawal amounts
666mxvbee Oct 18, 2026
488eb91
fix: use deposit request type for balance deposit
666mxvbee Oct 18, 2026
50280af
style: renamed Application.Abstractions
666mxvbee Oct 18, 2026
fe62447
fix: renamed the .csproj
666mxvbee Oct 19, 2026
cb42df9
feat: add inmemory AccountRepository.cs with sync methods:)
666mxvbee Oct 19, 2026
306e64c
feat: add inmemory SessionRepositories with concurrent dictionary
666mxvbee Oct 19, 2026
ee07349
fix: add sealed to repositories
666mxvbee Oct 19, 2026
61c70bf
feat: add inmemory repository for operation history
666mxvbee Oct 19, 2026
bf94496
feat: implemented PersistenceContext in infrastructure
666mxvbee Oct 19, 2026
9e8a2e1
feat: add services and repositories into DI
666mxvbee Oct 19, 2026
ced474a
fix: changed the root namespace of Atm.Application.csproj
666mxvbee Oct 19, 2026
056f253
fix: alphabetely ordered usings
666mxvbee Oct 19, 2026
bf33d52
chore: order usings in services
666mxvbee Oct 19, 2026
fe5d5ac
chore: update central package versions
666mxvbee Oct 19, 2026
fb5c87c
feat: add Microsoft.AspnetCore into Presentation layer
666mxvbee Oct 19, 2026
86174de
feat: add AccountController with CreatingAccount method
666mxvbee Oct 19, 2026
d039775
style: add slash before api
666mxvbee Oct 19, 2026
d2eaa89
feat: add dependencies
666mxvbee Oct 19, 2026
b7bbba3
feat: add http requests models for SessionController.cs
666mxvbee Oct 19, 2026
b9fc0fa
feat: add http requests models for AccountController.cs
666mxvbee Oct 19, 2026
c124f57
feat: implemented SessionController.cs
666mxvbee Oct 19, 2026
c540067
chore: renamed the AdminController.cs
666mxvbee Oct 19, 2026
a213576
chore: renamed the route of SessionController.cs
666mxvbee Oct 19, 2026
f3a0a84
feat: add http request models for AccountController.cs
666mxvbee Oct 19, 2026
3c6b8dd
feat: implemented AccountController.cs
666mxvbee Oct 19, 2026
739c694
feat: add HttpControllers into DI
666mxvbee Oct 19, 2026
3c462e9
feat: app entry point of the project
666mxvbee Oct 19, 2026
aa7763d
fix: formatting whitespaces
666mxvbee Oct 19, 2026
eb580c3
chore: deleted solution folder of tests
666mxvbee Oct 19, 2026
f559f41
fix: upgrade Microsoft.OpenApi to patched version
666mxvbee Oct 19, 2026
0d43e96
feat: add validation for deposit so it won't throw 500:)
666mxvbee Oct 19, 2026
c05d261
feat: GetOperationHistory now returns Collection of operations
666mxvbee Oct 19, 2026
164ec44
fix: refactor copy in method
666mxvbee Oct 19, 2026
6d36403
fix: add singleton inmemory repository instead of scoped
666mxvbee Oct 19, 2026
f2f97b8
fix: add Options for system password
666mxvbee Oct 19, 2026
ed4f086
fix: add Options for system password
666mxvbee Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
tab_width = 4
indent_size = 4
end_of_line = lf
max_line_length = 120

dotnet_diagnostic.ide0001.severity = warning
dotnet_diagnostic.ide0002.severity = warning
Expand Down Expand Up @@ -118,7 +119,7 @@ dotnet_diagnostic.ide0035.severity = warning

# IDE0036
dotnet_diagnostic.ide0036.severity = warning
csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async
csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, required, unsafe, volatile, async

# IDE0037
dotnet_diagnostic.ide0037.severity = warning
Expand Down Expand Up @@ -576,7 +577,7 @@ dotnet_style_allow_statement_immediately_after_block_experimental = true:silent
csharp_style_prefer_utf8_string_literals = true:suggestion

# ReSharper
resharper_csharp_empty_block_style = together_same_line
resharper_csharp_empty_block_style = together

csharp_wrap_arguments_style = chop_if_long
csharp_wrap_chained_method_calls = chop_if_long
Expand All @@ -588,6 +589,8 @@ resharper_csharp_wrap_parameters_style = chop_if_long
dotnet_diagnostic.CS1591.severity = none
dotnet_diagnostic.CA1062.severity = none
dotnet_diagnostic.CA1034.severity = none
dotnet_diagnostic.CS1574.severity = none
dotnet_diagnostic.CS1573.severity = none

dotnet_diagnostic.SA1101.severity = none
dotnet_diagnostic.SA1503.severity = none
Expand All @@ -601,5 +604,7 @@ dotnet_diagnostic.SA1604.severity = none
dotnet_diagnostic.SA1629.severity = none
dotnet_diagnostic.SA1602.severity = none
dotnet_diagnostic.SA1615.severity = none
dotnet_diagnostic.SA1618.severity = none
dotnet_diagnostic.SA1206.severity = none

resharper_braces_redundant = false
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.cs text eol=lf
*.slnx text eol=lf
*.csproj text eol=lf
*.props text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.json text eol=lf
22 changes: 22 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/sh

FORBIDDEN_FILES="Directory\.Build\.props \.github.* \.gitattributes"
STAGED_FILES=$(git --no-pager diff --cached --name-only)

error="false"

for file in $FORBIDDEN_FILES; do
if echo "$STAGED_FILES" | grep -q "^$file$"; then
echo "Commit blocked: changes to $file are not allowed."
error="true"
else
echo file "$file" OK
fi
done

if [ "$error" = "true" ]
then
exit 1
else
exit 0
fi
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,4 @@ MigrationBackup/
.ionide/

# Fody - auto-generated XML schema
FodyWeavers.xsd

/docs
FodyWeavers.xsd
131 changes: 0 additions & 131 deletions Atm.sln

This file was deleted.

23 changes: 23 additions & 0 deletions Atm.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<Solution>
<Folder Name="/common/">
<File Path="Directory.Packages.props" />
<File Path="Directory.Build.props" />
<File Path=".gitignore" />
</Folder>
<Folder Name="/src/" />
<Folder Name="/src/Application/">
<Project Path="src/Atm.Application.Abstractions/Atm.Application.Abstractions.csproj" />
<Project Path="src/Atm.Application.Contracts/Atm.Application.Contracts.csproj" />
<Project Path="src/Atm.Application.Models/Atm.Application.Models.csproj" />
<Project Path="src/Atm.Application/Atm.Application.csproj" />
</Folder>
<Folder Name="/src/Atm.Api/">
<Project Path="src/Atm.Api/Atm.Api.csproj" />
</Folder>
<Folder Name="/src/Infrastructure/">
<Project Path="src\Atm.Infrastructure.Persistence\Atm.Infrastructure.Persistence.csproj" />
</Folder>
<Folder Name="/src/Presentation/">
<Project Path="src/Atm.Presentation/Atm.Presentation.csproj" />
</Folder>
</Solution>
45 changes: 40 additions & 5 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,42 @@
<Project>
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<PropertyGroup>
<AnalysisLevel>latest</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="StyleCop.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<!-- itmo-is-dev code style analyzers -->
<ItemGroup>
<PackageReference Include="SourceKit.Analyzers"/>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Itmo.Dev.Editorconfig"/>
</ItemGroup>

<!-- Make project internal classes visible to test projects with same name -->
<ItemGroup>
<InternalsVisibleTo Include="$(AssemblyName).Tests"/>
</ItemGroup>

<Target Name="Install git hooks" BeforeTargets="Build">
<Copy SourceFiles="$(MSBuildThisFileDirectory).githooks\pre-commit"
DestinationFiles="$(MSBuildThisFileDirectory)\.git\hooks\pre-commit"/>
</Target>

</Project>
46 changes: 46 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<EnablePackageVersionOverride>false</EnablePackageVersionOverride>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="coverlet.collector" Version="6.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="FluentMigrator" Version="8.0.1" />
<PackageVersion Include="FluentMigrator.Runner" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="11.0.0-preview.1.26104.118" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.Extensions.Options.DataAnnotations" Version="11.0.0-preview.2.26159.112" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageVersion Include="Npgsql" Version="10.0.1" />
<PackageVersion Include="Npgsql.DependencyInjection" Version="10.0.1" />
<PackageVersion Include="Refit.HttpClientFactory" Version="10.0.1" />
<PackageVersion Include="Scalar.AspNetCore" Version="2.13.8" />
<PackageVersion Include="SourceKit.Analyzers.Collections" Version="1.0.52" />
<PackageVersion Include="SourceKit.Analyzers.Enumerable" Version="1.0.52" />
<PackageVersion Include="SourceKit.Analyzers.MemberAccessibility" Version="1.0.52" />
<PackageVersion Include="SourceKit.Analyzers.Nullable" Version="1.0.52" />
<PackageVersion Include="SourceKit.Analyzers.Properties" Version="1.0.52" />
<PackageVersion Include="Itmo.Dev.Editorconfig" Version="1.0.14" />
<PackageVersion Include="SourceKit.Generators.Builder" Version="1.2.54" />
<PackageVersion Include="SourceKit.Generators.Builder.Annotations" Version="1.1.54" />
<PackageVersion Include="Spectre.Console.Cli" Version="1.0.0-alpha.0.15" />
<PackageVersion Include="Spectre.Console.Registrars.Microsoft-Di" Version="0.6.0" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="10.1.5" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.1.5" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="10.1.5" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
<PackageVersion Include="SourceKit.Analyzers" Version="1.0.101" />
<PackageVersion Include="Dapper" Version="2.1.86" />
<PackageVersion Include="FluentMigrator.Runner.Postgres" Version="8.0.1" />
<PackageVersion Include="Microsoft.OpenApi" Version="2.7.5" />
</ItemGroup>
</Project>
Loading
Loading