Сервис учета и классификации активности (командный проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Компания IPONWEB
Учебный семестр Осень 2017
Учебный курс 3-й курс
Максимальное количество студентов, выбравших проект: 4-5



Что это за проект?

Сервис, собирающий информацию об активности пользователя с различных устройств и браузера и размечающий активности как продуктивные/непродуктивные.

Чему научатся студенты? Что самое интересное в проекте?

Наиболее интересные компоненты проекта:

  • Классификатор активности. Можно по словам в заголовке, можно выкачивать списки приложений (игр, ide, офисных пакетов) или даже получать информацию через их апи во время получения неизвестной активности.
  • Учет активности с разных устройств. Например, если человек листает учебник на планшете и делает заметки на ноутбуке, то нужно смержить эти активности как общепродуктивные. Идеально разработать хранилище паттернов поведения и учитывать активность в целом.

Организация работы (Как студенты будут работать в команде?)

Основные моменты взаимодействия:

  • Непрерывная интеграция: линтеры кода, прогон тестов, покрытие тестами, сборка пакета и выкладка на прод, работа с конфигурациями. Настройка на примере Jenkins или Phabricator. Работа с конфигурациями через Puppet (или, возможно, Docker или Vagrant)
  • Гибкая методология разработки: бэклог, организация спринтов, оценка сложности задач и сопоставление с фактически потраченным, демо. Технически на примере Trello, RedMine или Phabricator
  • В группе каждые 2 недели (спринт) переходит роль менеджера проекта, чтобы каждый мог попробовать роль пару раз и на планирование не забивали.
  • Взаимные код-ревью: все ревьюят всех.
  • Удаленная работа, встречаться нечасто (например, в конце каждого спринта), но раз в 2-3 дня обязательно синхронизовать результаты и планы в слаке/телеграмме или по почте.

Компоненеты (Из каких частей состоит проект?)

  • Сервер принимающий информацию от агентов.
  • Графики разной статистики в веб-кабинете пользователя (можно взять за основу код grafana)
  • Клиенты: для десктопов (для начала можно ограничиться одной платформой Ubuntu/OSX и писать на Electron), плагины для браузера (на Greasemonkey и Tampermonkey), клиенты для мобильных устройств (можно использовать кросс-платформенные фреймворки типа Ionic)
  • Сервер: Язык не принципиален нужно сделать REST API, СУБД: InfluxDB и скорее всего для хранения фич разных приложений (заголовков) понадобится MongoDB.
  • ETL-сервисы и классификаторы активностей.


Техническое описание:

  • Пользователь устанавливает агенты сервиса на своих устройствах, агенты отправляют на сервер данные об активностях пользователя.
  • Агент должен отправлять только заголовок активного окна. При этом не всегда можно отследить изменение окна без переключения программы, поэтому для браузеров может понадобиться плагин.
  • Агент также должен агрегировать информацию находясь в оффлайн и отправлять при появлении соединения.
  • Предлагается попробовать InfluxDB для хранения метрик. Также понадобится спроектировать алгоритм учета активностей, поступающих с разных устройств в одно время (недостаток всех существующих сервисов этой категории).

Какие будут использоваться технологии?

  • Фреймворки Electron, React Native - для кросс-платформенных клиентов.
  • Возможно, понадобится более низкоуровневое программирование под конкретные ОС: Swift, Java, C#, etc
  • InfluxDB в качестве основной СУБД

Какие начальные требования?

  • Опыт веб-разработки сервисов с REST API
  • Желателен опыт разработки приложений с взаимодействием с компонентами различных ОС.
  • Желателен опыт кросс-платформенной разработки приложений.

Темы вводных занятий

  • Взаимодействие в команде, методология Agile
  • Архитектура разрабатываемого проекта
  • Составление бэклога и планирование спринтов

Критерии оценки

Минимальные требования (на 4-5 баллов):

  • Разработан агент под Ubuntu, собирающий активность пользователя и отправляющий ее на сервер
  • Разработан сервер, агрегирующий информацию об активности пользователя.
  • Разработан веб-сайт, через который пользователь может просматривать статистику своей активности, отмечать активность как продуктивную или нет.
  • Разработан классификатор активностей на основе слов, встречающихся в заголовках активных окон и отметок пользователя.

Точные требования на 6-10 будут сформулированы на первых занятиях исходя из составленного бэклога и уровня подготовки участников проекта.

Похожие проекты

  • Rescuetime
  • Project Hamster

Контактная информация

  • Почта: acccko@gmail.com
  • Телеграмм: @acccko