Skip to content

JeanRasin/SmartHouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏠 Smart House System

Smart Home System - Проект реализации системы "умный дом". Так же он выступает базой для экспериментирования с разными технологиями.

🧱 Функции системы

  1. 🌩️ Получения погоды из сервиса погоды.
  2. 🗃 Сохранение и отображение логов системы.
  3. 📋 Механизм работы с задачами (отображение, создание, изменение, удаление и отметка что выполнено).

🗜 Элементы системы

  1. 🖥 Web Front сделан на Angular. Проект SmartHouseWebAngular. Подробнее тут.
  2. ⚙️ REST API для фронта сделан на .NET Core. Проект SmartHouseAPI. Подробнее тут.
  3. 📘 Для основной информации хранения данных используется база данных PostgreSQL.
  4. 📗 Для хранения логов используется база данных MongoDB.
  5. 🌡️ Данные о погоде поступают из сервиса Open Weather. Проект SmartHouse.Service.Weather.OpenWeatherService.

🏗️ Архитектура back-end приложения

🔴 Application Core

В качестве архитектуры проекта используется "Onion Architecture" ("луковая" архитектура).

  1. Domain Model - Классы моделей, которые используются в приложении и объекты которых хранятся в базе данных. Проект SmartHouse.Domain.Core.
  2. Domain Services - Уровень, который управляет работой с моделью домена в виде интерфейсов репозиториев. Проект SmartHouse.Domain.Interfaces.
  3. Application Services - Уровень API или интерфейсов бизнес-логики приложения. Проект SmartHouse.Services.Interfaces.

⭕️ Infrastructure

  1. Repository - Уровень инфраструктуры реализует интерфейсы, объявленные на нижних уровнях, и связывать их с хранилищем данных. Проект SmartHouse.Infrastructure.Data.
  2. Business logic - Реализация бизнес логики. Проект SmartHouse.Infrastructure.Business.
  3. Web service - Проекты получения данных погоды. Их может быть множество. Папка с проектами Weather.
  4. API - Основной проект REST API back-end. Подробнее тут.
  5. Tests - Тесты всех систем, включающие юнит-тесты и интеграционные тесты. Подробнее тут.

🖥 Архитектура front-end приложения

Система может поддерживать множество представлений. В данном случае используется одно представление, написанное на Angular. Папка с проектами представлений тут. Подробнее тут.

🔬 Тесты системы

  1. 🧪 Для юнит-тестирования фронта используется фреймворк Karma, а для интеграционного Protractor. Процесс запуска тут.
  2. ⚗️ API тесты реализуют юнит и интеграционное тестирование на технологиях NUnit и XUnit. Процесс запуска тут.

⚙️ Эмуляция сервисов

Для эмуляции работы сервисов используется программа SoapUI, где файлы для эмуляции работы API контроллеров SoapUI-HTTP-API.xml и сервиса погоды SoapUI-OpenWeatherMap.xml. Так же для эмуляции сервиса погоды используется проект WetherApiNodejs, написанный на Node.js, который можно запустить в Docker файлом docker-compose.yml.

🐳 Docker

Все функции проекта можно запустить в 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.