Дмитрий М. Node.JS

Описание

Programming Languages
- JavaScript
- Typescript
- CSS/CSS3
- HTML/HTML5

Framework/Libraries
- Node.js
- Express.js
- Nest.js
- CQRS
- Underscore
- Axios
- Socket.io
- jQuery
- Moment.js
- Lodash

Application/Web Servers
- Apache
- Nginx
- RabbitMQ

DBMS
- MongoDB
- MySQL
- PostgreSQL
- Redis

Cloud services
- AWS
- EC2
- Heroku
- Google Maps

Application Type
- Social Networks
- REST

Development Tools
- Git
- Webpack

Other
- Agile
- JSON
- XML
- Ajax
- MVC
- SSH
- Unix

Образование
Вычислительная техника и коммуникации, Бакалавр
Южный федеральный Университет, Таганрог, Россия

Опыт
Проект

Сервис по поиску попутчиков

Описание

Описание проекта Проект, задуманный как альтернатива BlaBlaCar в Африке, основными его отличиями являются: - чтобы водитель мог создавать поездки, он проходит многоступенчатую валидацию гос. документов, (ВУ/Паспорт), а также наличие фотографии, подтверждающей личность водителя, что увеличивает безопасность пользователей во время поездки. (Валидация частично происходит через гос. сервис, либо вручную владельцем сервиса); - система оплаты владельцу сервиса: водитель платит установленный процент от общей возможной выручки при создании поездки. Что было сделано Был реализован следующий функционал: - возможность создания, редактирования, удаления поездки; - во время создания поездки, можно добавлять промежуточные остановки, где пользователи могут закончить поездку или присоединиться к ней; - для поиска мест используется google API (поиск места по названию), для уточнения места используется карта (мобильная версия); - удаление подписавшегося пользователя, либо уменьшение мест, которые он забронировал; - поиск поездки (в определенном радиусе от заданного места отбытия/прибытия, поиск идет также и по промежуточным пунктам, не включая поездки, в которых нет мест); - общение между пользователями (простой мессенджер); - настройка личных предпочтений (отношение к музыке, курению в авто, животных в авто и общению); - редактирование пользовательских данных, в том числе предпочтений по поездке. Была проведена работа с БД (MongoDB), геоданными, писались запросы к БД, для их оптимизации использовались aggregation, lookup, project, unwind и т. д.). Проводилась обработка ошибок запросов к серверу, и их корректное отображение на фронте.

Технологии

JavaScript / Node.js / Express.js / Passport.js / Mongoose / MongoDB. Интеграции: Google Maps

Длительность

Октябрь 2019 – настоящее время месяцев

Проект

Платформа по поиску специалистов

Описание

Описание проекта Проект позволяет работодателям найти специалистов (ветеранов) и наоборот. Большим конкурентным преимуществом платформы является возможность загрузить свое резюме на сайт, и система сама заполнит информацию в профиле, исходя из этого документа. Также большое внимание уделено именно военным специальностям. Их резюме хорошо парсятся. В профиле есть специальные поля, отведенные под военный опыт. Также используется сложная система поиска наиболее подходящего кандидата по имеющемуся у него опыту, исходя из требований работодателя. Что было сделано Работа велась с личным кабинетом. Мы реализовали эвристический подсчет соответствия человека каждой вакансии. Аналитика каждого действия пользователя была исполнена с помощью FullStory, Segment, MixPanel. Кроме этого было реализовано: - автоматическое заполнение профиля пользователя, после того как загрузили резюме; - выделение ключевых слов при помощи модуля coreNLP; - чаты между пользователями, выполненные с помощью sendBird; - платежи при помощи Stripe; - интеграция с LinkedIn.

Технологии

Javascript / Node.js / Express.js / PostgreSQL. Интеграции: Stripe / LinkedIn

Длительность

Октябрь 2019 – настоящее время месяцев

Проект

Семейный сервис для хранения воспоминаний

Описание

Описание проекта Проект разрабатывался, как семейный. Нашей главной целью было создание сервиса, где семьи могли бы хранить воспоминания и семейные истории. Система даёт возможность записи аудио- и видеозвонков, их хранения, и функцией “поделиться с группами”. Записи надёжно хранятся, что обеспечивает конфиденциальность. Что было сделано На этом проекте мы работали с Node.js и React.js как основным стеком технологий. Для Amazon хранения мы использовали AWS S3. Система позволяет совершать видеозвонки, загружая потоковое видео на s3. Административная часть включает в себя возможность экспорта отчета в xls формате.

Технологии

JavaScript / Node.js / MongoDB / React.js / Redux. Интеграции: Heroku / AWS / Payment systems

Длительность

Октябрь 2019 – настоящее время месяцев

Проект

Корпоративная коммуникационная система

Описание

