@startuml
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml

LAYOUT_TOP_DOWN

title Диаграмма контейнеров библиотеки

Person(techPerson, "Читатель", "Сотрудник, который хочет читать техническу литературу (разработка, тестирование, администрирование, дизайн)")
Person(managPerson, "Продажники", "Сотрудник, который хочет читать литературу связанную с тем, как нужно общаться с клиентом(организация беседы, представление продукта клиентам)")
Person(PM, "PM", "Сотрудник, который хочет читать литературу связанную с материальной частью(пр. строительством) и коммуникациям с клиентами")
Person(Trainer, "Наставник по развитию сотрудников", "Сотрудник, хочет назначить книгу для развития сотрудника назначенного на него")
Person(Admin, "Администратор, завхоз", "Сотрудник, ответсвенный за учет и хранение книг")

System_Boundary(c1, "Интернет библиотека") {
    Container(spa, "Приложение для администрирования библиотеки", "TypeScript, React Native", "Представляет собой весь функционал для пользователя в Web-браузере")
    Container(mobile_app, "Приложение для читателей", "TypeScript, React Native", "Представляет собой весь функционал для пользователя в мобильной версии приложения")
    ContainerDb(database, "Database", "MySQL", "База данных содеражащая список книг, список пользователей")
    Container(backend_api, "API Application", ".NET", "Представляет собой бизнес логику в виде API")
}

Rel(Admin, spa, "Uses", "HTTPS")
Rel(techPerson, mobile_app, "Uses")
Rel(managPerson, mobile_app, "Uses")
Rel(PM, mobile_app, "Uses")
Rel(Trainer, spa, "Uses", "HTTPS")

Rel(spa, backend_api, "Uses", "async, JSON")
Rel(mobile_app, backend_api, "Uses", "async, JSON")
Rel_Back_Neighbor(database, backend_api, "Читает и записывает в БД", "sync, JDBC")

@enduml