Неделя — это сетка, а не лента
Между блокнотом с часами и корпоративной системой учёта нет ничего для одного человека: облачные трекеры требуют подписки и аккаунта на каждого, корпоративные — внедрения.
Span доводит одну вещь до конца. От нажатия «старт» до готовых строк, которые вставляются в счёт. Он знает про ставку, округление и то, что часть работы не оплачивается — поэтому в конце месяца остаётся не воспоминание, а список позиций.
Что внутри
Сетка недели
Проекты сверху вниз, дни слева направо, итоги по обоим краям. Пустой четверг виден так же ясно, как занятый вторник.
Один идущий таймер
Запуск нового останавливает предыдущий: параллельные таймеры порождают часы, которых не было. Запустить можно прямо из строки проекта.
Округление у клиента
По минутам или вверх до 5, 10, 15, 30 минут — как договорились. Длительность считается при чтении, поэтому смена правила пересчитывает и прошлый месяц.
Ставка с исключением
Ставка живёт у клиента, но проект может её переопределить: правки по старому договору стоят дешевле новой разработки.
Позиции для счёта
Оплачиваемые записи сворачиваются в строку на проект: описание, часы, ставка, сумма. Копируются в GoBill или выгружаются в CSV.
Один бинарник
Go и SQLite без cgo, шаблоны и CSS внутри исполняемого файла. Три языка, светлая и тёмная темы, база рядом с бинарником.