TaskMeter — я написал себе трекер времени и теперь знаю, какие заказы стоят моих нервов

Несколько месяцев назад я поймал себя на том, что понятия не имею, сколько часов реально уходит на разные проекты. Заказ закрыт, деньги получены — а прибыльным ли он был? Непонятно. Сколько потрачено на модель для стока, которая продаётся раз в квартал? Тоже непонятно. Готовые трекеры времени я пробовал — что-то не то. Либо слишком сложно, либо облако, либо не под мои задачи. И я пошёл по кривой дороге — писать своё.

Главная фишка — аналитика стока 3DDD
Заходишь на 3ddd.ru/user/income_new, сохраняешь страницу как MHTML (Ctrl+S → «Веб-страница одним файлом»), загружаешь в приложение. И получаешь таблицу по всем моделям: выручка за выбранный период, количество продаж, /ч — доходность к часам, потраченным на создание. Последний показатель — самый честный. Модель может продаваться, но если на неё ушло 40 часов, а за год она дала 600 рублей — это видно сразу, без таблиц в Excel.

Записал видео с обзором основных возможностей 

Как это всё начиналось
Сначала был Telegram-бот. Простой: написал «начал работу», бот засёк время. Написал «закончил» — записал сессию. Потом адаптировал его под MAX мессенджер. Потом захотелось видеть не просто цифры в чате, а нормальную картину — графики, динамику, сравнения. Сделал отдельный дашборд: таблицы, хитмап активности, статистика по типам работы. Заодно прикрутил GigaChat — он анализировал данные и давал советы прямо внутри интерфейса. Это уже было что-то рабочее. Но со временем стало понятно: нужна единая система, где всё вместе — и трекер, и задачи, и финансы, и сток. Так появился TaskMeter.


Что это такое
Приложение запускается локально на твоём компьютере, открывается в браузере наhttp://127.0.0.1:8080.   Никаких аккаунтов, серверов и подписок. Все данные в SQLite-файле на твоей машине. Основа — таймер. Создаёшь проект, нажимаешь старт, работаешь. Можно разбить проект на этапы и отмечать текущий. Если забыл остановить — через час придёт вопрос «ты ещё работаешь?», и если не ответить, таймер остановится сам. Параллельно ведёшь задачи, смотришь финансы по каждому проекту (доход, расходы, налог, прибыль), видишь хитмап активности за год и статистику по типам работы. Есть система достижений, цели с прогресс-баром, лог всех сессий.

Про GigaChat
Он никуда не делся. В TaskMeter чат-ассистент тоже может работать на GigaChat — нужно зарегистрироваться на платформе Сбера и добавить свои API-ключи в настройки. Расскажу об этом отдельно — там есть нюансы.

Всё это написано с помощью Claude Code — вайб-кодинг в полном смысле слова. Я описываю задачу, нейросеть реализует, я тестирую и уточняю. Планов много, а времени не очень. 🙂 Буду периодически улучшать и дополнять — бросать не собираюсь, но, скорее всего, сбавлю темп. Если честно, этот проект меня так увлёк, что я совсем перестал грузить модели на сток — а он, в отличие от TaskMeter, хоть какую-то денежку приносит. 😄 Так что надо возвращаться к корням. Шероховатостей хватает: иногда нужно нажать F5, чтобы обновились данные, кое-где интерфейс сыроват. Но в целом всё работает — даже лучше, чем я сам ожидал, когда начинал. Если будете пользоваться и найдёте баги или появятся идеи по улучшению — пишите в комментарии. Буду проверять, анализировать, по возможности вносить изменения.

Про запуск — важно
Приложение работает в фоне и живёт в системном трее. Если случайно закрыл вкладку браузера — не паникуй, приложение не закрылось. Кликни по иконке в трее — окно откроется снова. Чтобы полностью выйти: правая кнопка по иконке в трее → «Выход». И ещё: если попробуешь запустить приложение повторно, когда оно уже работает, — получишь ошибку. Порт занят работающим процессом. Просто открой через трей.



Как попробовать
Ссылки в конце. Там же — демо-база данных (fake_db-3.db) с выдуманными проектами, клиентами и историей продаж (в ней даже выплаты от стока превысили продажи 😄). Все персонажи, цифры и названия вымышлены — любое совпадение с реальностью случайно 😄. Когда захочешь начать с чистого листа: просто удали файл fake_db-3.db из папки приложения (предварительно закрыв в трее приложение) и перезапусти TaskMeter — откроется с пустой базой.

