Возможности
Что Financy умеет сегодня и что будет дальше
Financy пересобирается заново. Что работает сегодня: счета в любой валюте и основа под ними — вход, общий доступ с ролями, обновления в реальном времени, офлайн-приложение, экспорт, девять языков и ваш собственный сервер. Каждый раздел ведёт к своему коду.
Автор: Anton ShubinОбновлено
Операций и бюджетов пока нет. Посмотрите, на каком этапе пересборка.
Работает сегодня
Фундамент для денег вашей семьи
Эти части работают и проверяются тестами в CI. Счета в любой валюте и их категории уже есть, операции — следующие.
Уже работаетДля входа через Google и GitHub серверу нужны собственные ключи, поэтому новая копия на своём сервере сначала умеет только вход по e-mail.
Каждый счёт в своей валюте
Наличные, банковские счета, карты, накопления, активы и долги — у каждого своя валюта, всё сгруппировано по типам, один счёт основной. Вся семья видит изменения сразу.
Для разработчиков
- Сервер считает баланс при каждом чтении и нигде его не хранит, поэтому он не расходится с данными
- Суммы — целые числа в наименьшей единице валюты: у иены её нет, у динара три знака
- Читатель видит счета, а менять их могут редакторы и выше — это проверяет сервер
Категории в один уровень
Раскладывайте расходы и доходы по категориям, у каждой свой значок и цвет. Положите «Продукты» и «Кафе» в «Еду». Новая семья начинает с короткого списка на своём языке.
Для разработчиков
- Категория никогда не удаляется: архив убирает её из списков выбора, а прошлые записи её сохраняют
- У подкатегории тип её родителя, а у родителя не может быть родителя — это проверяет сервер
- Зритель читает категории, а менять их может только редактор и выше
Вход уже готов
Зарегистрируйтесь по e-mail и паролю и подтвердите адрес кодом. Забытый пароль можно сбросить, а войти — через Google или GitHub, по ключу доступа или по коду из письма. Приложение-аутентификатор добавит двухфакторную защиту (2FA), а в списке устройств вы увидите, где выполнен вход, и сможете выйти на остальных.
Для разработчиков
- Пароли хешируются PBKDF2-SHA-256 через Web Crypto, по умолчанию 600 000 итераций
- Подписанные cookie сеанса и журнал всех событий входа
- Личные API-токены, которые хранятся только как хеши с ключом
Одна семья, у каждого свой логин
Семья (в приложении — группа) — это люди, у которых общие деньги. Пригласите партнёра или родных, дайте каждому роль от читателя до владельца и при необходимости передайте владение. Удалённую семью можно восстановить в течение 30 дней, а журнал действий показывает, кто что изменил.
Для разработчиков
- Любые данные проверяются по одной границе — семье
- Каждый видит только те семьи, в которых состоит
- Приглашения, смена ролей и передача владения — у каждого свои тесты
Изменения видны на всех устройствах без перезагрузки
Когда кто-то в семье что-то меняет, остальные сразу видят это на всех открытых устройствах. Ноутбук, вышедший из спящего режима, получает всё, что пропустил.
Для разработчиков
- Стандартный WebSocket с порядковым номером у каждого изменения
- Устройство после переподключения забирает пропущенное
Приложение, которое открывается без сети
Установите Financy на телефон или компьютер — он откроется даже без сети и покажет то, что видел последним.
Для разработчиков
- Локальная копия каждого списка в IndexedDB и очередь записей с ключами идемпотентности
- «Оставить моё» или «Взять с сервера» для каждого конфликта
Ваши данные уходят вместе с вами
Владелец может в любой момент выгрузить данные семьи в открытый JSON-файл, а позже импортировать их как новую семью. Импорт никогда не перезаписывает исходную.
Для разработчиков
- Весь файл проверяется до записи, а затем импортируется за один шаг
- Каждая запись получает новый id, поэтому импорт не конфликтует с существующими данными
На девяти языках
Приложение и этот сайт доступны на языках: английский, русский, испанский, немецкий, бразильский португальский, арабский, французский, японский и китайский, упрощенное письмо. Каждый сам выбирает язык в приложении, так что в одной семье можно пользоваться разными.
Для разработчиков
- Один каталог на язык и тест, который называет каждую пропущенную строку
- Числа и даты — через встроенный в браузер Intl
- Арабские страницы читаются справа налево
Работает на вашем сервере
Financy работает на любом Linux-сервере, арендованном или своём, через Docker Compose. На своём сервере он бесплатен по лицензии AGPL‑3.0, и данные семьи остаются у вас.
Для разработчиков
- Traefik на входе, с автоматическими сертификатами
- Postgres и Valkey рядом с приложениями
- Метрики, логи и оповещения на VictoriaMetrics, VictoriaLogs и Grafana
- Ежедневная зашифрованная резервная копия базы (включается по желанию) с описанием восстановления
- Traefik
- Postgres
- Valkey
- VictoriaMetrics
- VictoriaLogs
- Grafana
- Alertmanager
- Garage file store
- restic backups
Вопросы
А Financy так умеет?
Можно ли запустить Financy на виртуальном хостинге или serverless?
Нет. Financy работает как постоянно запущенные контейнеры в Docker Compose на одном Linux-сервере: API держит открытыми WebSocket-соединения, а воркер разбирает очередь.
Какую базу данных использует Financy?
Postgres. На него рассчитаны миграции, запросы и интеграционные тесты.
Есть ли приложение для телефона?
В магазинах пока нет. Сегодня веб-приложение устанавливается из браузера на телефон и компьютер и открывается без сети.