Smart Home System - Проект реализации системы "умный дом". Так же он выступает базой для экспериментирования с разными технологиями.
- 🌩️ Получения погоды из сервиса погоды.
- 🗃 Сохранение и отображение логов системы.
- 📋 Механизм работы с задачами (отображение, создание, изменение, удаление и отметка что выполнено).
- 🖥 Web Front сделан на Angular. Проект SmartHouseWebAngular. Подробнее тут.
- ⚙️ REST API для фронта сделан на .NET Core. Проект SmartHouseAPI. Подробнее тут.
- 📘 Для основной информации хранения данных используется база данных PostgreSQL.
- 📗 Для хранения логов используется база данных MongoDB.
- 🌡️ Данные о погоде поступают из сервиса Open Weather. Проект SmartHouse.Service.Weather.OpenWeatherService.
В качестве архитектуры проекта используется "Onion Architecture" ("луковая" архитектура).
- Domain Model - Классы моделей, которые используются в приложении и объекты которых хранятся в базе данных. Проект SmartHouse.Domain.Core.
- Domain Services - Уровень, который управляет работой с моделью домена в виде интерфейсов репозиториев. Проект SmartHouse.Domain.Interfaces.
- Application Services - Уровень API или интерфейсов бизнес-логики приложения. Проект SmartHouse.Services.Interfaces.
- Repository - Уровень инфраструктуры реализует интерфейсы, объявленные на нижних уровнях, и связывать их с хранилищем данных. Проект SmartHouse.Infrastructure.Data.
- Business logic - Реализация бизнес логики. Проект SmartHouse.Infrastructure.Business.
- Web service - Проекты получения данных погоды. Их может быть множество. Папка с проектами Weather.
- API - Основной проект REST API back-end. Подробнее тут.
- Tests - Тесты всех систем, включающие юнит-тесты и интеграционные тесты. Подробнее тут.
Система может поддерживать множество представлений. В данном случае используется одно представление, написанное на Angular. Папка с проектами представлений тут. Подробнее тут.
- 🧪 Для юнит-тестирования фронта используется фреймворк Karma, а для интеграционного Protractor. Процесс запуска тут.
- ⚗️ API тесты реализуют юнит и интеграционное тестирование на технологиях NUnit и XUnit. Процесс запуска тут.
Для эмуляции работы сервисов используется программа SoapUI, где файлы для эмуляции работы API контроллеров SoapUI-HTTP-API.xml и сервиса погоды SoapUI-OpenWeatherMap.xml. Так же для эмуляции сервиса погоды используется проект WetherApiNodejs, написанный на Node.js, который можно запустить в Docker файлом docker-compose.yml.
Все функции проекта можно запустить в Docker, так же как и тесты.
Для запуска многоконтейнерного приложения необходимо выполнить инструкцию через консоль из корня решения. Файл описания многоконтейнерного приложения docker-compose.yml.
docker-compose -f docker-compose.yml up -d
Для запуска вместе с тестами необходимо выполнить команду в консоли. Файл описания многоконтейнерного приложения docker-compose.test.yml.
docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d
Все порты, которые использует проект, находятся в файле .env.
- Rasin Jean - Вся работа - JeanRasin
Этот проект лицензирован по лицензии MIT - подробности см. В файле LICENSE.