Как сделать учёт времени без кода: таймер, ставки, отчёты
Учёт времени собирается из описания: назовите проекты, способ фиксации времени, ставки и вид отчёта. Билдер соберёт приложение примерно за минуту, проверит его в песочнице и опубликует на адрес вида <slug>.zugo.run, записи складываются в базу Supabase. Сборка стоит 6 кредитов, каждая правка 3.
Трекер времени это редкий случай, когда самодельное решение объективно выигрывает у готового: почти вся ценность здесь в том, чтобы он совпадал с вашим способом работы, а не с чужим представлением о нём.
Что должен уметь трекер, которым вы будете пользоваться?
Меньше, чем кажется. Провал большинства самодельных трекеров не в нехватке функций, а в том, что ими перестают пользоваться на второй неделе.
Обязательный минимум: записать отрезок времени, привязать его к проекту, увидеть сумму за период. Три действия. Всё, что добавляется сверх этого, должно оправдывать себя, потому что каждое лишнее поле при вводе снижает шанс, что вы вообще внесёте запись.
Второе по важности это скорость ввода. Если внести час работы занимает больше пятнадцати секунд, вы начнёте копить это на вечер, а вечером не вспомните. Отсюда практическое требование: главный экран это ввод, а не дашборд.
Третье: возможность исправить. Реальный учёт всегда содержит забытые и неточные записи. Трекер, в котором нельзя поправить вчерашнюю строку, превращается в источник неверных счетов.
Таймер или ручной ввод: что собирать?
Это первое решение, и оно зависит от того, как вы работаете, а не от того, что моднее. Три подхода.
| Подход | Как выглядит запись | Кому подходит |
|---|---|---|
| Таймер: старт и стоп | Нажал в начале задачи, нажал в конце | Работа блоками за одним компьютером |
| Ручной ввод отрезков | «Вчера, проект X, 2,5 часа, описание» | Работа с переключениями, встречами, дорогой |
| Оба сразу | Таймер для длинных блоков, ручной ввод для остального | Смешанный режим, если готовы к чуть более сложному экрану |
Честный совет: начинать стоит с ручного ввода. Таймер требует дисциплины включать его вовремя, и половина забытых таймеров превращается в записи по восемь часов, которые потом всё равно правятся руками.
Если работа действительно идёт длинными блоками, таймер экономит время. Тогда предусмотрите одну вещь: что происходит с забытым запущенным таймером. Простое правило вроде «таймер дольше десяти часов помечается как требующий проверки» спасает отчёт за месяц.
Как описать трекер в промте?
Билдеру нужны сущности, поля и вид отчёта. Опишите это списком, а не общими словами.
Собери приложение учёта времени для [фрилансера / команды].
Сущности: проекты (название, клиент, ставка в час в долларах,
статус), записи времени (дата, проект, длительность, описание,
оплачено или нет).
Главный экран: форма быстрого ввода записи, под ней список
записей за текущую неделю с итогом часов.
Экран проектов: список с часами и суммой за текущий месяц.
Экран отчёта: выбор проекта и периода, таблица записей,
итог часов и сумма, кнопка выгрузки в CSV.
Записи хранить в Supabase, редактирование и удаление доступны.
Оформление: плотное и быстрое, ввод в два поля, работает на телефоне.
Отдельно укажите валюту и то, что ставка задаётся у проекта, а не у записи. Иначе билдер может завести ставку в каждой строке, и первое же изменение цены превратится в правку сорока записей. Как формулировать такие уточнения, разобрано в гайде как писать промт для ИИ-билдера.
Где хранить записи и нужен ли вход?
Записи должны лежать в базе, а не в памяти браузера. Локальное хранение выглядит проще ровно до момента, когда вы откроете трекер с телефона и не увидите вчерашних записей, или почистите браузер и потеряете месяц.
Рабочий вариант это таблица в Supabase: строка на запись, ссылка на проект, дата и длительность. Как подключается база, описано в статье про приложение с Supabase.
Вход нужен, если трекер доступен по публичному адресу, а это по умолчанию так. Без входа ваш учёт времени и суммы клиентов видит любой, кто узнал ссылку. Это тот случай, когда правила доступа нужно проверить руками, а не полагаться на то, что «ссылку никто не знает».
Для одного человека достаточно простого входа по почте. Для команды появляется вопрос ролей: сотрудник видит свои записи, руководитель видит всё. Это заметно более сложная задача, и её лучше довести правками после того, как заработает однопользовательская версия.
Как считать деньги: ставки и отчёт за период?
Смысл трекера для фрилансера не в часах, а в счёте. Поэтому отчёт важнее таймера, и его структуру стоит продумать заранее.
Минимально нужны три вещи: выбор проекта и периода, таблица записей с описаниями и итог в часах и деньгах. Описания в отчёте важны: клиент, который видит «12 часов», спорит чаще, чем клиент, который видит двенадцать строк с конкретными задачами.
Отдельное поле «оплачено» экономит больше, чем кажется. Оно превращает трекер в ответ на вопрос «сколько мне сейчас должны», а это и есть самая ценная цифра.
Выгрузка в CSV закрывает всё остальное: бухгалтерию, счета, любые расчёты в таблице. Просить приложение печатать красивые счета обычно не нужно, потому что счета всё равно выставляются в другой системе.
Сколько кредитов стоит трекер времени?
Zugo списывает кредиты за действия. Сборка стоит 6 кредитов, правка 3, многостраничная платформа 12 за первые три страницы и по 3 за каждую следующую.
| Что собираем | Что получается | Кредитов |
|---|---|---|
| Ввод записей и список за неделю | Рабочий минимум | 6 |
| Ввод, проекты, отчёт | Три экрана | 12 |
| Плюс вход и страница клиента | Пять экранов | 18 |
| Добавить поле «оплачено» или выгрузку | Одна правка | 3 |
Режим Hi-Fi вдвое дороже: сборка 12, правка 6. Для внутреннего инструмента он не нужен: трекером пользуетесь вы, и его ценность в скорости ввода, а не в оформлении.
Free даёт 5 кредитов, это меньше одной сборки. Pro стоит $25 в месяц и даёт 200 кредитов, чего хватает и на сборку, и на десятки правок по мере того, как вы поймёте, чего не хватает.
Что обычно ломается через месяц использования?
Три вещи, и все три предсказуемы, поэтому их проще заложить сразу, чем чинить потом задним числом.
Первое: изменившаяся ставка. Если ставка хранится у проекта и применяется ко всем записям, повышение цены задним числом перепишет прошлые месяцы и испортит уже выставленные счета. Надёжнее фиксировать сумму в записи в момент её создания.
Второе: архив. Через полгода список проектов становится длинным, а половина из них закрыта. Поле «статус проекта» и фильтр по активным добавляются одной правкой за 3 кредита и возвращают экрану читаемость.
Третье: часовые пояса и дата. Запись, внесённая поздно вечером, регулярно попадает в следующий день, и месячный отчёт расходится на пару часов. Явно укажите в промте, что дата берётся из поля формы, а не из времени сохранения.
Когда честнее взять готовый трекер?
У готовых сервисов учёта времени есть сильные стороны, и их стоит назвать прямо.
| Что нужно | Готовый сервис | Своё приложение |
|---|---|---|
| Мобильное приложение с виджетом и напоминаниями | Сильнее: нативные приложения | Веб-страница на телефоне |
| Автоматический захват активности на компьютере | Сильнее: есть агенты | Нет |
| Интеграции с таск-трекерами и бухгалтерией | Сильнее: десятки готовых | Придётся делать самому |
| Учёт по вашей нестандартной логике | Упирается в чужую модель | Собирается как надо вам |
| Данные в своей базе и свой домен | Обычно нет | Да |
| Цена при росте команды | Растёт с числом мест | Не зависит от числа людей |
Практический вывод: если вам нужен трекер с мобильным приложением, напоминаниями и связкой с бухгалтерией, готовый сервис даст это быстрее и лучше. Своё имеет смысл, когда учёт устроен нестандартно: у вас свои коэффициенты, свои этапы, свои правила округления, и любой готовый инструмент вы всё равно ведёте с оговорками.
Отдельный аргумент это данные. Свой трекер держит записи в вашей базе, а код выгружается в GitHub, поэтому уход с платформы не означает потерю истории.
С чего начать?
С одного экрана: форма из трёх полей, список записей за неделю и итог часов. Это 6 кредитов и час. Пользуйтесь неделю и запишите, что раздражает, а не что хотелось бы добавить.
Дальше добавляйте по одной правке за 3 кредита: проекты, ставки, отчёт, поле «оплачено». Такой порядок надёжнее, чем описать весь трекер сразу: половина задуманных функций после недели использования оказывается не нужна.
Если параллельно вам нужен простой список дел, посмотрите разбор приложения со списком задач: там та же логика с базой, но проще. Опишите свои проекты и ставки одним абзацем на zugo.dev и соберите ту версию, которой действительно будете пользоваться.