Анализ сайта lobsterslippers.ru
Основное Готовность: 50%
Домен
lobsterslippers.ru
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Длина домена велика. Но если вы продвигаете запрос, входящий в название домена, то это хорошо.
Домен второго уровня идеален для продвижения.
Регистратор домена - SELECTEL-RU
Дата регистрации домена 30.07.2026 (более 2 недель назад)
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Кол-во редиректов 3 слишком большое! Проверьте настройки сайта и веб-сервера!
Цепочка редиректов:
http://lobsterslippers.ru
301 MovedPermanently
https://mikhailsysoev.ru/
307 RedirectKeepVerb
https://mikhailsysoev.ru/en
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 28.10.2026 23:46:31.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,23сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,23сек оптимальна.
Объем документа
60Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 60Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 18
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 18 много для одной страницы. Приемлемо до 10. Проведите оптимизацию файлов ресурсов!
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | /_next/static/chunks/27z4f8i9jie28.css | |
| stylesheet | /_next/static/chunks/0012_qh64u7ae.css | |
| stylesheet | /_next/static/chunks/2t0dapo9mlfwd.css | |
| stylesheet | /_next/static/chunks/1ncpxlyl5wtgc.css | |
| js | /_next/static/chunks/07-hzktxqjvzd.js | |
| js | /_next/static/chunks/11oof8oxnxiv9.js | |
| js | /_next/static/chunks/0iec5q4ack_04.js | |
| js | /_next/static/chunks/turbopack-0f7lxfhf92bvf.js | |
| js | /_next/static/chunks/3jd57l1dfwr2j.js | |
| js | /_next/static/chunks/0vbn88u86wcxq.js | |
| js | /_next/static/chunks/14mrh2-p_w84d.js | |
| js | /_next/static/chunks/2d8jylyytl8if.js | |
| js | /_next/static/chunks/0mit976btqau-.js | |
| js | /_next/static/chunks/1jthnjevn66gz.js | |
| js | /_next/static/chunks/2fkidbb3jv0tu.js | |
| js | /_next/static/chunks/3jppfuxdmomdu.js | |
| js | /_next/static/chunks/0cz1d0mv5g_q7.js | |
| js | /_next/static/chunks/3jvkbm-wxvaor.js |
Серверные заголовки
Кол-во: 10
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 10шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Server | nginx |
| Date | Sat, 15 Aug 2026 20:56:51 GMT |
| Vary | Accept-Encoding |
| Link | </_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2>; rel=preload; as="font"; crossorigin=""; type="font/woff2", </_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2>; rel=preload; as="font"; crossorigin=""; type="font/woff2", </_next/static/media/9c72aa0f40e4eef8-s.p.1y4-pdgsjb-pw.woff2>; rel=preload; as="font"; crossorigin=""; type="font/woff2", </_next/static/media/cc545e633e20c56d-s.p.176arc174-8zp.woff2>; rel=preload; as="font"; crossorigin=""; type="font/woff2", </logo.svg>; rel=preload; as="image" |
| Cache-Control | no-store, must-revalidate, no-cache, max-age=0, private |
| Strict-Transport-Security | max-age=63072000; includeSubDomains; preload |
| X-Content-Type-Options | nosniff |
| X-Frame-Options | DENY |
| Referrer-Policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере nginx.
Мета-теги Готовность: 32%
Title
Mikhail Sysoev — Portfolio
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение: 26, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Developer portfolio
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо увеличить число символов в description (текущее значение мало: 19, минимум: 80, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Рекомендуем прописать канонический Url.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width, initial-scale=1
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Не найдено
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph не задана. Страница не оптимизирована под социальные сети. Мета-теги с разметкой Og помогают социальным роботам лучше структурировать Ваш сайт.
Все мета-теги
Кол-во: 4
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 4шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1 |
| name | next-size-adjust | |
| name | theme-color | #060f0c |
| name | description | Developer portfolio |
Оптимизация Готовность: 83%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Абзацев с текстом 8 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Кол-во слов 417 не очень много. Добавьте побольше текста (хотя бы 800 слов)!
Слова из title 4 встречаются в тексте достаточно.
Среднее число слов в абзаце 19 достаточно.
Кол-во знаков контента 2650 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 5. Это хорошо.
Тошнота
2,83
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота страницы в пределах нормы 3.
Академич. тошнота
15,59%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота превышает норму 5-15%. Измените текст страницы!
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| projects | 8 | 1,92% |
| fastapi | 8 | 1,92% |
| flutter | 7 | 1,68% |
| python | 5 | 1,20% |
| postgresql | 5 | 1,20% |
| docker | 5 | 1,20% |
| skills | 4 | 0,96% |
| debian | 4 | 0,96% |
| sqlalchemy | 4 | 0,96% |
| typescript | 4 | 0,96% |
| mikhail | 3 | 0,72% |
| sysoev | 3 | 0,72% |
| contact | 3 | 0,72% |
| software | 3 | 0,72% |
| services | 3 | 0,72% |
| android | 3 | 0,72% |
| application | 3 | 0,72% |
| business | 3 | 0,72% |
| full-stack | 2 | 0,48% |
| developer | 2 | 0,48% |
Индексация Готовность: 50%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 22 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 4 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://lobsterslippers.ru/robots.txt
301 MovedPermanently
https://mikhailsysoev.ru/robots.txt
307 RedirectKeepVerb
https://mikhailsysoev.ru/
307 RedirectKeepVerb
https://mikhailsysoev.ru/en
200 OK
Показать содержимое robots.txt
<!DOCTYPE html><html lang="en" class="inter_555e3567-module__4Pg6na__variable jetbrains_mono_caec978f-module__lUICVW__variable" data-scroll-behavior="smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/27z4f8i9jie28.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/0012_qh64u7ae.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/2t0dapo9mlfwd.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/1ncpxlyl5wtgc.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/3jvkbm-wxvaor.js"/><script src="/_next/static/chunks/07-hzktxqjvzd.js" async=""></script><script src="/_next/static/chunks/11oof8oxnxiv9.js" async=""></script><script src="/_next/static/chunks/0iec5q4ack_04.js" async=""></script><script src="/_next/static/chunks/turbopack-0f7lxfhf92bvf.js" async=""></script><script src="/_next/static/chunks/3jd57l1dfwr2j.js" async=""></script><script src="/_next/static/chunks/0vbn88u86wcxq.js" async=""></script><script src="/_next/static/chunks/14mrh2-p_w84d.js" async=""></script><script src="/_next/static/chunks/2d8jylyytl8if.js" async=""></script><script src="/_next/static/chunks/0mit976btqau-.js" async=""></script><script src="/_next/static/chunks/1jthnjevn66gz.js" async=""></script><script src="/_next/static/chunks/2fkidbb3jv0tu.js" async=""></script><script src="/_next/static/chunks/3jppfuxdmomdu.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#060f0c"/><title>Mikhail Sysoev — Portfolio</title><meta name="description" content="Developer portfolio"/><link rel="shortcut icon" href="/favicon.svg"/><link rel="icon" href="/favicon.svg"/><link rel="apple-touch-icon" href="/logo.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="ScrollProgress-module___Fh38q__bar" aria-hidden="true" style="transform:scaleX(0)"></div><div class="AmbientGlow-module__7n_5vW__root" aria-hidden="true"><span class="AmbientGlow-module__7n_5vW__orb AmbientGlow-module__7n_5vW__orbLeft"></span><span class="AmbientGlow-module__7n_5vW__orb AmbientGlow-module__7n_5vW__orbRight"></span></div><header class="GlassHeader-module__AawIRq__wrapper "><div class="GlassHeader-module__AawIRq__inner"><a class="GlassHeader-module__AawIRq__brand" href="/en"><img alt="" width="34" height="34" decoding="async" data-nimg="1" class="GlassHeader-module__AawIRq__logo" style="color:transparent" src="/logo.svg"/><span>Mikhail Sysoev</span></a><nav class="GlassHeader-module__AawIRq__nav" aria-label="Primary"><a href="/en#about" class="GlassHeader-module__AawIRq__navLink">About</a><a href="/en#skills" class="GlassHeader-module__AawIRq__navLink">Skills</a><a href="/en#projects" class="GlassHeader-module__AawIRq__navLink">Projects</a><a href="/en#contact" class="GlassHeader-module__AawIRq__navLink">Contact</a></nav><div class="GlassHeader-module__AawIRq__actions"><div class="GlassHeader-module__AawIRq__langGroup"><button type="button" class="GlassHeader-module__AawIRq__langButton GlassHeader-module__AawIRq__langButtonActive">EN</button><button type="button" class="GlassHeader-module__AawIRq__langButton ">RU</button></div><button type="button" class="GlassHeader-module__AawIRq__menuButton" aria-label="Open menu" aria-expanded="false"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 7h16"></path><path d="M4 12h16"></path><path d="M4 17h16"></path></svg></button></div></div></header><div class="GlassHeader-module__AawIRq__mobileMenu " aria-hidden="true"><nav class="GlassHeader-module__AawIRq__mobileNav" aria-label="Mobile"><a href="/en#about" class="GlassHeader-module__AawIRq__mobileLink" tabindex="-1">About</a><a href="/en#skills" class="GlassHeader-module__AawIRq__mobileLink" tabindex="-1">Skills</a><a href="/en#projects" class="GlassHeader-module__AawIRq__mobileLink" tabindex="-1">Projects</a><a href="/en#contact" class="GlassHeader-module__AawIRq__mobileLink" tabindex="-1">Contact</a></nav></div><div style="opacity:1"><main><section class="Hero-module__ZARIfG__section"><div class="Hero-module__ZARIfG__grid"><div class="Hero-module__ZARIfG__left"><div class="Hero-module__ZARIfG__badge" style="opacity:0;transform:translateY(22px)"><span class="Hero-module__ZARIfG__pulse"></span>Available for work</div><h1 class="Hero-module__ZARIfG__name" style="opacity:0;transform:translateY(22px)">Mikhail Sysoev</h1><p class="Hero-module__ZARIfG__title" style="opacity:0;transform:translateY(22px)">Junior Full-Stack Developer</p><p class="Hero-module__ZARIfG__greeting" style="opacity:0;transform:translateY(22px)">I create and launch software, web services, and Android apps. I love learning new technologies and turning bold ideas into working code!</p><div class="Hero-module__ZARIfG__ctaRow" style="opacity:0;transform:translateY(22px)"><div style="display:inline-flex;transform:none"><a href="#projects" class="Hero-module__ZARIfG__cta Hero-module__ZARIfG__ctaPrimary">View projects</a></div><div style="display:inline-flex;transform:none"><a href="#contact" class="Hero-module__ZARIfG__cta">Get in touch</a></div></div></div><div class="Hero-module__ZARIfG__right" style="opacity:0;transform:translateY(26px)"><div class="Hero-module__ZARIfG__orb" aria-hidden="true"></div><div class="TerminalBlock-module__zANDiW__window glass"><div class="TerminalBlock-module__zANDiW__titleBar"><span class="TerminalBlock-module__zANDiW__dots"><i class="TerminalBlock-module__zANDiW__dotRed"></i><i class="TerminalBlock-module__zANDiW__dotYellow"></i><i class="TerminalBlock-module__zANDiW__dotGreen"></i></span><span class="TerminalBlock-module__zANDiW__title">bash — portfolio</span></div><div class="TerminalBlock-module__zANDiW__body"><div class="TerminalBlock-module__zANDiW__promptLine"><span class="TerminalBlock-module__zANDiW__promptHost"><span class="TerminalBlock-module__zANDiW__user">mikhailsysoev</span><span class="TerminalBlock-module__zANDiW__at">@</span><span class="TerminalBlock-module__zANDiW__host">localhost</span><span class="TerminalBlock-module__zANDiW__path">:~$</span><span class="TerminalBlock-module__zANDiW__promptGap" aria-hidden="true"> </span></span><span class="TerminalBlock-module__zANDiW__command"></span></div></div></div></div></div></section><div class="TechMarquee-module__FsrXLG__strip" aria-hidden="true"><div class="TechMarquee-module__FsrXLG__track"><span class="TechMarquee-module__FsrXLG__item">Vue.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Arch Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Debian Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Flutter<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Git<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Python<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">FastAPI<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">PostgreSQL<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">SQLAlchemy<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Next.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">TypeScript<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Docker<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">CI/CD<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Vue.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Arch Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Debian Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Flutter<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Git<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Python<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">FastAPI<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">PostgreSQL<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">SQLAlchemy<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Next.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">TypeScript<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Docker<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">CI/CD<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Vue.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Arch Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Debian Linux<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Flutter<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Git<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Python<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">FastAPI<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">PostgreSQL<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">SQLAlchemy<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Next.js<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">TypeScript<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">Docker<span class="TechMarquee-module__FsrXLG__separator">◆</span></span><span class="TechMarquee-module__FsrXLG__item">CI/CD<span class="TechMarquee-module__FsrXLG__separator">◆</span></span></div></div><section class="StatsStrip-module__xodaVW__grid"><article class="StatsStrip-module__xodaVW__item glass" style="opacity:0;transform:translateY(14px)"><div class="StatsStrip-module__xodaVW__label">Experience</div><div class="StatsStrip-module__xodaVW__value"><span>0<!-- --> years</span></div></article><article class="StatsStrip-module__xodaVW__item glass" style="opacity:0;transform:translateY(14px)"><div class="StatsStrip-module__xodaVW__label">Delivered</div><div class="StatsStrip-module__xodaVW__value"><span>0<!-- -->+ projects</span></div></article><article class="StatsStrip-module__xodaVW__item glass" style="opacity:0;transform:translateY(14px)"><div class="StatsStrip-module__xodaVW__label">Core stack</div><div class="StatsStrip-module__xodaVW__value">Python · Flutter · Arch</div></article></section><section id="about" class="About-module__vAULUW__section"><div class="About-module__vAULUW__header" style="opacity:0;transform:translateY(18px)"><span class="About-module__vAULUW__kicker"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 6-6 6 6 6"></path><path d="m16 6 6 6-6 6"></path></svg>About</span><h2>About</h2></div><div class="About-module__vAULUW__grid"><p class="About-module__vAULUW__body" style="opacity:0;transform:translateY(18px)">A passionate full-stack developer focused on creating reliable software, modern web services, and cross-platform Android apps using Flutter. I'm passionate about architecture, performance, and the small details that make a product high-quality.</p><ul class="About-module__vAULUW__highlights" style="opacity:0;transform:translateY(18px)"><li class="About-module__vAULUW__highlight">Async FastAPI services with PostgreSQL</li><li class="About-module__vAULUW__highlight">Typed interfaces using Vue.js/Nuxt</li><li class="About-module__vAULUW__highlight">Containerization: dev to production</li><li class="About-module__vAULUW__highlight">Security-minded: JWT, rate limits, nginx configuration</li></ul></div></section><section id="skills"><div class="BentoGrid-module___1KSXG__sectionHeader"><span class="BentoGrid-module___1KSXG__kicker"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3v3"></path><path d="M12 18v3"></path><path d="M3 12h3"></path><path d="M18 12h3"></path><path d="m5.6 5.6 2.2 2.2"></path><path d="m16.2 16.2 2.2 2.2"></path><path d="m18.4 5.6-2.2 2.2"></path><path d="m7.8 16.2-2.2 2.2"></path></svg>Skills</span><h2>Skills</h2></div><div class="BentoGrid-module___1KSXG__skillsGrid"><article class="BentoGrid-module___1KSXG__skillCard glass" style="opacity:0;transform:translateY(18px)"><div class="BentoGrid-module___1KSXG__skillCardHeader"><span class="BentoGrid-module___1KSXG__skillCardIcon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="7" rx="2"></rect><rect x="3" y="13" width="18" height="7" rx="2"></rect><path d="M7 7.5h.01"></path><path d="M7 16.5h.01"></path></svg></span><span class="BentoGrid-module___1KSXG__skillCardTitle">Backend</span></div><div class="BentoGrid-module___1KSXG__skillList"><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Python</span><span class="BentoGrid-module___1KSXG__skillLevel">40<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">FastAPI</span><span class="BentoGrid-module___1KSXG__skillLevel">32<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">PostgreSQL</span><span class="BentoGrid-module___1KSXG__skillLevel">33<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">SQLAlchemy</span><span class="BentoGrid-module___1KSXG__skillLevel">35<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div></div></article><article class="BentoGrid-module___1KSXG__skillCard glass" style="opacity:0;transform:translateY(18px)"><div class="BentoGrid-module___1KSXG__skillCardHeader"><span class="BentoGrid-module___1KSXG__skillCardIcon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"></rect><path d="M3 9h18"></path><path d="M9 9v11"></path></svg></span><span class="BentoGrid-module___1KSXG__skillCardTitle">Frontend</span></div><div class="BentoGrid-module___1KSXG__skillList"><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Vue.js</span><span class="BentoGrid-module___1KSXG__skillLevel">20<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Next.js</span><span class="BentoGrid-module___1KSXG__skillLevel">15<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">TypeScript</span><span class="BentoGrid-module___1KSXG__skillLevel">20<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div></div></article><article class="BentoGrid-module___1KSXG__skillCard glass" style="opacity:0;transform:translateY(18px)"><div class="BentoGrid-module___1KSXG__skillCardHeader"><span class="BentoGrid-module___1KSXG__skillCardIcon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 8 12 3 3 8v8l9 5 9-5z"></path><path d="m3 8 9 5 9-5"></path><path d="M12 13v9"></path></svg></span><span class="BentoGrid-module___1KSXG__skillCardTitle">DevOps</span></div><div class="BentoGrid-module___1KSXG__skillList"><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Arch Linux</span><span class="BentoGrid-module___1KSXG__skillLevel">60<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Debian Linux</span><span class="BentoGrid-module___1KSXG__skillLevel">55<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Docker</span><span class="BentoGrid-module___1KSXG__skillLevel">30<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">CI/CD</span><span class="BentoGrid-module___1KSXG__skillLevel">39<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div></div></article><article class="BentoGrid-module___1KSXG__skillCard glass" style="opacity:0;transform:translateY(18px)"><div class="BentoGrid-module___1KSXG__skillCardHeader"><span class="BentoGrid-module___1KSXG__skillCardIcon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3v3"></path><path d="M12 18v3"></path><path d="M3 12h3"></path><path d="M18 12h3"></path><path d="m5.6 5.6 2.2 2.2"></path><path d="m16.2 16.2 2.2 2.2"></path><path d="m18.4 5.6-2.2 2.2"></path><path d="m7.8 16.2-2.2 2.2"></path></svg></span><span class="BentoGrid-module___1KSXG__skillCardTitle">Other</span></div><div class="BentoGrid-module___1KSXG__skillList"><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Flutter</span><span class="BentoGrid-module___1KSXG__skillLevel">22<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div><div class="BentoGrid-module___1KSXG__skillRow"><div class="BentoGrid-module___1KSXG__skillMeta"><span class="BentoGrid-module___1KSXG__skillName">Git</span><span class="BentoGrid-module___1KSXG__skillLevel">35<!-- -->%</span></div><div class="BentoGrid-module___1KSXG__levelBar"><div class="BentoGrid-module___1KSXG__levelFill" style="width:0px"></div></div></div></div></article></div></section><!--$?--><template id="B:0"></template><section id="projects"><div class="BentoGrid-module___1KSXG__sectionHeader"><span class="BentoGrid-module___1KSXG__kicker"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg>Projects</span><h2>Projects</h2></div><div class="BentoGrid-module___1KSXG__grid"><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span7 glass"><a class="BentoGrid-module___1KSXG__link" href="/en/projects/2"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="The application "Breath"" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ae7f320f94d9428ba7712cd046d652f5.png"/></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass"><a class="BentoGrid-module___1KSXG__link" href="/en/projects/4"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Universal media converter "Transmutia"" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ce29f7fc24794dc5927da421984969e2.png"/></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass"><a class="BentoGrid-module___1KSXG__link" href="/en/projects/1"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Media wall on Astra Linux" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/36ee96e679f14e3a9bb9e1460fb06b51.webp"/></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass"><a class="BentoGrid-module___1KSXG__link" href="/en/projects/3"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Business card website for a web studio" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ef91930607cf434bad7f164ef2211a84.png"/></div></a></article></div></section><!--/$--><section id="contact" class="Contact-module__hcVmEa__section"><div class="Contact-module__hcVmEa__panel glass" style="opacity:0;transform:translateY(22px)"><div class="Contact-module__hcVmEa__glow" aria-hidden="true"></div><div class="Contact-module__hcVmEa__header"><h2>Contact</h2><p class="Contact-module__hcVmEa__cta">Open to ambitious products and long-term collaboration. </p></div><div class="Contact-module__hcVmEa__links"><a href="https://github.com/NormalChelik" target="_blank" rel="noreferrer" class="Contact-module__hcVmEa__linkCard" style="opacity:0;transform:translateY(14px)"><span class="Contact-module__hcVmEa__linkIcon"><svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></span><span class="Contact-module__hcVmEa__linkText"><span class="Contact-module__hcVmEa__linkLabel">GitHub</span><span class="Contact-module__hcVmEa__linkValue">github.com/NormalChelik</span></span><span class="Contact-module__hcVmEa__linkArrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></a><a href="https://t.me/mishganRabotaet" target="_blank" rel="noreferrer" class="Contact-module__hcVmEa__linkCard" style="opacity:0;transform:translateY(14px)"><span class="Contact-module__hcVmEa__linkIcon"><svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"></path></svg></span><span class="Contact-module__hcVmEa__linkText"><span class="Contact-module__hcVmEa__linkLabel">Telegram</span><span class="Contact-module__hcVmEa__linkValue">t.me/mishganRabotaet</span></span><span class="Contact-module__hcVmEa__linkArrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></a><a href="mailto:normalchelik.work@gmail.com" class="Contact-module__hcVmEa__linkCard" style="opacity:0;transform:translateY(14px)"><span class="Contact-module__hcVmEa__linkIcon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="2"></rect><path d="m3 7 9 6 9-6"></path></svg></span><span class="Contact-module__hcVmEa__linkText"><span class="Contact-module__hcVmEa__linkLabel">Email</span><span class="Contact-module__hcVmEa__linkValue">normalchelik.work@gmail.com</span></span><span class="Contact-module__hcVmEa__linkArrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></a></div></div></section></main></div><button type="button" class="ScrollToTop-module__bPaVnG__button " style="--footer-lift:0px" aria-label="Top"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M12 19V5" stroke-linecap="round"></path><path d="m6 11 6-6 6 6" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><footer class="Footer-module__S6Hkya__footer"><div class="Footer-module__S6Hkya__inner"><span class="Footer-module__S6Hkya__brand">Mikhail Sysoev</span><span class="Footer-module__S6Hkya__copy">© <!-- -->2026<!-- --> · <!-- -->All rights reserved</span></div></footer><!--$--><!--/$--><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/_next/static/chunks/3jvkbm-wxvaor.js" id="_R_" async=""></script><div hidden id="S:0"><section id="projects"><div class="BentoGrid-module___1KSXG__sectionHeader"><span class="BentoGrid-module___1KSXG__kicker"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg>Projects</span><h2>Projects</h2></div><div class="BentoGrid-module___1KSXG__grid"><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span7 glass" style="opacity:0;transform:translateY(20px)"><a class="BentoGrid-module___1KSXG__link" data-cursor-label="View" href="/en/projects/2"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="The application "Breath"" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ae7f320f94d9428ba7712cd046d652f5.png"/><span class="BentoGrid-module___1KSXG__imageOverlay"></span><span class="BentoGrid-module___1KSXG__arrowBadge"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div><div class="BentoGrid-module___1KSXG__content"><div class="BentoGrid-module___1KSXG__featured">Featured</div><div class="BentoGrid-module___1KSXG__title">The application "Breath"</div><p class="BentoGrid-module___1KSXG__description">An application for breathing training and tracking breathing statistics.</p><div class="BentoGrid-module___1KSXG__stack"><span class="BentoGrid-module___1KSXG__chip">Flutter</span><span class="BentoGrid-module___1KSXG__chip">SQL</span><span class="BentoGrid-module___1KSXG__chip">Git</span><span class="BentoGrid-module___1KSXG__chip">Android</span></div><div class="BentoGrid-module___1KSXG__meta"><span class="BentoGrid-module___1KSXG__readMore">View case study<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass" style="opacity:0;transform:translateY(20px)"><a class="BentoGrid-module___1KSXG__link" data-cursor-label="View" href="/en/projects/4"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Universal media converter "Transmutia"" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ce29f7fc24794dc5927da421984969e2.png"/><span class="BentoGrid-module___1KSXG__imageOverlay"></span><span class="BentoGrid-module___1KSXG__arrowBadge"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div><div class="BentoGrid-module___1KSXG__content"><div class="BentoGrid-module___1KSXG__title">Universal media converter "Transmutia"</div><p class="BentoGrid-module___1KSXG__description">Transmutia is a Python-based desktop application designed for batch converting media files, encompassing audio, video, and images. Featuring a multilingual GUI with customizable themes, the app relies on FFmpeg to process dozens of media formats.</p><div class="BentoGrid-module___1KSXG__stack"><span class="BentoGrid-module___1KSXG__chip">PyQt6</span><span class="BentoGrid-module___1KSXG__chip">ffmpeg</span><span class="BentoGrid-module___1KSXG__chip">Git</span></div><div class="BentoGrid-module___1KSXG__meta"><span class="BentoGrid-module___1KSXG__readMore">View case study<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass" style="opacity:0;transform:translateY(20px)"><a class="BentoGrid-module___1KSXG__link" data-cursor-label="View" href="/en/projects/1"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Media wall on Astra Linux" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/36ee96e679f14e3a9bb9e1460fb06b51.webp"/><span class="BentoGrid-module___1KSXG__imageOverlay"></span><span class="BentoGrid-module___1KSXG__arrowBadge"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div><div class="BentoGrid-module___1KSXG__content"><div class="BentoGrid-module___1KSXG__title">Media wall on Astra Linux</div><p class="BentoGrid-module___1KSXG__description">Astra Linux-based media wall management system. This is a centralized solution for managing content on large screens (media walls) in business centers.</p><div class="BentoGrid-module___1KSXG__stack"><span class="BentoGrid-module___1KSXG__chip">FastAPI</span><span class="BentoGrid-module___1KSXG__chip">Vue.js/Vite</span><span class="BentoGrid-module___1KSXG__chip">xdotool</span><span class="BentoGrid-module___1KSXG__chip">Git</span></div><div class="BentoGrid-module___1KSXG__meta"><span class="BentoGrid-module___1KSXG__readMore">View case study<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div></div></a></article><article class="BentoGrid-module___1KSXG__card BentoGrid-module___1KSXG__span5 glass" style="opacity:0;transform:translateY(20px)"><a class="BentoGrid-module___1KSXG__link" data-cursor-label="View" href="/en/projects/3"><div class="BentoGrid-module___1KSXG__imageWrap"><img alt="Business card website for a web studio" loading="lazy" decoding="async" data-nimg="fill" class="BentoGrid-module___1KSXG__image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/api/media/ef91930607cf434bad7f164ef2211a84.png"/><span class="BentoGrid-module___1KSXG__imageOverlay"></span><span class="BentoGrid-module___1KSXG__arrowBadge"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div><div class="BentoGrid-module___1KSXG__content"><div class="BentoGrid-module___1KSXG__title">Business card website for a web studio</div><p class="BentoGrid-module___1KSXG__description">Business card website for the web studio, built with Vue.js and FastAPI to effectively capture client leads for software and web development.</p><div class="BentoGrid-module___1KSXG__stack"><span class="BentoGrid-module___1KSXG__chip">Vue.js</span><span class="BentoGrid-module___1KSXG__chip">FastAPI</span><span class="BentoGrid-module___1KSXG__chip">Docker</span><span class="BentoGrid-module___1KSXG__chip">Nginx</span></div><div class="BentoGrid-module___1KSXG__meta"><span class="BentoGrid-module___1KSXG__readMore">View case study<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span></div></div></a></article></div><nav class="ProjectPagination-module__Ef6Vwq__pagination" aria-label="Projects pagination"><button type="button" class="ProjectPagination-module__Ef6Vwq__navButton" disabled="" aria-label="Previous page"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"></path><path d="m12 19-7-7 7-7"></path></svg></button><div class="ProjectPagination-module__Ef6Vwq__center"><div class="ProjectPagination-module__Ef6Vwq__dotRail" role="tablist"><span class="ProjectPagination-module__Ef6Vwq__dotActive" aria-hidden="true"></span><button type="button" role="tab" class="ProjectPagination-module__Ef6Vwq__dotSlot" aria-label="Page 1" aria-selected="true"><span class="ProjectPagination-module__Ef6Vwq__dotIdle"></span></button><button type="button" role="tab" class="ProjectPagination-module__Ef6Vwq__dotSlot" aria-label="Page 2" aria-selected="false"><span class="ProjectPagination-module__Ef6Vwq__dotIdle"></span></button></div><div class="ProjectPagination-module__Ef6Vwq__progressTrack" aria-hidden="true"><span class="ProjectPagination-module__Ef6Vwq__progressFill" style="transform-origin:0% 50%"></span></div></div><div style="display:inline-flex;transform:none"><button type="button" class="ProjectPagination-module__Ef6Vwq__navButton" aria-label="Next page" tabindex="0"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div><span class="srOnly" aria-live="polite">Page 1 of 2</span></nav></section></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[71829,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"MotionProvider\"]\n3:I[49605,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"ScrollRestoration\"]\n4:I[46083,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"ScrollProgress\"]\n5:I[62438,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"CustomCursor\"]\n6:I[39756,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"default\"]\n8:I[29306,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/0mit976btqau-.js\"],\"default\"]\na:I[97367,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"OutletBoundary\"]\nb:\"$Sreact.suspense\"\nd:I[97367,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"ViewportBoundary\"]\nf:I[97367,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"MetadataBoundary\"]\n11:I[68027,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"default\",1]\n12:I[56474,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"GlassHeader\"]\n13:I[56253,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"PageTransition\"]\n14:I[32177,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"Hero\"]\n15:I[3426,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"TechMarquee\"]\n16:I[93310,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"StatsStrip\"]\n17:I[55786,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"About\"]\n18:I[58131,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/c"])</script><script>self.__next_f.push([1,"hunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"SkillsBento\"]\n19:I[58131,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"ProjectsBento\"]\n1d:I[75854,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"Contact\"]\n1e:I[36621,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"SiteChrome\"]\n1f:I[13642,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\",\"/_next/static/chunks/1jthnjevn66gz.js\",\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"/_next/static/chunks/3jppfuxdmomdu.js\"],\"Footer\"]\n20:I[27201,[\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"/_next/static/chunks/0vbn88u86wcxq.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\",\"/_next/static/chunks/2d8jylyytl8if.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/27z4f8i9jie28.css\",\"style\"]\n:HL[\"/_next/static/chunks/0012_qh64u7ae.css\",\"style\"]\n:HL[\"/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/9c72aa0f40e4eef8-s.p.1y4-pdgsjb-pw.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/cc545e633e20c56d-s.p.176arc174-8zp.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/chunks/2t0dapo9mlfwd.css\",\"style\"]\n:HL[\"/_next/static/chunks/1ncpxlyl5wtgc.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"en\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"locale\",\"en\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/27z4f8i9jie28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3jd57l1dfwr2j.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0vbn88u86wcxq.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/14mrh2-p_w84d.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/2d8jylyytl8if.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"inter_555e3567-module__4Pg6na__variable jetbrains_mono_caec978f-module__lUICVW__variable\",\"data-scroll-behavior\":\"smooth\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L8\",null,{}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0012_qh64u7ae.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[[\"$\",\"div\",null,{\"className\":\"AmbientGlow-module__7n_5vW__root\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"span\",null,{\"className\":\"AmbientGlow-module__7n_5vW__orb AmbientGlow-module__7n_5vW__orbLeft\"}],[\"$\",\"span\",null,{\"className\":\"AmbientGlow-module__7n_5vW__orb AmbientGlow-module__7n_5vW__orbRight\"}]]}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L9\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2t0dapo9mlfwd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1ncpxlyl5wtgc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1jthnjevn66gz.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2fkidbb3jv0tu.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/3jppfuxdmomdu.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@c\"}]}]]}],{},null,false,null]},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/27z4f8i9jie28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"aRuYParKr4CaHwkvseQ5P\"}\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#060f0c\"}]]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"$L12\",null,{\"locale\":\"en\",\"brand\":\"Mikhail Sysoev\",\"logoUrl\":\"\"}],[\"$\",\"$L13\",null,{\"children\":[\"$\",\"main\",null,{\"children\":[[\"$\",\"$L14\",null,{\"locale\":\"en\",\"name\":\"Mikhail Sysoev\",\"title\":\"Junior Full-Stack Developer\",\"greeting\":\"I create and launch software, web services, and Android apps. I love learning new technologies and turning bold ideas into working code!\",\"terminalPrompt\":\"fetch-profile\",\"terminalOutput\":\" /\\\\\\\\ ROLE: Junior Developer\\n / \\\\\\\\ LANG: Python\\n / \\\\\\\\ WEB: FastAPI\\n / \\\\\\\\ MOBILE: Flutter\\n / ,, \\\\\\\\ DATA: SQL\\n / | | \\\\\\\\ INFRA: Docker\\n /_-'' ''-_\\\\\\\\ STATUS: SYSTEMS ONLINE _\"}],[\"$\",\"$L15\",null,{\"items\":[\"Vue.js\",\"Arch Linux\",\"Debian Linux\",\"Flutter\",\"Git\",\"Python\",\"FastAPI\",\"PostgreSQL\",\"SQLAlchemy\",\"Next.js\",\"TypeScript\",\"Docker\",\"CI/CD\"]}],[\"$\",\"$L16\",null,{\"locale\":\"en\",\"experience\":\"2 years\",\"projects\":\"6+ projects\",\"stack\":\"Python · Flutter · Arch\"}],[\"$\",\"$L17\",null,{\"locale\":\"en\",\"body\":\"A passionate full-stack developer focused on creating reliable software, modern web services, and cross-platform Android apps using Flutter. I'm passionate about architecture, performance, and the small details that make a product high-quality.\",\"highlights\":[\"Async FastAPI services with PostgreSQL\",\"Typed interfaces using Vue.js/Nuxt\",\"Containerization: dev to production\",\"Security-minded: JWT, rate limits, nginx configuration\"]}],[\"$\",\"$L18\",null,{\"locale\":\"en\",\"skills\":[{\"id\":5,\"name\":\"Vue.js\",\"category\":\"frontend\",\"level\":20,\"icon_slug\":\"\"},{\"id\":10,\"name\":\"Arch Linux\",\"category\":\"devops\",\"level\":60,\"icon_slug\":\"\"},{\"id\":11,\"name\":\"Debian Linux\",\"category\":\"devops\",\"level\":55,\"icon_slug\":\"\"},{\"id\":12,\"name\":\"Flutter\",\"category\":\"other\",\"level\":22,\"icon_slug\":\"\"},{\"id\":13,\"name\":\"Git\",\"category\":\"other\",\"level\":35,\"icon_slug\":\"\"},{\"id\":7,\"name\":\"Python\",\"category\":\"backend\",\"level\":40,\"icon_slug\":\"python\"},{\"id\":9,\"name\":\"FastAPI\",\"category\":\"backend\",\"level\":32,\"icon_slug\":\"fastapi\"},{\"id\":2,\"name\":\"PostgreSQL\",\"category\":\"backend\",\"level\":33,\"icon_slug\":\"postgres\"},{\"id\":3,\"name\":\"SQLAlchemy\",\"category\":\"backend\",\"level\":35,\"icon_slug\":\"sqlalchemy\"},{\"id\":4,\"name\":\"Next.js\",\"category\":\"frontend\",\"level\":15,\"icon_slug\":\"nextjs\"},{\"id\":1,\"name\":\"TypeScript\",\"category\":\"frontend\",\"level\":20,\"icon_slug\":\"typescript\"},{\"id\":6,\"name\":\"Docker\",\"category\":\"devops\",\"level\":30,\"icon_slug\":\"docker\"},{\"id\":8,\"name\":\"CI/CD\",\"category\":\"devops\",\"level\":39,\"icon_slug\":\"cicd\"}]}],[\"$\",\"$L19\",null,{\"locale\":\"en\",\"projects\":[{\"id\":2,\"slug\":\"breath-app\",\"title\":\"The application \\\"Breath\\\"\",\"description\":\"An application for breathing training and tracking breathing statistics.\",\"body\":\"A Flutter-based Android application designed for continuous monitoring of heart rate, oxygen saturation (SpO2), and respiration rate during workouts using external sensors. The app features highly customizable training sessions, comprehensive statistical tracking over any time period, and data export capabilities.\",\"image_url\":\"/api/media/ae7f320f94d9428ba7712cd046d652f5.png\",\"stack\":[\"Flutter\",\"SQL\",\"Git\",\"Android\"],\"project_url\":\"\",\"repo_url\":\"\",\"featured\":true},{\"id\":4,\"slug\":\"app-transmutia\",\"title\":\"Universal media converter \\\"Transmutia\\\"\",\"description\":\"Transmutia is a Python-based desktop application designed for batch converting media files, encompassing audio, video, and images. Featuring a multilingual GUI with customizable themes, the app relies on FFmpeg to process dozens of media formats.\",\"body\":\"Transmutia is a versatile desktop media converter developed in Python using the PySide6 graphical framework. The primary goal of the project was to build a user-friendly and modern interface for the batch transcoding of a vast array of audio, video, and image files by harnessing the processing power of FFmpeg. The application automatically categorizes input files by their extensions and allows users to individually select the target format for each item in the conversion queue. Key features of the product include full localization support, dynamic UI themes (light, dark, and system defaults). The project architecture includes flexible build configurations, allowing developers to compile the source code into a standalone binary or executable file using Nuitka (the recommended method) or PyInstaller. This ensures straightforward deployment across Windows, Linux, and macOS environments.\",\"image_url\":\"/api/media/ce29f7fc24794dc5927da421984969e2.png\",\"stack\":[\"PyQt6\",\"ffmpeg\",\"Git\"],\"project_url\":\"https://github.com/NormalChelik/Transmutia/releases\",\"repo_url\":\"https://github.com/NormalChelik/Transmutia\",\"featured\":false},{\"id\":1,\"slug\":\"media-wall-astra\",\"title\":\"Media wall on Astra Linux\",\"description\":\"Astra Linux-based media wall management system. This is a centralized solution for managing content on large screens (media walls) in business centers.\",\"body\":\"A major media systems vendor faced the need to centrally manage dynamic content on media walls across business centers. The client required a solution to promptly update information—such as advertisements, news, and navigation—while offering flexible display scheduling and ensuring stable operation within the secure Astra Linux environment. The delivered product provides a centralized management interface for creating detailed media wall control scenarios, utilizing dynamic templates with responsive design tailored for various screen resolutions. To ensure proper distributed playback, the system synchronizes content and window positions via the wmctrl utility, and features seamless integration with external sources and applications, including media players, Okular, ONLYOFFICE, and web browsers.\",\"image_url\":\"/api/media/36ee96e679f14e3a9bb9e1460fb06b51.webp\",\"stack\":[\"FastAPI\",\"Vue.js/Vite\",\"xdotool\",\"Git\",\"Docker\"],\"project_url\":\"\",\"repo_url\":\"\",\"featured\":false},{\"id\":3,\"slug\":\"site-ikm-soft\",\"title\":\"Business card website for a web studio\",\"description\":\"Business card website for the web studio, built with Vue.js and FastAPI to effectively capture client leads for software and web development.\",\"body\":\"A business card website for ICM SOFT studio, which combines a reactive user interface built on Vue.js and a high-performance asynchronous backend built on FastAPI, packaged in Docker containers for reliable deployment, created a tool for showcasing the company's services and managing incoming requests.\",\"image_url\":\"/api/media/ef91930607cf434bad7f164ef2211a84.png\",\"stack\":[\"Vue.js\",\"FastAPI\",\"Docker\",\"Nginx\"],\"project_url\":\"\",\"repo_url\":\"\",\"featured\":false},{\"id\":6,\"slug\":\"video-player-guitar\",\"title\":\"Video player for guitar lessons\",\"description\":\"A cross-platform video player for guitar lessons built with FastAPI and Jinja, featuring private link generation for students, playback speed control, and custom segment looping for convenient practice.\",\"body\":\"Developed using FastAPI and Jinja, this adaptive video player for a guitar learning platform provides teachers with a convenient tool for uploading lessons and providing links, while students can comfortably practice from any device, using speed adjustments and looping features for complex video sections to maximize learning effectiveness.\",\"image_url\":\"/api/media/4459a996a237465c974381d24cade970.png\",\"stack\":[\"FastAPI\",\"Jinja2\",\"JS\",\"CSS\",\"HTML\"],\"project_url\":\"\",\"repo_url\":\"\",\"featured\":false},{\"id\":5,\"slug\":\"hotel-kiosk\",\"title\":\"Kiosk app for hotels\",\"description\":\"An Android-based kiosk application designed for hotel guests, serving as an interactive information system for ordering room service and booking city guides.\",\"body\":\"The primary objective of this project was to develop a user-friendly and secure information system for hotel guests, enabling seamless room service ordering and city guide reservations. The delivered solution is an Android application designed to operate exclusively in kiosk mode, utilizing a proprietary system to restrict unauthorized access to device settings. The project features a hybrid architecture: the backend and user interface are built as a comprehensive web application using Python (FastAPI, Jinja templates) and a PostgreSQL database, which is deeply integrated into a native Kotlin Android shell. This architectural strategy was chosen to maximize post-launch flexibility. By embedding a web application rather than building purely native screens, the client was empowered to independently modify the design, content, and specific functionalities long after the development phase was completed, completely bypassing the standard, time-consuming process of rolling out native Android updates.\",\"image_url\":\"/api/media/c808ec504f8544ae931fe64383dbbed8.webp\",\"stack\":[\"FastAPI\",\"Jinja\",\"PostgreSQL\",\"Kotlin\",\"Android\"],\"project_url\":\"\",\"repo_url\":\"\",\"featured\":false}]}],\"$L1a\"]}]}],\"$L1b\",\"$L1c\"]\n"])</script><script>self.__next_f.push([1,"1a:[\"$\",\"$L1d\",null,{\"locale\":\"en\",\"contacts\":{\"github\":\"https://github.com/NormalChelik\",\"telegram\":\"https://t.me/mishganRabotaet\",\"email\":\"normalchelik.work@gmail.com\",\"linkedin\":\"\"},\"cta\":\"Open to ambitious products and long-term collaboration. \"}]\n1b:[\"$\",\"$L1e\",null,{\"locale\":\"en\"}]\n1c:[\"$\",\"$L1f\",null,{\"locale\":\"en\",\"brand\":\"Mikhail Sysoev\"}]\nc:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"Mikhail Sysoev — Portfolio\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Developer portfolio\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/logo.svg\"}],[\"$\",\"$L20\",\"5\",{}]]\n"])</script></body></html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Не найдено
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 0 оптимально.
На странице присутствуют изображения 9.
Внешние ссылки
Кол-во: 2
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 2 оптимально.
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| github.com |
<span class="Contact-module__hcVmEa__linkIcon"><svg width="22" height="22" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></span><span class="Contact-module__hcVmEa__linkText"><span class="Contact-module__hcVmEa__linkLabel">GitHub</span><span class="Contact-module__hcVmEa__linkValue">github.com/NormalChelik</span></span><span class="Contact-module__hcVmEa__linkArrow"><svg width="16" height="16" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span>
|
Анализировать url |
| t.me |
<span class="Contact-module__hcVmEa__linkIcon"><svg width="22" height="22" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"></path></svg></span><span class="Contact-module__hcVmEa__linkText"><span class="Contact-module__hcVmEa__linkLabel">Telegram</span><span class="Contact-module__hcVmEa__linkValue">t.me/mishganRabotaet</span></span><span class="Contact-module__hcVmEa__linkArrow"><svg width="16" height="16" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M8 7h9v9"></path></svg></span>
|
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ФЗ-152: ПД Готовность: 40%
РКН
ОК
Сайт не заблокирован
Контакты
https://mikhailsysoev.ru/contacts/
Страница с контактами найдена
Политика ПД
https://mikhailsysoev.ru/policy/
Страница политики обработки ПД найдена
Согласие
https://mikhailsysoev.ru/personal/
Страница согласия на обработку ПД найдена
Чекбокс согласия
Не найден
Чекбокс согласия на обработку ПД в формах сайта не найден
Счётчики до согласия
ОК
Счётчики аналитики не собирают данные до согласия пользователя
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Оптимизация сайта lobsterslippers.ru выполнена всего на 54%. Чтобы исправить ситуацию и попасть в ТОП необходимо:
Постарайтесь исправить общие ошибки.
Исправьте ошибки в мета-тегах.
Исправьте ошибки индексации.
Поделитесь с друзьями: