Разбор · наш продукт
Свели учёт личных трат к одному голосовому сообщению
Приложение «Мой бюджет» и телеграм-бот к нему. Трату не нужно вбивать руками: наговорил боту — операция уже в ленте, с суммой, категорией, счётом и датой.
- Личные финансы
- Веб-приложение и телеграм-бот
- Наш продукт, не заказ клиента
Ввод
Голосом в боте
«Кофе двести рублей» — и запись готова. Разбор фразы на сумму, категорию, счёт и дату делает сервер.
Связь
Работает без сети
Приложение открывается офлайн, операции копятся в очереди и уходят на сервер, когда сеть вернулась.
Данные
Одна база на всех
Телефон, компьютер и бот пишут в одну базу, поэтому картина за месяц везде одинаковая.
Что было до
Учёт бросают не из-за лени, а из-за числа движений
Таблица требует на одну трату пять действий подряд:
- Открыть файл
- Найти строку
- Выбрать категорию
- Вписать сумму
- Не забыть про дату
В магазине делать это неудобно, вечером — уже не вспомнить. Через неделю таблица отстаёт от жизни и перестаёт быть полезной.
Поэтому мы начали не с экранов и отчётов, а с одного вопроса: сколько действий стоит одна запись. Ответ оказался неожиданным для «приложения» — одно голосовое в мессенджере, который в момент траты и так открыт.
Что сделали
Четыре куска работы
Порядок не случайный: сначала база и сервер, и только в конце — бот, которому уже есть куда писать.
-
01
База и сервер
Схема данных: операции, счета, категории, лимиты, цели. Сервер на Python, вся база — один файл рядом с ним. Резервная копия базы снимается по расписанию, ночью.
-
02
Экраны, которыми пользуются каждый день
Обзор с балансом, лента операций с поиском и фильтрами, лимиты по категориям, цели накопления, отчёты за период. Правка операции — на месте, без перезагрузки страницы.
-
03
Офлайн и синхронизация
Локальное хранилище в браузере, очередь неотправленных операций и двусторонняя синхронизация с сервером. При расхождении версий выигрывает та, которую правили позже.
-
04
Телеграм-бот
Приём траты текстом и голосом, расшифровка речи, разбор фразы по своим правилам, а на сложных формулировках — запасной разбор языковой моделью. Запись падает в ту же базу, что и приложение.
Экраны
Как это выглядит
Обзор отвечает на один вопрос: сколько у нас осталось
Первый экран не пытается показать всё сразу. Остаток на счетах, итоги за день, неделю и месяц и ближайшая цель — то, ради чего приложение открывают чаще всего.
Данные на снимке обезличены.
Лента операций — место, куда попадают записи из бота
Каждая трата видна строкой: сумма, категория, счёт, дата. Поиск и фильтры нужны не для красоты — чтобы найти, куда ушли деньги, а не пролистывать месяц руками.
Данные на снимке обезличены.
Цели показывают не процент, а срок
Сколько отложено, сколько осталось и когда цель закроется при нынешнем темпе. Это единственная цифра, которая меняет поведение: проценты выполнения на неё не влияют.
Данные на снимке обезличены.
Отчёт за период — вместо сведения таблицы руками
Структура расходов и доходов за выбранный отрезок: диаграмма для общей картины и таблица с суммами — чтобы сверить и провалиться в категорию.
Данные на снимке обезличены.
Как устроено
Стек и два решения, которые определили всё остальное
- Python, Flask
- База в одном файле
- Ставится на телефон
- Локальная база в браузере
- Телеграм-бот
- Распознавание речи
- Свой сервер
Офлайн — это очередь, а не кеш страницы
Кеш даёт открыть приложение без сети, но не даёт в него писать. Поэтому запись сначала ложится в локальную базу и встаёт в очередь, а уходит на сервер, когда связь появилась. В метро трата не теряется, а на выходе не задваивается: при конфликте побеждает версия, которую правили позже.
База — один файл, а не отдельный сервер
У личного учёта один пользователь и десятки тысяч строк, поэтому вся база живёт одним файлом рядом с программой (SQLite). Отдельный сервер базы здесь добавил бы точку отказа, ежемесячную плату и работу по обслуживанию — и ничего не дал взамен. Резервная копия при таком выборе — просто копия файла по расписанию.
Деньги
Сколько стоит собрать такое под бизнес
«Мой бюджет» — наш продукт, его никто не заказывал, поэтому цены проекта у него нет. Зато есть цены на те же куски работы, если такую связку собирать под задачу компании.
- Своя программа под задачу Учёт, база, экраны и отчёты, которых нет в готовых сервисах. от 20 000 ₽
- Телеграм-бот, который принимает данные Заявка, замер, расход — бот собирает и кладёт в базу. 4 000 ₽
- Интеграция с внешним сервисом Обмен данными с чужой системой по её интерфейсу. 4 000 ₽ за площадку
- Настройка сервера Домен, шифрование, автозапуск, резервные копии по расписанию. 1 200 ₽
- Сопровождение Правки, обновления и присмотр за сервером после запуска. 8 800–9 500 ₽/мес
Цены — из прайса, это нижняя граница: диапазон показывает обычную стоимость типового объёма, а не потолок. Точную сумму собираем по позициям и фиксируем в смете до старта — дальше она не меняется. Появилась новая работа — сначала согласуем цену, потом делаем.
Старт — от 10% предоплаты, остальное по этапам после приёмки.
Дальше
Посчитать такую же под мой бизнес
Опишите задачу словами — вернёмся со сметой и сроком. Смета фиксированная, исходники и доступы отдаём вам.
Отвечаем в течение часа. Разговор ведём сами и только перепиской.