Генератор счетов без облака и подписок для тех, кто ценит свои данные
Каждый раз, когда мне нужно выставить счет иностранному заказчику или локальному клиенту, начинается тихий кошмар. Либо открываешь Google Документы и правишь кривую верстку таблицы, либо идешь в популярные SaaS-сервисы. В облачных сервисах сначала просят привязать карту, потом настойчиво предлагают тариф Pro за $15 в месяц, а при первой же задержке оплаты блокируют доступ к архиву документов.
Случайно наткнулся на Invoice Builder от разработчика под ником piratuks. Проект под лицензией MIT решает задачу выставления инвойсов и коммерческих предложений без регистрации, интернета и чужих серверов.

Что под капотом и зачем это нужно
Invoice Builder создавался по принципу offline-first. Вы скачиваете приложение, открываете локальный файл базы данных и сразу работаете. Никаких аккаунтов, телеметрии и обязательной синхронизации. Все финансовые данные, реквизиты клиентов, банковские счета и архив выписанных документов хранятся у вас на диске в обычном файле SQLite. Если же вам нужен общий доступ для небольшой команды, приложение умеет подключаться к PostgreSQL.
Такой подход решает сразу две неприятные проблемы. Во-первых, вы не зависите от доступности серверов провайдера или санкций. Во-вторых, данные ваших клиентов и финансовые потоки не уходят третьим лицам.

Чем приложение выделяется на практике
В отличие от простых HTML-шаблонов, здесь есть логика полноценной учетной системы.
Неизменяемые снимки данных
В самописных таблицах часто возникает проблема: изменил реквизиты компании или ставку налога в профиле, и во всех старых счетах задним числом поехали цифры. В этом приложении реализована система снепшотов. При создании инвойса или коммерческого предложения приложение делает полный снимок сущностей:
- реквизиты банка и компании,
- данные клиента,
- выбранные позиции и валюты,
- параметры стиля и оформления.
Даже если через год вы переименуете позиции в каталоге или смените банк, старый документ останется в первозданном виде.

Европейские стандарты электронных счетов
Если вы работаете с компаниями из ЕС или государственными структурами, вам наверняка знакомы форматы UBL 2.1, Peppol BIS Billing 3.0 и немецкий XRechnung. Отправлять обычный PDF туда часто нельзя: автоматические бухгалтерские системы требуют структурированный XML.
Invoice Builder умеет генерировать такие файлы прямо из коробки. Документы сразу соответствуют европейским стандартам для автоматизированного учета.
Гибкая настройка верстки PDF
Генерация PDF построена на библиотеке @react-pdf/renderer. В интерфейсе доступен живой предпросмотр документа. Можно настроить:
- шрифты Roboto, Inter, Helvetica, Times-Roman или Courier,
- фирменные цвета, размер логотипа и высоту строк,
- видимость колонок, артикулов, единиц измерения и скидок,
- платежные QR-коды для быстрой оплаты со смартфона,
- поле для ручной подписи прямо на экране или загрузку скана.
Экспорт и переносимость
Базу можно выгрузить в JSON или экспортировать отдельные справочники в таблицы Excel. При обратном импорте из XLSX система сама создаст недостающие категории и единицы измерения, если их еще не было в базе.
Архитектура и варианты запуска
Под капотом приложения работает стек из TypeScript, React, Redux и компонентов Material UI. Серверная часть и настольный слой используют общую кодовую базу.

Запустить проект можно тремя способами:
1. Десктопное приложение через Electron
Самый быстрый путь: скачать готовый установщик со страницы релизов репозитория. Сборки доступны для Windows 10+, Linux (в виде .deb пакетов и AppImage) и macOS (под процессоры Apple Silicon и Intel).
2. Запуск в Docker
Если хочется развернуть инвойсер на домашнем сервере или NAS, у автора есть официальный образ в GitHub Container Registry.
Самый простой вариант запуска через Docker Compose:
docker compose pull
docker compose up -d
В таком режиме поднимаются два контейнера: backend с Node.js API на порту 3000 и frontend с веб-интерфейсом на порту 3001. Запросы проксируются через Nginx внутри контейнера, поэтому настраивать переменные окружения вручную не придется.
3. Сборка из исходников
Для локальной разработки потребуется стандартный набор инструментов Node.js:
# Клонируем репозиторий
git clone https://github.com/piratuks/invoice-builder.git
cd invoice-builder
# Ставим зависимости
npm install
# Запуск Electron-версии
npm run dev
# Либо запуск веб-версии
npm run dev:react
npm run dev:webserver
Личные впечатления и кому это пригодится
Приложение отлично закрывает потребности фрилансеров, разработчиков-контрактников и микробизнеса.
Плюсы, которые бросаются в глаза:
- Приятный интерфейс с поддержкой темной темы.
- Независимость от сети: открыл ноутбук в поезде, набросал предложение клиенту, сохранил PDF.
- Выбор бэкенда между локальным файлом SQLite и сетевым PostgreSQL.
- Поддержка нескольких валют и частичных оплат.
Из нюансов: проект развивает один мейнтейнер, поэтому в интерфейсе пока нет русской локализации (на выбор доступны английский, немецкий, французский и литовский языки). Впрочем, названия полей в самом сгенерированном счете можно вручную переопределить на нужные. Также macOS ругается на неподписанное приложение при первом запуске, что лечится снятием флага карантина в терминале.
Если вам надоело отдавать деньги за простые генераторы документов или возиться со сбивающимися таблицами, попробуйте поднять Invoice Builder. Это добротная утилита, которая честно выполняет свою работу и оставляет контроль над данными в ваших руках.
