Сервис учета и классификации активности (командный проект)
Материал из 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