javascript

Как я в 16 лет создал свой Pomodoro-таймер: месяц дисциплины и первые пользователи из 7 стран

  • понедельник, 16 февраля 2026 г. в 00:00:05
https://habr.com/ru/articles/996734/

Мне 16 лет. Последние 8 месяцев я учусь на Frontend-разработчика. Я решил проверить свои силы и создать инструмент, которым буду пользоваться сам. Но мой путь начался не с мощного ПК и гигабайтов интернета, а с мечты и обычного смартфона.

Начало пути: код на телефоне и первая победа

Мой путь в программировании начался 26 декабря 2024 года. Это была мечта, к которой я шел 5 лет. На тот момент я был «полным нулем»: у меня не было стабильного интернета и я почти ничего не знал о Frontend. Я записался на курсы, даже не до конца понимая, что это такое.

Первые две недели у меня не было ноутбука, и я писал свой первый код прямо на телефоне. Только спустя время у меня появился ноутбук и нормальный доступ к сети, чтобы узнать: что такое Frontend и какие задачи он решает?

Через 4 месяца обучения (апрель 2025*) пришло время отчетного проекта. Нужно было создать серьезную работу, показать её родителям и получить сертификат. Я выбрал тему «Магазин приложений для Windows» и завершил её на отлично.

Перед самой завершением я помогал ребятам из группы: объяснял, как сделать адаптивный сайт и настроить ссылки. В итоге, при голосовании за лучший проект, группа выбрала меня. Академия оценила мой вклад и дала скидку 15% на следующий курс по JavaScript.

Погружение в JavaScript. С 20 июня 2025 года* началось мое глубокое изучение JS. Именно здесь я понял, что хочу создать что-то по-настоящему работающее. Следующие 4 месяца (с июня по октябрь) я полностью погрузился в JavaScript. Одной из самых сложных и интересных задач для меня стало создание админ-панели.

Я реализовал полноценное управление контентом с помощью json-server. Это был мой первый опыт работы с имитацией бэкенда:

  • Я научился отправлять запросы (GET, POST, PATCH, DELETE).

  • Понял, как динамически получать данные из JSON-файла на страницу.

  • Реализовал формы добавления и редактирования товаров/записей.

Именно тогда я осознал: программирование — это не просто "красивые кнопки", а управление информацией. Но работа с json-server требовала постоянного интернета для установки зависимостей через npm, а у меня с этим были трудности.

Работа с админом и json-server дала мне понимание того, как данные текут от пользователя к базе. Но был один нюанс: для разработки таких проектов нужен стабильный интернет и постоянно запущенный локальный сервер.

В моих условиях (когда интернет — это роскошь, а видео с Ulbi TV приходится скачивать заранее и смотреть оффлайн) я захотел создать что-то максимально автономное, легкое и полезное.

Так родилась идея FocusMind.

Я часто ловил себя на том, что во время оффлайн-учебы легко потерять счет времени. Мне нужен был инструмент, который помогал бы мне держать фокус, но при этом:

  1. Работал бы прямо в браузере без установки лишних программ.

  2. Не требовал бы постоянного соединения с интернетом.

  3. Был бы написан на чистом JavaScript (Vanilla JS), чтобы я мог досконально разобраться в логике работы таймеров и интервалов.

Работа с админ на json-server научила меня базе, но мне хотелось чего-то более автономного. Чего-то, что работало бы без лишних зависимостей и интернета.

Весь следующий месяц я жил в режиме жесткой дисциплины. Каждый день я выделял по 2–4 часа, отключал уведомления (хотя не было интернета), откладывал скачанные лекции и просто писал код, надеясь изменить свою жизнь в лучшую сторону и стать тем, кем мечтает стать каждый, кто нашел свое призвание.

В процессе разработки я столкнулся с тем, что мой код начал превращаться в бесконечный список однотипных строк. Каждый раз нужно было обращаться к DOM-дереву, создавать переменную и писать длинное:const element = document.getElementById("ID");

Один забытый символ или кавычка — и всё летит в корзину. А когда элементов десятки, искать ошибку становится мучением. Чтобы не сойти с ума и сократить количество лишнего кода, я написал себе маленькую "выручалочку":

<source lang="javascript">const $ = (id) => document.getElementById(id);</source>

Теперь вместо громоздких конструкций я пишу просто $("timer"). Это не только сэкономило мне время, но и сделало код читаемым. Маленький шаг для программирования, но большой шаг для моей продуктивности в оффлайн.

Инструменты меняются. Раньше искали в книгах, потом в Google, теперь — у ИИ. Главное — это результат и понимание процесса. FocusMind доказал мне, что даже в 16 лет можно управлять сложной разработкой, используя все доступные ресурсы как ИИ.

Выход в онлайн и первые пользователи

Когда проект был отполирован, наступил самый волнительный момент. Я оплатил интернет-тариф, вышел в сеть и загрузил код на GitHub Pages.

Когда я проснулся и открыл панель аналитики, я замер. 37 активных пользователей за первые 24 часа.

Для опытных стартаперов это капля в море, но для меня это была целая стадионная трибуна. Я начал изучать географию посещений, и она меня поразила. Мой код, написанный в тишине и без интернета, открывали люди из:

  • России (11 человек)

  • Беларуси (7 человек)

  • Таджикистана (6 человек)

  • Украины (4 человека)

  • Франции, Кыргызстана и Казахстана.

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

Этот первый успех стал для меня лучшим ответом на все сомнения. Да, я использовал ИИ как напарника, да, я учился по скачанным видео, но в итоге — система работает, и люди ею пользуются.

Но настоящий драйв начался, когда полетели первые отзывы. Я скинул ссылку в чаты, где сидят опытные ребята, и получил холодный душ из баг-репортов.

Что пошло не так:

  1. Баг с таймером: Один из пользователей заметил, что если запустить таймер, перейти на страницу лицензий и вернуться — время замирает на отметке 49:45. Это был отличный урок по жизненному циклу приложения и тому, как ведут себя скрипты при переключении вкладок.

  2. UX-путаница: Админ одной из групп сначала не понял, как сбросить состояние, и только потом нашел кнопку "Сбросить стили". Это показало мне, что интерфейс должен быть интуитивно понятным без подсказок.

Мои выводы: Вместо того чтобы расстроиться, я обрадовался. Живые люди тыкают в мой код, находят в нем слабые места и тратят время, чтобы написать мне об этом!

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

Я тут же завел список задач (Backlog) на исправление:

  • Починить логику таймера при переходе между страницами.

  • Сделать сброс стилей более заметным и логичным.

  • Добавить звуковые уведомления, о которых просили пользователи.

Теперь мой план на день — это не просто учеба, а работа над реальными ошибками, которые нашли мои первые 37 пользователей.

Мой Telegram

FocusMind