Хрестьяновский Даниил

Daniil Khrestyanovskii

EN RU
Logo

Санкт-Петербург, Россия
Telegram @dankhrestyan
khrestyanovskii@gmail.com
GitHub

Я бэкенд разработчик и аналитик данных, который любит изучать новое и реализовывать идеи.

Я получаю образование бакалавра в Санкт-Петербургском Политехническом университете, где глубоко изучаю базы данных, программирование и дискретную математику на направлении "Математическое обеспечение и администрирование информационных систем".

Saint Petersburg, Russia
Telegram @dankhrestyan
khrestyanovskii@gmail.com
GitHub

I am a backend developer and data analyst who loves learning new things and implementing ideas.

I am pursuing a bachelor's degree at Saint Petersburg Polytechnic University, where I deeply study databases, programming, and discrete mathematics in the field of "Mathematical Software and Information Systems Administration".

ПортфолиоPortfolio


Backend разработкаBackend Development

Мобильное приложение TE-ManagerTE-Manager Mobile App

С февраля 2024 года в качестве фрилансера развиваю backend для мобильного приложения по управлению задачами и эмоциями. Наша команда стала победителем гранта размером в 1 млн рублей V очереди конкурса "Студенческий стартап".

Ключевые достижения:
  • С нуля развернул production-сервер на Yandex Cloud: установил и настроил nginx, обеспечил защищённое соединение по HTTPS, подключил домен и подготовил среду для масштабируемых веб-приложений.
  • Реализовал OpenAPI документацию для удобного тестирования эндпоинтов через Swagger UI и быстрой проверки запросов.
  • Использовал фреймворк Flask (Python) и базу данных PostgreSQL.
  • Разработал REST API для приложения управления задачами с возможностью отслеживания времени, категоризации и приоритизации задач.
  • Реализовал многоуровневую систему аутентификации с поддержкой JWT-токенов и OAuth-интеграцией с Google и Яндекс.
  • Спроектировал и внедрил двустороннюю синхронизацию задач с Яндекс.Календарём (CalDAV).
  • Создал модуль для отслеживания настроения пользователей с функциями анализа и визуализации данных.
  • Разработал систему статистики для анализа продуктивности по категориям, важности и временным периодам.
  • Интегрировал облачное хранилище Yandex Object Storage для пользовательских данных.
  • Обеспечил безопасное хранение учётных данных и токенов с использованием современных методов шифрования.
  • На старте проекта интегрировал решения в Java Android приложение.
Сайт проекта: temanager.com
Since February 2024, I have been working as a freelancer developing the backend for a mobile application for task and emotion management. Our team won a grant of 1 million rubles in the V round of the "Student Startup" competition.

Key achievements:
  • Built a production server from scratch on Yandex Cloud: installed and configured nginx, ensured secure HTTPS connection, connected a domain, and prepared an environment for scalable web applications.
  • Implemented OpenAPI documentation for convenient endpoint testing via Swagger UI and quick request verification.
  • Used the Flask (Python) framework and PostgreSQL database.
  • Developed a REST API for a task management application with time tracking, categorization, and task prioritization capabilities.
  • Implemented a multi-level authentication system with JWT token support and OAuth integration with Google and Yandex.
  • Designed and implemented two-way task synchronization with Yandex.Calendar (CalDAV).
  • Created a module for tracking user moods with data analysis and visualization functions.
  • Developed a statistics system for analyzing productivity by categories, importance, and time periods.
  • Integrated Yandex Object Storage cloud storage for user data.
  • Ensured secure storage of credentials and tokens using modern encryption methods.
  • Integrated solutions into a Java Android application at the start of the project.
Project website: temanager.com
Один из экранов приложения

Один из экранов приложения

One of the app screens

Менеджер задач на Spring BootTask Manager on Spring Boot

Static Badge

В учебных целях реализовал приложение - менеджер задач на Spring Boot.

Ключевые технологии:
  • Spring Boot 3.4 — основа приложения с поддержкой REST API
  • Spring Data JPA — доступ к данным через репозитории
  • MariaDB (production) + Flyway — миграции схемы
  • Redis — кэширование для прироста производительности
  • Kafka — асинхронная обработка событий (создание / просрочка задач)
  • Docker & Docker Compose — контейнеризация приложения и инфраструктуры
  • JUnit 5 & Mockito + JaCoCo — покрытие тестами > 80 %
