Skip to content

Dinary

Видно, что попало в пакет из магазина. Учёт расходов, сканирование чеков (Сербия, Черногория), анализ трат с помощью AI.

Выберите набор категорий при первом запуске
Чеки классифицируются AI
Ввод в любой валюте — одно касание
  • Знать, что купили: чек из супермаркета раскладывается по позициям, а категориям приложение учится по вашим исправлениям.
  • Записать, пока помните: отсканируйте QR-код или введите расход на телефоне — даже без связи.
  • Смотреть траты по-своему: категории, поездки, теги и валюты, а на компьютере — AI-аналитик.

Всё, что оно умеет

Быстрый старт

Dinary — ваш собственный небольшой сервер, а приложение на телефоне — страница, которую он отдаёт. Он бесплатно работает на виртуалке Oracle Cloud Always Free и доступен через вашу приватную сеть Tailscale.

Есть подписка Claude Pro или Max либо ChatGPT Plus? Откройте вкладку Code в настольном приложении Claude или Codex в настольном приложении ChatGPT и вставьте:

Установи мне dinary на Oracle Cloud по инструкции
https://andgineer.github.io/dinary/agent-install/

Агент по шагам скажет, что можете сделать только вы, — зарегистрироваться в Oracle и Tailscale, вписать ключ в файл, — а остальное сделает сам.

  1. Разверните сервер:
  2. Настройте HTTPS-доступ — см. инструкции по деплою выше.
  3. Установите PWA на телефон.
  4. Первоначально загружается классификатор, который вы далее можете корректировать.
  5. При желании настройте Google Sheets, чтобы каждый расход попадал строкой в таблицу.
  6. Запустите inv analytics — своего персонального финансового аналитика.

Что умеет

Dinary server — бэкенд на FastAPI, который:

  • Хранит расходы в локальной SQLite-базе (в EUR, с исходной суммой и валютой для аудита)
  • Опционально дублирует каждый расход в Google Sheets (конвертируя в RSD для сводной таблицы)
  • Парсит QR-коды сербских фискальных чеков (сумма + дата)
  • Раздаёт мобильное PWA-приложение для быстрого ввода расходов в динарах
  • Поддерживает офлайн-очередь записей при отсутствии связи
Проверка категорий чека
Быстрый ввод в любой валюте

Как это устроено

Исправления становятся правилами. Известные позиции классифицируются по сохранённым правилам, незнакомые и сомнительные уходят в LLM. Исправление пользователя важнее модели и действует во всех магазинах той же сети. Сбои классификации остаются исправимыми: есть повторы и ручной разбор. Дизайн классификации объясняет уверенность, альтернативы и ручное разрешение.

Выбор провайдера и переключение между провайдерами берёт на себя llmbroker — отдельная библиотека для приложений, которым нужен пул LLM-провайдеров. Логика чеков остаётся в Dinary.

Сохранённый расход переживает упавший сетевой запрос. Офлайн-записи хранятся в IndexedDB, а сканер QR встроен в приложение и работает без сети. На сервере источник истины — SQLite-журнал. Выгрузка в Google Sheets идёт через очередь с повторами, так что недоступная таблица не мешает записывать расходы. См. офлайн-дизайн и интеграцию с Sheets.

У аналитики свой дом. Локальное приложение аналитики через DuckDB читает реплику журнала только для чтения, поэтому тяжёлые аналитические зависимости не попадают на сервер. Его AI может запрашивать траты и настраивать представления, не меняя журнал. Дизайн аналитики описывает дашборд и MCP-интерфейс.

Хранилище определили частые мелкие запросы. В раннем синтетическом тесте 5 000 обращений к таблице соответствий заняли 2,0 секунды на прямом SQL и 19,9 секунды через Ibis. Поэтому транзакционный бэкенд построен на SQL-файлах и миграциях. Архитектурная запись описывает нагрузку и компромиссы; результат относится к этому замеру, а не к скорости всего приложения.