diogendev

diogen(dev)Разработчик полного цикла

Десктоп, Android и веб: от схемы данных до боевого домена.

Пять лет в разработке, основной язык Python. Проекты в портфолио сделаны целиком одним человеком: модель данных, интерфейс, сборка, деплой.

5
лет в разработке
8
проектов в портфолио
4
платформы: Windows, Android, веб, Telegram
1
человек на всю цепочку работ

Избранные работы

Seconder, экран обзора со статистикой за период

Seconder

Windows 10 / 11

Архитектура хранения, интерфейс на Qt, сбор данных через WinAPI

Трекер экранного времени, который считает по окну в фокусе, а не по списку процессов. Время складывается в почасовые корзины «приложение + день + час», поэтому за год база остаётся в тысячах строк, а любой график собирается одним запросом.

1
запрос на любой график
тыс.
строк в базе за год вместо миллионов
0
обращений в сеть
  • Python
  • PySide6 / Qt 6
  • SQLite
  • WinAPI
Seconder for Android, экран обзораSeconder for Android, экран статистикиSeconder for Android, экран настроек

Seconder for Android

Android 8.0+

Перенос модели данных на Kotlin, экраны на Compose, фоновая синхронизация

Мобильная версия трекера с той же моделью данных и теми же графиками. Вместо собственной службы опроса читает системный журнал через UsageStatsManager, а фоновая задача раз в три часа переносит события в свою базу, пока система их не удалила.

3 ч
шаг фоновой выгрузки
1
модель данных на две платформы
  • Kotlin
  • Jetpack Compose
  • SQLite
  • WorkManager
Париста, первый экран

Париста

Веб · лендинг бутика

Дизайн и вёрстка с нуля, металлическая типографика, интеграция карт

Второй подход к той же задаче в противоположной эстетике: обсидиан, платина, матовые панели с волосяной гранью и ни одной общей детали с предыдущим магазином. Заголовок залит металлическим градиентом через background-clip, блик ходит за курсором, а виджет Яндекс.Карт перекрашен инверсией с поворотом тона, чтобы сесть в тёмную палитру.

2
эстетики на одну задачу
0
общих деталей с первым магазином
  • Next.js 15
  • TypeScript
  • CSS Modules
ЗаПаром, первый экран

ЗаПаром

Веб · лендинг магазина

Вёрстка, дым на холсте, восстановление состояний до первой отрисовки

Вейп-шоп с подтверждением возраста, куки-баром и сменой тем: все три состояния восстанавливает инлайновый скрипт в head до первой отрисовки, поэтому окно 18+ не мигает тому, кто его уже закрыл. Дым на первом экране это холст с частицами: клуб рисуется шумом в четыре октавы один раз в офскрин и дальше только копируется, иначе сорок градиентов за кадр съедают весь бюджет.

4
октавы шума в спрайте дыма
1
отрисовка клуба вместо сорока за кадр
  • Next.js 15
  • TypeScript
  • Canvas
  • CSS Modules
Мистер Хлеб, первый экран

Мистер Хлеб

Веб · лендинг и магазин

Витрина, фильтры, корзина и оформление без серверной части

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

28
позиций в витрине
0
серверных обработчиков
  • Next.js 15
  • TypeScript
  • CSS Modules
Зубной Король, первый экран

Зубной Король

Веб · лендинг клиники

Две языковые версии, режим для слабовидящих, прайс аккордеоном

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

2
языковые версии из одной сборки
1
атрибут переключает весь режим доступности
  • Next.js 15
  • TypeScript
  • CSS Modules
YouTube Downloader, главное окно в тёмной теме

YouTube Downloader

Windows 10 / 11

Загрузка и склейка дорожек, свои виджеты, встроенный проигрыватель

Загрузчик до 2160p60: видео и звук на YouTube лежат раздельно, и всё выше 360p требует склейки через ffmpeg, который программа находит сама. Предпросмотр работает через локальный сервер на 127.0.0.1: прямое открытие embed YouTube отклоняет ошибкой 153.

2160p60
потолок загрузки
1
exe на чистой системе
  • Python
  • wxPython
  • yt-dlp
  • ffmpeg

Это портфолио

Веб · Vercel

Дизайн, вёрстка, политика безопасности, деплой

Статический лендинг: страница собирается на этапе сборки и отдаётся с CDN, серверных обработчиков и форм нет. Ни одного обращения к стороннему домену: шрифты вшиты через next/font, поэтому политика безопасности начинается с default-src 'none'.

0
запросов на сторонние домены
none
значение default-src в политике
  • Next.js 15
  • TypeScript
  • CSS Modules

Чем работаю

Языки

  • Python
  • Kotlin
  • TypeScript
  • JavaScript
  • SQL
  • C++
  • C#

Фреймворки и библиотеки

  • Next.js
  • React
  • Node.js
  • Jetpack Compose
  • PySide6 / Qt
  • wxPython
  • aiogram

Данные и инструменты

  • SQLite
  • Redis
  • Git
  • Android Studio
  • PyInstaller
  • ffmpeg
  • Vercel

Путь в разработке

  1. 2026

    Seconder: десктоп и Android

    Python · Kotlin · SQLite

    • Две версии трекера экранного времени на общей модели данных и с одинаковыми графиками.
    • Почасовые корзины вместо журнала событий: за год база держится в тысячах строк, а не в миллионах.
    • Шесть палитр, свои обои, экспорт в CSV. Ни одно из двух приложений в сеть не ходит.
  2. 2026

    YouTube Downloader

    Python · wxPython · yt-dlp

    • Загрузка до 2160p60 со склейкой раздельных дорожек через ffmpeg.
    • Встроенный проигрыватель на WebView2 через локальный сервер на 127.0.0.1.
    • Свои виджеты на wx.GraphicsContext: нативные контролы Windows игнорируют цвета тёмной темы.
  3. с 2024

    Python как основной язык

    Python · SQLite · Redis · aiogram

    • Десктопные приложения на Qt и wxPython, телеграм-боты и мини-аппы.
    • Схемы хранения проектирую с запасом на рост данных.
  4. с 2021

    Начало в разработке

    C++ · C# · HTML · JavaScript

    • Начинал с C-подобного синтаксиса, оттуда ушёл в веб и TypeScript.

Что беру в работу

  • Python · aiogram · SQLite · Redis

    Телеграм-боты и мини-аппы

    Приём заявок, каталог, оплата внутри мессенджера. Подключаю чужие API и пишу свои.

    На выходеБот на вашем сервере, исходники, инструкция по запуску

  • Next.js 15 · TypeScript · CSS Modules

    Лендинги и витрины

    Статическая сборка без серверных обработчиков: страница отдаётся с CDN и не падает от нагрузки.

    На выходеСайт на боевом домене, тексты правятся в одном файле

  • Python · Qt 6 · wxPython · PyInstaller

    Десктоп под Windows

    Нестандартное окно, свои виджеты и темы, работа в трее. Нативные контролы под тёмную тему не красятся, поэтому рисую их сам.

    На выходеОдин exe, который запускается на чистой системе

  • Kotlin · Jetpack Compose · SQLite · WorkManager

    Android и модель данных

    Схему хранения проектирую с запасом на рост: почасовые корзины вместо журнала событий держат базу в тысячах строк, а не в миллионах.

    На выходеAPK, схема базы и разбор, почему она такая