Кейс · Разработка · 2026
Расходы всей семьи за десять секунд
Telegram-бот на кнопках и дашборд на собственной дизайн-системе. Запись становится частью привычного мессенджера, а картина по категориям и участникам собирается сама.
Заказчик
Личный проект
Статус
Работает в семье, 2026
Стек
Node.js, TypeScript, Telegraf, Express, SQLite
Услуги
Продукт, дизайн-система, бот, бэкенд

Задача
Сделать так, чтобы записать трату было проще, чем её забыть
Общая таблица работала, только пока кто-то не забывал её открыть. Нужен был способ, который живёт там, где семья и так общается, и не просит ничего вводить, кроме суммы.
Таблицу открывали раз в несколько дней
Записи делались задним числом, по памяти. Часть трат терялась, остальные теряли точность.
Не видно, кто и на что потратил
В столбик шла только общая сумма. Кто именно платил и за что конкретно — не разобрать.
График строился руками
Чтобы понять, куда уходят деньги в этом месяце, приходилось отдельно собирать диаграмму из таблицы.
Аудитория
Одни ведут бюджет, другие просто тратят
Тот, кто ведёт бюджет
Ему нужна картина месяца целиком: сколько свободно после расходов, где вышли за план, кто и на что потратил. Отдельные записи ему не интересны.
Все остальные
Тратят каждый день, но вести учёт не хотят. Общую таблицу открывали раз в несколько дней и вписывали траты задним числом, по памяти.
Что из этого следовало
- 01
Учёт там, где семья и так переписывается. Бот в Telegram вместо отдельного приложения, которое пришлось бы ставить и не забывать открывать.
- 02
Всё кнопками, кроме суммы. Запись занимает около 10 секунд, поэтому её делают сразу, пока трата ещё в памяти.
- 03
Кто потратил, записывается само. Разбивка по участникам собирается без ручной разметки.
- 04
Дашборд для того, кто ведёт бюджет. Главное число месяца — сколько свободно, рядом план против факта по категориям.
Сценарий
Четыре касания вместо таблицы
Бот ведёт по цепочке, где на каждом шаге либо кнопки, либо одно число. Запись сразу попадает на сервер и сразу видна на дашборде.
1
Категория
Кнопкой
2
Сумма
Единственное поле ввода
3
Комментарий
Или «без комментария»
4
Сохранено
Бот отвечает сразу

Дашборд
Четыре вопроса, на которые он отвечает
Светлая и тёмная темы, токены и типографика из собственной дизайн-системы «Достаток». Никаких готовых шаблонов дашбордов.
01
Свободно после расходов
Главное число месяца крупно, рядом норма сбережений. Это первое, на что смотрит семья.
02
Доход, расход и план
Изменение к прошлому месяцу и отклонение от плана. Красное и зелёное, без интерпретаций.
03
Тренд за шесть месяцев
Две линии: доход и расход. Видно, в какие месяцы расходы обгоняли доходы.
04
Факт против плана по категориям
Полоса факта и засечка плана. Выход за план виден сразу, рядом бублик с долями.
Архитектура
Минимум зависимостей на самом дешёвом VPS
Telegram
Ввод: кнопки в привычном чате
Telegraf
Бот на Node.js и TypeScript
Express
API и дашборд с одного порта
SQLite
База без внешней СУБД
SVG
Графики без сторонних библиотек
Решения
Простое снаружи, продуманное внутри
Всё, кроме суммы, выбирается кнопкой. Нет опечаток в категориях, нет «продукты» и «Продукты» как двух разных строк, запись занимает около 10 секунд с телефона.
Что отдано
Не только код, но и путь до работающего сервера
Код целиком
Бот, сервер и дашборд в одном проекте. Готов к развёртыванию.
Пошаговая инструкция
От установки Node на VPS до HTTPS-домена. Рассчитана на человека, который делает это впервые.
Интерактивный дашборд
С примерными данными, чтобы оценить интерфейс, не показывая реальные траты.
Результат
Что получилось
10сек
На одну запись с телефона. Четыре касания вместо открытия таблицы.
1поле
Свободного ввода во всём боте: сумма. Остальное кнопками.
0библиотек
Для графиков. Всё нарисовано на чистом SVG.
1сеанс
От архитектуры до рабочего кода: бот, сервер, база и дашборд собраны вместе.
Бот уже работает в моей семье и записывает реальные траты. Настоящие суммы и категории я не публикую, поэтому на скриншотах демо-данные.
Нужен бот или дашборд? Давайте обсудим
Расскажите, какие данные нужно собирать и кто будет ими пользоваться. Подскажу, хватит ли бота на кнопках или нужен отдельный сервис.