![](https://habrastorage.org/getpro/habr/upload_files/f87/80d/96b/f8780d96bd2b0d44970afa7913d8f921.png)
Основной посыл этого поста - рассказать о развитии своей старой идеи, которая переделывалась несколько раз, и прошла путь от простой кривой WinForm до полноценного кросс-платформенного приложения на Electron'e.
У меня нет цели прорекламировать программу (хоть она бесплатная, без подписок и рекламы), поэтому я не буду оставлять ссылки на скачивание, просмотр, но если это разрешено - отвечу на подобные вопросы в комментариях.
Начало
Всем привет, расскажу про создание собственного трекера времени. Я около пяти лет работал на фрилансе (делал модификации для игр на Unity C#).
Модель оплаты всегда была очень простой, обсуждение заказа, обсуждение стоимости, 50% предоплата, демонстрация работы, окончательный платёж, всё просто, да?
Действительно это так, но я постоянно замечал за собой черту, которая присуща, наверно, всем разработчикам - лень. Поработал часик, пошёл отдыхать, потом ещё часик и так далее. Однако, на самом деле - отдыха не было, ты сидишь этот час с мыслями "блин, нужно работать".
Получалось как обычно, сроки - неделя, 30 часов из 40 заложенных сидишь перед компьютером с мыслями "ух, работаю", по факту - реальной работы 20 часов.
В чём идея?
Я просто хотел посчитать, сколько по настоящему стоит час моего времени. Ибо проект с оплатой 40 т.р., который ты делаешь месяц потому, что ленишься, и другой проект с такой же оплатой, но сделанный быстро - повышает стоимость часа.
![](https://habrastorage.org/getpro/habr/upload_files/b62/0f7/0cf/b620f70cf246b64a7bc42ef093a45326.png)
Идея в создании программы, в которой ты буквально видишь, как каждая минута простоя - лишает тебя денег.
С чего всё началось?
![](https://habrastorage.org/getpro/habr/upload_files/c26/a38/ee2/c26a38ee20cea92a7fa3e1ba57a16720.jpeg)
Так в 2016 выглядела первая версия того, о создании чего я рассказываю.
Она делала ровно то, на что мне хватило тогда навыков:
• Хранило список полученных и выполненых заказов
• Сохраняло список клиентов, которые делали заказы
• Умело считать общую прибыль от заказов
Но я её забросил, потому что не получил от неё то, чего ожидал. Чуть позже я опубликовал её исходники в открытом доступе на гитхабе.
На этом всё?
Нет, через ещё годик я полез в разработку на NodeJS, и, как первый проект, я решил реализовать опять трекер заказов.
![Так это выглядело Так это выглядело](https://habrastorage.org/getpro/habr/upload_files/07d/fd7/3ed/07dfd73ed8d673612191fe42f94a70b3.png)
Собственно, тут уже всё было "по взрослому", база данных, команды, поддержка реквизитов (со статистикой по каждой карточке), возможность демонстрировать заказчикам прогресс выполнения (по публичной ссылке)
Но, я опять перестал ей пользоваться, мне снова чего-то не хватало, но я всё ещё не понимал чего именно. Тоже спустя ~годик выложил в общий доступ
2021 - Я понял
Я понял, что всё это время мне не хватало именно трекера времени для самоорганизации, я пробовал и смотрел всякие штуки которые уже есть в интернете, и мне везде всё не нравилось.
Из основных моих пожеланий было:
Простой и красивый (по моим меркам) дизайн
Приложение для ПК (MacOS/Windows)
Расчёт потраченного времени (желательно с переводом в деньги)
Я подумал, и решил, чего нет - сделаю себе сам, опять. И набросал простое приложение на электроне, где можно добавить задачу, указать её стоимость, нажать кнопочку "в работе" и оно будет считать, сколько времени ты потратил на задачу. А самое главное - посчитает сколько в итоге стоил час моей работы.
Я сделал, придумал, попользовался неделю и понял - нужно делать это публичным, потому что это реально работает. Почему? Потому что стоимость часа тикает в реальном времени, запускаешь задачу, и смотришь - 950 руб/ч, 949, 948, 947...
И это реально подстёгивает работать продуктивнее, я действительно стал закрывать задачи намного быстрее
А что понял?
Понял, что не один такой. И решил сделать программу красивой, бесплатной для всех и кросс-платформенной. Но я разработчик заднего прохода (бэк), поэтому дизайн - не моё, и я ухватился за "хайповую", как мне казалось идею - анимированная волна
![Я был удивлён, но даже так это выглядело забавно Я был удивлён, но даже так это выглядело забавно](https://habrastorage.org/getpro/habr/upload_files/859/67a/171/85967a171c6177444b6fb00a87a5a412.png)
![](https://habrastorage.org/getpro/habr/upload_files/452/a31/3f0/452a313f013c9a29a96d86baee5cee9a.png)
Потом я взялся за сам список задач, хотел сделать их в таком формате.
Конечно не с таким ужасным макетом.
Не прошло и нескольких дней, я переделал волну на JS, переделал список задач и интерфейс стал таким:
![](https://habrastorage.org/getpro/habr/upload_files/b2a/83f/014/b2a83f014a26e2c6dd40a0e4cb21dd87.png)
В этот момент я увидел несколько вещей, которые были действительно крутыми:
1. Анимированная волна - дрыгается, меняет цвет в зависимости от статуса (отдых, работа, овертайм и т.д.)
2. Идея оставшихся сроков, где над каждой задачей есть прогресс-бар, который перетекает из полупрозрачного зеленого в ярко красный (когда сроки горят)
Я ушёл с головой в работу ещё на неделю, прикрутил достижения, отзывы, расписал философию, мол зачем, почему. И... Результат меня очень порадовал.
![](https://habrastorage.org/getpro/habr/upload_files/b2f/e53/b34/b2fe53b34d010f59f6764e6a71c497ba.png)
И тут я дошёл до этапа, до которого не доходил никогда (с этим проектом) - публикация и демонстрация пользователям того, что я собственно сделал.
![](https://habrastorage.org/getpro/habr/upload_files/dd1/274/be0/dd1274be0990edac606607832bb35687.png)
Так я позиционировал лучшие аспекты программы на лендинге, на удивление - я получил конечный продукт.
Продукт, который действительно имеет плюсы, которые я могу объяснить пользователю.
И главное - я не хотел, и не хочу монетизировать эту программу каким-либо образом (подписки, реклама и т.д.)
А что сейчас?
Так это выглядит сегодня, добавился архив, напоминания - простые пуши, чтобы не забывать важные задачки.
![](https://habrastorage.org/getpro/habr/upload_files/6aa/015/816/6aa015816a21d70999312d05b3406c05.png)
Какие были проблемы?
Проблем было не много, да и не сказать, что это вообще проблемы, но:
Я ошибся с выбором способа авторизации, т.к. программа устанавливается на ПК, я решил вместо стандартной регистрации через почту / пароль (или через соц. сети) использовать связку HWID + PIN.
Сборка программы под разные ОС
По первому пункту - это не давало мне дышать и сделать веб-версию (т.к. там я не смог бы определить HWID), а потом выяснилось, что есть пользователи у которых HWID вообще совпадают. Слава богу, выяснилось это рано, и я смог сменить авторизацию на обычную.
![](https://habrastorage.org/getpro/habr/upload_files/8bd/f61/9d6/8bdf619d69c6bc787e68635400d4d57c.png)
А что делать с уже зарегистрировавшимися пользователями?
Всё просто, их не много, поэтому я просто сделал синхронизацию с старым аккаунтом прямо через описание обновления.
![Ни у кого с таким форматом проблем не возникло Ни у кого с таким форматом проблем не возникло](https://habrastorage.org/getpro/habr/upload_files/675/63c/d0f/67563cd0ff75148ea711bd7da6a49558.png)
По поводу второго - всё просто, я работаю на MacBook Pro. А программа позиционируется как кросс-платформа, поэтому пришлось ставить BootCamp и постоянно перезагружаться из операционки в операционку что-бы тестировать иконки, работоспособность и т.д. (а для линукса, вообще поставить виртуалку)
Подведение итогов
Я очень рад, что моя идея, которая как феникс, возрождалась несколько раз за мой опыт программирования, из раза в раз росла, и сейчас - наконец то доросла до конечного продукта.
Я благодарен вам, что вы прочитали это - и узнали мою историю.
Я извиняюсь перед вами, за плохой слог, неверную пунктуацию и т.д., я плохо знаю русский язык.