Реализованная функциональность:
  • Управление пользователями — регистрация и авторизация
  • CRUD-операции с задачами
  • Система уведомлений о новых и просроченных задачах
  • Асинхронный обмен сообщениями через Kafka
  • Кэширование данных в Redis (настраиваемый TTL)
  • Профили окружения: dev / prod
  • Полная контейнеризация с многоконтейнерной архитектурой
Архитектурные особенности:
  • Многоуровневая структура: контроллеры → сервисы → репозитории
  • Асинхронная обработка событий (Kafka + Scheduler для просроченных задач)
  • Redis-кэширование с дифференцированным TTL
  • Docker Compose — единая точка запуска всей экосистемы
Достижения:
  • Покрытие кода тестами > 80 %
  • Реализована микросервисная (event-driven) архитектура
  • Существенное сокращение времени отклика за счёт кэширования
For educational purposes, I implemented a task manager application using Spring Boot.

Key technologies:
  • Spring Boot 3.4 — application foundation with REST API support
  • Spring Data JPA — data access through repositories
  • MariaDB (production) + Flyway — schema migrations
  • Redis — caching for performance improvement
  • Kafka — asynchronous event processing (task creation / expiration)
  • Docker & Docker Compose — containerization of application and infrastructure
  • JUnit 5 & Mockito + JaCoCo — test coverage > 80 %
Implemented functionality:
  • User management — registration and authorization
  • CRUD operations with tasks
  • Notification system for new and overdue tasks
  • Asynchronous message exchange via Kafka
  • Data caching in Redis (configurable TTL)
  • Environment profiles: dev / prod
  • Full containerization with multi-container architecture
Architectural features:
  • Multi-layer structure: controllers → services → repositories
  • Asynchronous event processing (Kafka + Scheduler for overdue tasks)
  • Redis caching with differentiated TTL
  • Docker Compose — single launch point for the entire ecosystem
Achievements:
  • Code test coverage > 80 %
  • Implemented microservice (event-driven) architecture
  • Significant response time reduction through caching

Backend часть для ML-проектаBackend for ML Project

Static Badge

С декабря 2024 по март 2025 года разрабатывался научно-исследовательский проект по предсказанию риска рака лёгких с применением машинного обучения. По итогам работы подготовлена научная статья, которая готовится к публикации в профильном журнале.

Ключевые технологии:
  • Python 3.9 — основной язык программирования
  • Flask — веб-фреймворк для создания REST API
  • PostgreSQL — реляционная СУБД для хранения пользовательских данных
  • scikit-learn — библиотека для построения и использования ML-моделей (SVM, KNN)
  • Docker & Docker Compose — контейнеризация и автоматизация запуска сервисов
Реализованный функционал:
  • REST API для взаимодействия с фронтендом
  • Эндпоинт /predict для приёма медицинских данных и возврата результатов
  • Интеграция обученной SVM-модели для расчёта вероятности заболевания
  • Сохранение истории прогнозов и пользовательских данных в PostgreSQL
Архитектурные решения:
  • Микросервисная структура: фронтенд, бэкенд и база данных — как отдельные сервисы
  • Автоматическая инициализация таблиц при запуске приложения
  • Проверка доступности БД и настройка зависимостей между сервисами
  • Контейнеризация всех компонентов для кроссплатформенного развёртывания
Особенности реализации:
  • Предварительно обученная ML-модель (SVM) встроена в API
  • Валидация и предварительная обработка входных данных
  • Вывод вероятности риска в процентном выражении
  • Хранение истории прогнозов для каждого пользователя
From December 2024 to March 2025, a research project was developed to predict lung cancer risk using machine learning. As a result of the work, a scientific article has been prepared and is being prepared for publication in a specialized journal.

Key technologies:
  • Python 3.9 — main programming language
  • Flask — web framework for creating REST API
  • PostgreSQL — relational DBMS for storing user data
  • scikit-learn — library for building and using ML models (SVM, KNN)
  • Docker & Docker Compose — containerization and service launch automation
