К содержимому
Azgard студия разработки Написать в Telegram
Написать в Telegram

Отвечаем в течение часа, сами, без менеджеров.

Разбор · наш продукт

Свели учёт личных трат к одному голосовому сообщению

Приложение «Мой бюджет» и телеграм-бот к нему. Трату не нужно вбивать руками: наговорил боту — операция уже в ленте, с суммой, категорией, счётом и датой.

  • Личные финансы
  • Веб-приложение и телеграм-бот
  • Наш продукт, не заказ клиента

Ввод

Голосом в боте

«Кофе двести рублей» — и запись готова. Разбор фразы на сумму, категорию, счёт и дату делает сервер.

Связь

Работает без сети

Приложение открывается офлайн, операции копятся в очереди и уходят на сервер, когда сеть вернулась.

Данные

Одна база на всех

Телефон, компьютер и бот пишут в одну базу, поэтому картина за месяц везде одинаковая.

Что было до

Учёт бросают не из-за лени, а из-за числа движений

Таблица требует на одну трату пять действий подряд:

  • Открыть файл
  • Найти строку
  • Выбрать категорию
  • Вписать сумму
  • Не забыть про дату

В магазине делать это неудобно, вечером — уже не вспомнить. Через неделю таблица отстаёт от жизни и перестаёт быть полезной.

Поэтому мы начали не с экранов и отчётов, а с одного вопроса: сколько действий стоит одна запись. Ответ оказался неожиданным для «приложения» — одно голосовое в мессенджере, который в момент траты и так открыт.

Что сделали

Четыре куска работы

Порядок не случайный: сначала база и сервер, и только в конце — бот, которому уже есть куда писать.

  1. 01

    База и сервер

    Схема данных: операции, счета, категории, лимиты, цели. Сервер на Python, вся база — один файл рядом с ним. Резервная копия базы снимается по расписанию, ночью.

  2. 02

    Экраны, которыми пользуются каждый день

    Обзор с балансом, лента операций с поиском и фильтрами, лимиты по категориям, цели накопления, отчёты за период. Правка операции — на месте, без перезагрузки страницы.

  3. 03

    Офлайн и синхронизация

    Локальное хранилище в браузере, очередь неотправленных операций и двусторонняя синхронизация с сервером. При расхождении версий выигрывает та, которую правили позже.

  4. 04

    Телеграм-бот

    Приём траты текстом и голосом, расшифровка речи, разбор фразы по своим правилам, а на сложных формулировках — запасной разбор языковой моделью. Запись падает в ту же базу, что и приложение.

Экраны

Как это выглядит

Обзор отвечает на один вопрос: сколько у нас осталось

Первый экран не пытается показать всё сразу. Остаток на счетах, итоги за день, неделю и месяц и ближайшая цель — то, ради чего приложение открывают чаще всего.

Экран обзора приложения «Мой бюджет»: остаток на счетах, график, ближайшая цель и итоги за день, неделю и месяц
Обзор: остаток на счетах, ближайшая цель и итоги за день, неделю и месяц.
Данные на снимке обезличены.

Лента операций — место, куда попадают записи из бота

Каждая трата видна строкой: сумма, категория, счёт, дата. Поиск и фильтры нужны не для красоты — чтобы найти, куда ушли деньги, а не пролистывать месяц руками.

Лента операций приложения «Мой бюджет»: записи с суммой, категорией, счётом и временем, сгруппированные по дням
Лента операций: сумма, категория, счёт и время, с итогом каждого дня.
Данные на снимке обезличены.

Цели показывают не процент, а срок

Сколько отложено, сколько осталось и когда цель закроется при нынешнем темпе. Это единственная цифра, которая меняет поведение: проценты выполнения на неё не влияют.

Экран целей накопления: отложенная сумма, остаток, срок закрытия цели и нужный темп в месяц
Цели: отложено, остаток, срок и сколько нужно откладывать в месяц.
Данные на снимке обезличены.

Отчёт за период — вместо сведения таблицы руками

Структура расходов и доходов за выбранный отрезок: диаграмма для общей картины и таблица с суммами — чтобы сверить и провалиться в категорию.

Отчёт за период: сумма расходов, число операций, круговая диаграмма и список категорий с суммами и долями
Отчёт за период: сумма и число операций, диаграмма и доли по категориям.
Данные на снимке обезличены.

Как устроено

Стек и два решения, которые определили всё остальное

  • Python, Flask
  • База в одном файле
  • Ставится на телефон
  • Локальная база в браузере
  • Телеграм-бот
  • Распознавание речи
  • Свой сервер

Офлайн — это очередь, а не кеш страницы

Кеш даёт открыть приложение без сети, но не даёт в него писать. Поэтому запись сначала ложится в локальную базу и встаёт в очередь, а уходит на сервер, когда связь появилась. В метро трата не теряется, а на выходе не задваивается: при конфликте побеждает версия, которую правили позже.

База — один файл, а не отдельный сервер

У личного учёта один пользователь и десятки тысяч строк, поэтому вся база живёт одним файлом рядом с программой (SQLite). Отдельный сервер базы здесь добавил бы точку отказа, ежемесячную плату и работу по обслуживанию — и ничего не дал взамен. Резервная копия при таком выборе — просто копия файла по расписанию.

Деньги

Сколько стоит собрать такое под бизнес

«Мой бюджет» — наш продукт, его никто не заказывал, поэтому цены проекта у него нет. Зато есть цены на те же куски работы, если такую связку собирать под задачу компании.

  • Своя программа под задачу Учёт, база, экраны и отчёты, которых нет в готовых сервисах. от 20 000 ₽
  • Телеграм-бот, который принимает данные Заявка, замер, расход — бот собирает и кладёт в базу. 4 000 ₽
  • Интеграция с внешним сервисом Обмен данными с чужой системой по её интерфейсу. 4 000 ₽ за площадку
  • Настройка сервера Домен, шифрование, автозапуск, резервные копии по расписанию. 1 200 ₽
  • Сопровождение Правки, обновления и присмотр за сервером после запуска. 8 800⁠–⁠9 500 ₽/⁠мес

Цены — из прайса, это нижняя граница: диапазон показывает обычную стоимость типового объёма, а не потолок. Точную сумму собираем по позициям и фиксируем в смете до старта — дальше она не меняется. Появилась новая работа — сначала согласуем цену, потом делаем.

Старт — от 10% предоплаты, остальное по этапам после приёмки.

Весь прайс и что в него не входит

Дальше

Посчитать такую же под мой бизнес

Опишите задачу словами — вернёмся со сметой и сроком. Смета фиксированная, исходники и доступы отдаём вам.

Отвечаем в течение часа. Разговор ведём сами и только перепиской.

Другие работы

Учёт для стоматологии

Расписание кресел, план лечения, документы к приёму — вместо таблицы и бумажного журнала.

Разбор

Сметы и документы

Смета собирается из позиций и уходит клиенту готовым документом, без ручной сборки в редакторе.

Разбор

Написать в Telegram Контакты