Консольная система инвентаря с элементами RPG и экономикой на .NET 9.
Учебный проект, демонстрирующий работу с базой данных, внешним API, Unit-тестами и внедрением зависимостей (DI).
Функционал • Техническая реализация • Стек • Запуск
- Система авторизации: Регистрация и вход с безопасным хешированием паролей (
BCrypt). - Ролевая модель: Разделение на
UserиAdmin. - Админ-панель: Скрытое меню для управления балансом, создание предметов "на лету" и назначение новых администраторов.
- Real-time Обменник: Курс игровой валюты привязан к реальной стоимости Bitcoin (BTC) через Binance API.
- Торговля: Магазин (покупка) и Ломбард (продажа с учетом амортизации).
- Гринд: Имитация игровой активности с рандомизированным лутом и защитой от переполнения кошелька.
- Просмотр предметов, их описания и учёт количества.
Проект написан с соблюдением принципов чистой архитектуры и современных стандартов .NET:
- Unit-тестирование (xUnit):
- Полное покрытие бизнес-логики (
InventoryService,UserService). - Использование InMemory Database для изоляции тестов.
- Тесты проверяют успешные сценарии, ошибки валидации и попытки несанкционированного доступа.
- Полное покрытие бизнес-логики (
- Архитектура и DI:
- Приложение построено на Generic Host (
Microsoft.Extensions.Hosting) для управления жизненным циклом и конфигурацией. - Слабая связность через интерфейсы (
IUserService,IInventoryService).
- Приложение построено на Generic Host (
- Работа с данными:
- EF Core (Code First): База данных создается автоматически на основе моделей.
- Атомарность: Финансовые операции защищены транзакциями БД (
BeginTransactionAsync).
- Обработка ошибок:
- Использование Guard Clauses для валидации входных данных.
- Применение семантических исключений (например,
UnauthorizedAccessExceptionдля ошибок доступа) вместо возврата строк с ошибками.
| Core | .NET 9 (C# 13) |
| Data | Entity Framework Core (Code First), MS SQL Server (LocalDB) |
| Architecture | Microsoft.Extensions.Hosting, Dependency Injection |
| Security | BCrypt.Net-Next (Hashing) |
| Network | HttpClient, System.Text.Json (Binance Integration) |
| Tests | xUnit, Microsoft.EntityFrameworkCore.InMemory |
-
Требования:
- .NET 9 SDK
- MS SQL Server (LocalDB)
-
Конфигурация:
- Проверьте строку подключения в
appsettings.json. По умолчанию используется локальная база данных. - При первом запуске приложение автоматически применит миграции и наполнит базу начальными данными.
- Проверьте строку подключения в
-
Команды:
# Запуск приложения dotnet run --project InventoryApp # Запуск тестов dotnet test