Implemented functionality:
  • REST API for interaction with the frontend
  • /predict endpoint for receiving medical data and returning results
  • Integration of a trained SVM model for calculating disease probability
  • Saving prediction history and user data in PostgreSQL
Architectural solutions:
  • Microservice structure: frontend, backend, and database as separate services
  • Automatic table initialization when launching the application
  • Database availability check and configuration of dependencies between services
  • Containerization of all components for cross-platform deployment
Implementation features:
  • Pre-trained ML model (SVM) embedded in API
  • Validation and preprocessing of input data
  • Output of risk probability as a percentage
  • Storage of prediction history for each user

Аналитика данных в киберспортеData Analytics in Esports

Dota 2 Avulus

С октября 2024 года работаю фриланс-аналитиком в профессиональной команде по Dota 2 — Avulus.

Ключевые задачи:
  • Сбор данных из открытых источников (Spectral.gg, STRATZ, DotaBuff, OpenDota, Dota2ProTracker).
  • Извлечение инсайтов и подготовка аналитических отчётов для тренера и игроков.
  • Автоматизация поиска информации и построение сервисов для команды (использую PythonPandas, NumPy, Matplotlib, MySQL).
  • Развёртывание собственного веб-сервиса на Go для автоматизированной аналитики и отчетов.
  • Подготовка к соперникам: анализ паттернов, поиск закономерностей по оппонентам и их истории выступлений.
  • Постоянная коммуникация с тренером и составом, предоставление данных по их запросам в удобном и наглядном виде.
Достижения команды за время работы:
  • 1 место на RES Regional Champions
  • 4 место на CCT Series 5
  • 5–6 место на ESL One Bangkok 2024
  • 7–8 место на PGL Wallachia Season 2
  • 7–8 место на ESL One Raleigh 2025
Квалификации на крупнейшие турниры:
  • 1 место на FISSURE PLAYGROUND #1: Western Europe Closed Qualifier
  • 1 место на DreamLeague Season 25: Western Europe Closed Qualifier
  • 1 место на PGL Wallachia Season 3: Western Europe Closed Qualifier
  • 2 место на ESL One Bangkok 2024: Western Europe Closed Qualifier
Since October 2024, I have been working as a freelance analyst for the professional Dota 2 team — Avulus.

Key tasks:
  • Data collection from open sources (Spectral.gg, STRATZ, DotaBuff, OpenDota, Dota2ProTracker).
  • Extracting insights and preparing analytical reports for the coach and players.
  • Automating information search and building services for the team (using PythonPandas, NumPy, Matplotlib, MySQL).
  • Deploying a custom web service on Go for automated analytics and reports.
  • Preparation for opponents: pattern analysis, finding regularities in opponents and their performance history.
  • Constant communication with the coach and team, providing data according to their requests in a convenient and visual format.
Team achievements during my work:
  • 1st place at RES Regional Champions
  • 4th place at CCT Series 5
  • 5–6th place at ESL One Bangkok 2024
  • 7–8th place at PGL Wallachia Season 2
  • 7–8th place at ESL One Raleigh 2025
Qualifications for major tournaments:
  • 1st place at FISSURE PLAYGROUND #1: Western Europe Closed Qualifier
  • 1st place at DreamLeague Season 25: Western Europe Closed Qualifier
  • 1st place at PGL Wallachia Season 3: Western Europe Closed Qualifier
  • 2nd place at ESL One Bangkok 2024: Western Europe Closed Qualifier

Примеры работ Work Examples

Карта распределения вардов за последние 8 матчей команды (на основе OpenDota API)

Ward distribution map for the team's last 8 matches (based on OpenDota API)

Пример автоматической генерации отчета по выбранным игрокам с моего сайта (количество матчей на герое за выбранное время и winrate (%))

Example of automatic report generation for selected players from my website (number of matches on a hero for the selected time and winrate (%))

Пример автоматической генерации отчета успешных героев против конкретного героя на выбранной позиции (1-5)

Example of automatic report generation of successful heroes against a specific hero in the selected position (1-5)