Кейс · Веб-приложение · TypeScript

budget-split: «Поровну», учёт общих расходов

Веб-приложение учёта общих расходов группы без регистрации: комната по секретной ссылке, деление поровну, по долям, суммам и процентам, расчёт «кто кому» не более n−1 переводов. Пет-проект.

  • TypeScript
  • Vite
  • Cloudflare Workers
  • D1
  • WebGL
  • vitest
  • fast-check
  • axe
  • GitHub Actions

01 · Как выглядит

Скриншоты

Скриншот проекта «budget-split: «Поровну», учёт общих расходов» на экране 1280 пикселей
Десктоп, 1280 px
Скриншот проекта «budget-split: «Поровну», учёт общих расходов» на экране телефона, 390 пикселей
Телефон, 390 px

02 · О проекте

Что это и зачем

«Поровну» — веб-приложение для учёта общих расходов группы без регистрации. Комната создаётся по секретной ссылке в 128 бит, ссылки «просмотр» и «редактирование» раздельные. Пет-проект.

Бэкенд работает на Cloudflare Workers с базой D1, фронтенд написан на ванильном TypeScript с Vite, в интерфейсе есть WebGL-элементы kit-blob.

Ограничения

Нет аккаунтов: потерял ссылку — потерял право редактирования.

Данные в D1 хранятся открытым текстом.

Правки и удаления офлайн не ставятся в очередь.

Что внутри

  • Деление расхода поровну, по долям, по суммам и по процентам
  • Мультивалюта с ручным курсом
  • Расчёт «кто кому»: не более n−1 переводов; алгоритм жадный, поэтому число переводов не всегда минимально
  • Оптимистичная блокировка: из 4 одновременных правок одного расхода проходит одна
  • 60 тестов (vitest в workerd, property-тесты fast-check), CI зелёный, npm audit 0, axe 0 нарушений
  • Выложено на Cloudflare Workers с D1

03 · Как запустить

Запуск одной командой

git clone <репозиторий по запросу> budget-split
cd budget-split
npm install
npm run dev

04 · Код

Репозиторий приватный

Исходники лежат в приватном репозитории. Напишите в Telegram, открою доступ.

Запросить код