Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InventoryApp

Консольная система инвентаря с элементами 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).
  • Работа с данными:
    • 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

Запуск проекта

  1. Требования:

    • .NET 9 SDK
    • MS SQL Server (LocalDB)
  2. Конфигурация:

    • Проверьте строку подключения в appsettings.json. По умолчанию используется локальная база данных.
    • При первом запуске приложение автоматически применит миграции и наполнит базу начальными данными.
  3. Команды:

    # Запуск приложения
    dotnet run --project InventoryApp
    
    # Запуск тестов
    dotnet test

About

Консольная RPG-экономика на .NET 9: EF Core, DI, Auth (BCrypt), xUnit тесты и динамический курс валют через Binance API.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages