paratrack: учёт времени в одном бинарнике
≈ 2 минуты
Трекеры времени делятся на два лагеря. С одной стороны тяжёлые веб-приложения: мегабайты JavaScript, подписка, экспорт по запросу в поддержку. С другой консольные утилиты, где start и stop есть, а обратной связи нет.
Мне не подходили оба. Плюс активности идут параллельно, и учитывать их хочется честно, а большинство трекеров считают, что человек делает одно дело за раз.
Из этого вырос paratrack. Один Go-бинарник, внутри веб-интерфейс и SQLite. Без CGO, без Node в рантайме.
make build
./paratrack web --addr 127.0.0.1:8000
Учёт: параллельные таймеры, пауза, «Фокус», который выводит одну сессию вперёд, прошедшие сессии свободным текстом вроде «вчера 14:00» или «2h ago». Таймшит на неделю: сетка активность на дни, в ячейке минуты. Цветные проекты, оценка в минутах против факта, ставка в центах.
Деньги: инвойс INV-ГГГГ-ННН собирается из оплачиваемого времени, отдаётся в PDF с платёжной ссылкой через Stripe Checkout и помечается оплаченным. Фонд оплаты считается от ставок участников. Пять шаблонов отчётов в HTML и CSV.
Команда: несколько пространств, участники с ролями, приглашения по ссылке, расписание людей по проектам с загрузкой от ёмкости. Интеграции с GitHub, GitLab, Jira, Trello, Asana, ClickUp, Todoist и Notion: импорт задач с запуском таймера одним кликом. Импорт истории из Toggl, Harvest и Clockify, если переезжаешь. API-токены и вебхуки.
Мобильный: устанавливаемый PWA с офлайн-очередью, push в браузере, расширение для Chrome с таймером в попапе.
Под капотом Go 1.27, net/http и html/template из стандартной библиотеки, modernc.org/sqlite на чистом Go. Фронт без фреймворка: HTMX для точечных подмен, Alpine.js для живых значений, ECharts для графика, Tailwind v4 с DaisyUI собираются в один бандл около 16 килобайт. Русский по умолчанию, есть английский, тёмная тема.
Для команды или фрилансера, которым нужен учёт, инвойсы и зарплата без SaaS. Собрал бинарник, запустил, база лежит в ~/.track/track.db.