Ссылки:
само приложение
PDF-мануал (подробный, хотя ещё сыроватый встречаются неточности, так как вносятся изменения постоянно и каждый раз инструкцию менять брр)
фейковая база данных , чтобы просто покликать и посмотреть что к чему без настройки с нуля

Видео-обзор основных возможностей 

Upd: немного обновил, потомо пишу инструкцию как обновиться:
Ссылка прежняя.

Способ 1 — Обновление на месте (рекомендуется)
Самый простой вариант — распаковать новый архив поверх старой папки.

Шаг 1. Закройте приложение через трей→ правая кнопка по иконке в трее → Выход

Шаг 2. Распакуйте новый архив в ту же папку с заменой файловФайл taskmeter.db архив не содержит — он останется нетронутым.

Шаг 3. Запустите TaskMeter.exeВсё. Данные сохранены, приложение обновлено.

Способ 2 — Новая папка (если хотите сохранить старую версию)

Шаг 1. Закройте приложение через трей

Шаг 2. Распакуйте новый архив в новую папкуШаг 3. Скопируйте taskmeter.db из старой папки в новую (рядом с новым .exe)Шаг 4. Запустите TaskMeter.exe из новой папки

Если что-то пошло не так
При каждом запуске TaskMeter автоматически создаёт резервную копию базы (3 последних копии хранятся в папке backups/). Если после обновления что-то не работает:

Закройте приложение

Скопируйте нужный файл из backups/ (backup_1.db, backup_2.db или backup_3.db) рядом с .exe

Переименуйте его в taskmeter.dbЗапустите приложение

Комментарии (7)

+1
turbotatarin
Здравствуйте, спасибо, полезная вещь. Заметил момент, что не меняется шаблон на уже созданном проекте. И еще пожелание, возможно добавить во вкладку финансы, "Финансы по проектам" остаток оплаты по каждому проекту, а сверху сделать остаток по клиентам
0
Designdaco
Спасибо, добавил себе в записи
+1
Designdaco
обновил архив, а в посте в конце добавил как ообновить
0
Nightt
пользователи скрипта могут быть уверены что их статистика не утечет куда на сторону?
+1
Designdaco
Это правильный вопрос. Но я не преследую цели собирать, чью то там статистику, мне это не нужно и не законно без согласия.
Если хотите подробностей:
TaskMeter — полностью локальное приложение:
База данных — SQLite файл taskmeter.db хранится только на вашем компьютере
Сервер — FastAPI запускается на localhost, недоступен извне
Нет телеметрии — в коде нет никаких вызовов к внешним API, аналитике или трекерам
Единственные внешние запросы — загрузка CSS/JS библиотек с CDN при первом открытии (Tailwind, Alpine.js, Plotly, HTMX) — это обычные GET-запросы без передачи каких-либо данных пользователя
Все проекты, задачи, чат, финансы, таймеры — всё остаётся на машине пользователя. Можно даже отключить интернет — приложение продолжит работать (только иконки/стили CDN не загрузятся).
Можете использовать фаервол разрешить для этого приложения только входящий трафик, и запретить весь исходящий, которого и так нет, но зато будете на 100% уверены.
В целом я могу все библиотеки упаковать в архив, только он станет еще больше, ну и так как все еще в разработке, возможно это излишне, а вообще в планах сделать полностью интернетонезависимое приложение, со своим дизайном без использования фреймворков. Но это уже без привязки к каким-то датам.. времени это все требует не мало..

P.s. Все же какие то данные могут передаваться из приложения, ПРИ УСЛОВИИ, что захотите подключить API Гигачат, тогда конечно запросы будут уходить на сервер Гигачата, то что будете у него (Гигачата) спрашивать то и будет туда уходить. Но это само собой не получится, для этого нужно зарегистрироваться, создать API ключи и подключить их в приложении. А потому за это и переживать не стоит. Если чего то опасаетесь.
0
Nightt
спасибо за подробный ответ
+1
Designdaco
Спасибо, что спросили, я думаю это многих интересовало, кстати уже появилась полностью локальная версия, которая вообще может без интернет работатьhttps://3ddd.ru/blog/post/taskmeter-chto-novogo  тут написал об этом.