Описание проекта Корпоративная коммуникационная система, предоставляющая услуги связи в режиме "одного окна". Площадка предоставляет возможности: распределение телефонных номеров по всему миру, независимо от местоположения; телефонного шифрования без какого-либо физического оборудования или специального программного обеспечения; проведение многопользовательских звонков; предоставляет ссылку на скачивание записанных вызовов. Что было сделано Создали сервер с нуля, используя Node.js в качестве серверной платформы и его фреймворки (Express.js, Fastify). Клиенты могли загружать записанные звонки по прямой ссылке, а сервер передавал запрошенный файл из одного из доступных хранилищ (Amazon S3, FTP и т. д.). Настроили службу ведения журнала RabbitMQ, которая позволяла отслеживать нагрузку на серверы. Обновили один из JS-генерирующих модулей (swagger-js-codegen). Работали с fork этого модуля и обновили его до синтаксиса ES6, добавили необходимую функциональность и сгенерировали API из предоставленного файла JSON. Создали авто-тесты для сгенерированных контроллеров.

Технологии

JavaScript / Swagger.js / Codegen / Es6 / Node.js / Express.js / Fastify / PostgreSQL. Интеграции: AWS EC2 / AWS S3 / FTP / RabbitMQ

Длительность

Октябрь 2019 – настоящее время месяцев

Проект

Онлайн сервис для размещения образовательного контента

Описание

Для изучающих контент: - получение информации об образовательном контенте, размещенном в сервисе, через механизм ленты личного кабинета; - получение доступа, включая оплату, к заинтересовавшему контенту; - изучение образовательного контента, размещенного в сервисе. Для создателей контента: cервис, предоставляющий возможность размещать различный образовательный контент (внешний или внутренний) и «продавать» его пользователям, в том числе: - механика рекомендации образовательного контента по интересам пользователей сервиса; - возможность приема оплаты от пользователей за регистрацию на контент через сервис "Робокасса"; - организация различных форм онлайн-обучения через размещение: видео, аудио, pdf-файлов, лонгридов, ссылок на внешние ресурсы; - управление доступом к контенту; - редактирование информации о контенте и ее актуализация; - сбор статистики продвижения и финансов по контенту; - работа с данными пользователей. Для администратора сервиса: управление сервисом через административную панель: - создание административных ролей с настройкой доступа к различным административным спискам; - управление пользователями сервиса; - управление финансами (возможностью приема оплаты контента, установление комиссии сервиса, контроль возвратов, учет доходов); - редактирование и отслеживание отправки электронных писем сервиса по различным событиям; - размещение новых версий правил пользования, изучения, возврата; - формирование внутреннего справочника интересов сервиса с пятью уровнями вложенности, через которые осуществляется рекомендация контента пользователям; - обмен электронными версиями договоров и актов с пользователями, размещающими контент. Что было сделано Решения нашей команды на проекте: - настроили и запустили тестовый сервер (staging); - подключили тестовый режим сервиса приема оплат - “Робокасса”; - подключили файловое хранилище Яндекс облако. Разработан функционал сервиса: - регистрация, авторизация, вход, выход из платформы, функционал подтверждения почты и восстановления доступа; - личный кабинет пользователя: “лента”, “мои интересы”; - “мои проекты” с подсистемой ролей для доступа к проекту, управлением сотрудниками проекта; - интерфейс создания/редактирования “контента” с возможностью создания различных вариантов цен со сроком действия и возможностью управления доступом и регистрацией на контент; - сбор статистики продвижения контента (показы, переходы, источники добавления в избранное, подписок, оплат, неоплат, CTR) и статистики покупок по установленным вариантам цен; - административная панель управления сервисом; - интерфейс изучения контента (текст лонгрида, pdf-ридер, видео, ссылка на внешний ресурс). Онлайн сервис был разработан в мобильных, планшетных и десктоп версиях (административная панель только в десктопе).

Технологии

JavaScript / Node.js / Express.js / PostgreSQL / MongoDB. Интеграции: AWS S3 / Payment Systems / Microservices / Complex data through APIs

Длительность

Октябрь 2019 – настоящее время месяцев

Проект

Управление автомобилями

Описание

Описание проекта Пользователь мог видеть статистику автомобиля - уровень топлива, трекеры поездок. Управлять автомобилем можно через мобильное приложение (Открытие дверей, багажника, запуск двигателя и прочее). Происходили интеграции с другими сервисами – Везу бензин (Доставка топлива) и Российское автомобильное товарищество (РАТ). Что было сделано Начинали мы с построения “гибкого флоу” для виджетов для сервиса ONE. Со стороны фронта был создан специальный билдер, который принимал в себя определенно-структурированный объект и делал на его основе виджет с информацией. Предполагалось, что такие виджеты (объект-команда) можно будет хранить в базе данных и делать по ней запрос при необходимости. Далее, мы перешли на сервис Mobikey. реализовывали задачи по передачи данных между сервисами на основе брокера очередей RabbitMQ. Проводили интеграцию с РАТ-сервисом. Реализовали очень большой блок за 2 месяца. Во время его реализации было задействовано 5 сервисов проекта.

Технологии

Node.js / Typescript / Nest.js / CQRS / PostgreSQL / RabbitMQ. Интеграции: Payment Systems / Complex data through APIs

Длительность

Октябрь 2019 – настоящее время месяцев