[{"data":1,"prerenderedAt":303},["ShallowReactive",2],{"cases-ru-budgetra":3,"published":203},{"doc":4,"versions":189,"related":192},{"id":5,"title":6,"body":7,"client":163,"description":164,"draft":165,"extension":166,"lang":167,"lead":168,"meta":169,"minutes":156,"modified":170,"navigation":171,"path":172,"price":173,"published":170,"role":174,"seo":175,"seoTitle":176,"services":177,"stack":180,"stem":186,"year":187,"__hash__":188},"cases\u002Fru\u002Fcases\u002Fbudgetra.md","Budgetra: приложение для бюджета с прогнозом",{"type":8,"value":9,"toc":154},"minimark",[10,15,33,38,46,49,53,56,90,94,132,136,147,151],[11,12],"app-shots",{":alts":13,"dir":14},"[\"Главный экран: сколько можно потратить, дневной лимит и прогноз до конца месяца\",\"Голосовой ввод: расход диктуют, приложение само распознаёт сумму и категорию\",\"Распознавание чека: магазин, сумма и дата с фото\",\"Один расход, разделённый между несколькими категориями\",\"Регулярные платежи: подписки и счета\",\"Бюджет на месяц: лимиты по категориям\",\"Графики: структура расходов и использование дохода\",\"Счета: наличные, карта, банк и криптовалюта в одном бюджете\"]","\u002Fcases\u002Fbudgetra\u002Fru\u002F",[16,17,18,19,26,27,32],"p",{},"Скачать: ",[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fbudgetra-budget-forecast\u002Fid6801909137",[24],"nofollow","App Store"," · ",[20,28,31],{"href":29,"rel":30},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.budgetra.budgetra",[24],"Google Play",".",[34,35,37],"h2",{"id":36},"задача","Задача",[16,39,40,41,45],{},"Большинство приложений для бюджета показывают, куда ушли деньги. Мне хотелось ответа на другой вопрос: ",[42,43,44],"strong",{},"на сколько хватит того, что осталось",". Budgetra считает дневной лимит по реальному темпу расходов и после каждой покупки обновляет прогноз: укладываетесь ли вы в месяц или деньги закончатся раньше и когда именно.",[16,47,48],{},"Второе требование — данные пользователя остаются у него. Подключать банк не нужно, основные данные хранятся на телефоне.",[34,50,52],{"id":51},"что-ясделал","Что я сделал",[16,54,55],{},"Весь продукт от первого коммита до релиза:",[57,58,59,66,72,78,84],"ul",{},[60,61,62,65],"li",{},[42,63,64],{},"дизайн"," интерфейса: тёмная и светлая темы, один экран — один ответ, цифры на первом плане;",[60,67,68,71],{},[42,69,70],{},"приложение на Flutter"," — одна кодовая база для iOS и Android;",[60,73,74,77],{},[42,75,76],{},"серверную часть"," на Firebase Cloud Functions;",[60,79,80,83],{},[42,81,82],{},"публикацию"," в App Store и Google Play, страницы в сторах и скриншоты на трёх языках;",[60,85,86,89],{},[42,87,88],{},"подписку Pro"," через RevenueCat.",[34,91,93],{"id":92},"как-это-устроено","Как это устроено",[57,95,96,102,108,114,120,126],{},[60,97,98,101],{},[42,99,100],{},"Офлайн в первую очередь."," Данные хранятся локально в SQLite с шифрованием (SQLCipher), резервные копии тоже шифруются. Приложение работает без интернета.",[60,103,104,107],{},[42,105,106],{},"Прогноз."," Дневной лимит, дата, до которой хватит денег, и сигналы, когда категория приближается к лимиту, считаются на устройстве после каждого расхода.",[60,109,110,113],{},[42,111,112],{},"Голосовой ввод."," Фразу вроде «АТБ 2500 на продукты» распознаёт модель Whisper, а языковая модель разбирает её на сумму, магазин и категорию. Запросы идут через Cloud Functions, так что ключи сервисов не попадают в приложение.",[60,115,116,119],{},[42,117,118],{},"Чеки."," На iPhone текст чека распознаётся прямо на устройстве (Apple Vision): магазин, дата и сумма заполняются сами.",[60,121,122,125],{},[42,123,124],{},"Несколько валют и счетов:"," наличные, карты, банки и криптовалюта в одном бюджете, курсы обновляются автоматически.",[60,127,128,131],{},[42,129,130],{},"Три языка:"," украинский, английский и русский, как и на этом сайте.",[34,133,135],{"id":134},"качество","Качество",[57,137,138,141,144],{},[60,139,140],{},"больше 280 файлов автотестов и сквозные сценарии на Maestro, которые проходят приложение как пользователь;",[60,142,143],{},"Firebase Crashlytics и Analytics, App Check от посторонних запросов к серверу;",[60,145,146],{},"собственная панель метрик: продажи из App Store, установки из Google Play и события подписок из RevenueCat в одном месте.",[34,148,150],{"id":149},"результат","Результат",[16,152,153],{},"Budgetra опубликовано в App Store и Google Play и продолжает развиваться: последняя версия добавила счета и переводы между ними. Этот проект показывает, что я могу пройти весь путь сам: от идеи и дизайна до кода, сервера, публикации и поддержки.",{"title":155,"searchDepth":156,"depth":156,"links":157},"",2,[158,159,160,161,162],{"id":36,"depth":156,"text":37},{"id":51,"depth":156,"text":52},{"id":92,"depth":156,"text":93},{"id":134,"depth":156,"text":135},{"id":149,"depth":156,"text":150},"Собственный продукт","Моё собственное приложение для бюджета на Flutter: прогноз до конца месяца, голосовой ввод, распознавание чеков. Опубликовано в App Store и Google Play.",false,"md","ru","Мой собственный продукт: приложение, которое показывает, на сколько хватит денег до конца месяца. От идеи до публикации в App Store и Google Play я сделал его сам.",{},"2026-11-02",true,"\u002Fru\u002Fcases\u002Fbudgetra",null,"Идея, дизайн, разработка, публикация",{"title":6,"description":164},"Budgetra — приложение для бюджета на iOS и Android: кейс",[178,179],"flutter-apps","full-stack",[181,182,183,184,185],"Flutter","Dart","SQLite","Firebase","RevenueCat","ru\u002Fcases\u002Fbudgetra","2026","oyThxW2ejGIPAI8UbSqZp2DFVVHIIq2ejHFFA-Fjvbs",[190,167,191],"en","uk",[193,198],{"path":194,"title":195,"description":196,"draft":165,"short":197},"\u002Fru\u002Fservices\u002Fflutter-apps","Мобильные приложения на Flutter","Мобильное приложение на Flutter: один код для iOS и Android, современный интерфейс, подключение к вашему серверу. От макета до App Store и Google Play.","Один код для iOS и Android: от интерфейса до публикации в сторах.",{"path":199,"title":200,"description":201,"draft":165,"short":202},"\u002Fru\u002Fservices\u002Ffull-stack","Full-stack разработка","Full-stack разработка: интерфейс, сервер и база данных от одного человека. Меньше посредников, быстрее результат. Vue, Nuxt, React. Удалённо.","Интерфейс, сервер и база данных в одних руках. От макета до запуска.",[204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302],"\u002Fen\u002Fservices\u002Fbusiness-card-site\u002F","\u002Fen\u002Fservices\u002Fcatalog-site\u002F","\u002Fen\u002Fservices\u002Fcorporate-site\u002F","\u002Fen\u002Fservices\u002Ffigma-to-html\u002F","\u002Fen\u002Fservices\u002Fflutter-apps\u002F","\u002Fen\u002Fservices\u002Ffull-stack\u002F","\u002Fen\u002Fservices\u002Flanding-page\u002F","\u002Fen\u002Fservices\u002Fonline-store\u002F","\u002Fen\u002Fservices\u002Fportal\u002F","\u002Fen\u002Fservices\u002Fredesign\u002F","\u002Fen\u002Fservices\u002Fsite-speed\u002F","\u002Fen\u002Fservices\u002Fsite-support\u002F","\u002Fen\u002Fservices\u002Fweb-apps\u002F","\u002Fen\u002Fservices\u002Fwordpress\u002F","\u002Fru\u002Fservices\u002Fbusiness-card-site\u002F","\u002Fru\u002Fservices\u002Fcatalog-site\u002F","\u002Fru\u002Fservices\u002Fcorporate-site\u002F","\u002Fru\u002Fservices\u002Ffigma-to-html\u002F","\u002Fru\u002Fservices\u002Fflutter-apps\u002F","\u002Fru\u002Fservices\u002Ffull-stack\u002F","\u002Fru\u002Fservices\u002Flanding-page\u002F","\u002Fru\u002Fservices\u002Fonline-store\u002F","\u002Fru\u002Fservices\u002Fportal\u002F","\u002Fru\u002Fservices\u002Fredesign\u002F","\u002Fru\u002Fservices\u002Fsite-speed\u002F","\u002Fru\u002Fservices\u002Fsite-support\u002F","\u002Fru\u002Fservices\u002Fweb-apps\u002F","\u002Fru\u002Fservices\u002Fwordpress\u002F","\u002Fservices\u002Fbusiness-card-site\u002F","\u002Fservices\u002Fcatalog-site\u002F","\u002Fservices\u002Fcorporate-site\u002F","\u002Fservices\u002Ffigma-to-html\u002F","\u002Fservices\u002Fflutter-apps\u002F","\u002Fservices\u002Ffull-stack\u002F","\u002Fservices\u002Flanding-page\u002F","\u002Fservices\u002Fonline-store\u002F","\u002Fservices\u002Fportal\u002F","\u002Fservices\u002Fredesign\u002F","\u002Fservices\u002Fsite-speed\u002F","\u002Fservices\u002Fsite-support\u002F","\u002Fservices\u002Fweb-apps\u002F","\u002Fservices\u002Fwordpress\u002F","\u002Fservices\u002F","\u002Fen\u002Fservices\u002F","\u002Fru\u002Fservices\u002F","\u002Fen\u002Fcases\u002Fbudgetra\u002F","\u002Fru\u002Fcases\u002Fbudgetra\u002F","\u002Fcases\u002Fbudgetra\u002F","\u002Fcases\u002F","\u002Fen\u002Fcases\u002F","\u002Fru\u002Fcases\u002F","\u002Fen\u002Fblog\u002Fbusiness-card-site-price\u002F","\u002Fen\u002Fblog\u002Fcatalog-or-online-store\u002F","\u002Fen\u002Fblog\u002Fcorporate-site-cost\u002F","\u002Fen\u002Fblog\u002Ffigma-to-html-checklist\u002F","\u002Fen\u002Fblog\u002Ffull-stack-vs-team\u002F","\u002Fen\u002Fblog\u002Flanding-page-cost\u002F","\u002Fen\u002Fblog\u002Fmobile-app-cost\u002F","\u002Fen\u002Fblog\u002Fonline-store-cost\u002F","\u002Fen\u002Fblog\u002Fpersonal-account-guide\u002F","\u002Fen\u002Fblog\u002Fportal-where-to-start\u002F","\u002Fen\u002Fblog\u002Fredesign-without-losing-seo\u002F","\u002Fen\u002Fblog\u002Fsite-support-guide\u002F","\u002Fen\u002Fblog\u002Fslow-site-checklist\u002F","\u002Fen\u002Fblog\u002Fwordpress-or-custom-code\u002F","\u002Fru\u002Fblog\u002Fbusiness-card-site-price\u002F","\u002Fru\u002Fblog\u002Fcatalog-or-online-store\u002F","\u002Fru\u002Fblog\u002Fcorporate-site-cost\u002F","\u002Fru\u002Fblog\u002Ffigma-to-html-checklist\u002F","\u002Fru\u002Fblog\u002Ffull-stack-vs-team\u002F","\u002Fru\u002Fblog\u002Flanding-page-cost\u002F","\u002Fru\u002Fblog\u002Fmobile-app-cost\u002F","\u002Fru\u002Fblog\u002Fonline-store-cost\u002F","\u002Fru\u002Fblog\u002Fpersonal-account-guide\u002F","\u002Fru\u002Fblog\u002Fportal-where-to-start\u002F","\u002Fru\u002Fblog\u002Fredesign-without-losing-seo\u002F","\u002Fru\u002Fblog\u002Fsite-support-guide\u002F","\u002Fru\u002Fblog\u002Fslow-site-checklist\u002F","\u002Fru\u002Fblog\u002Fwordpress-or-custom-code\u002F","\u002Fblog\u002Fbusiness-card-site-price\u002F","\u002Fblog\u002Fcatalog-or-online-store\u002F","\u002Fblog\u002Fcorporate-site-cost\u002F","\u002Fblog\u002Ffigma-to-html-checklist\u002F","\u002Fblog\u002Ffull-stack-vs-team\u002F","\u002Fblog\u002Flanding-page-cost\u002F","\u002Fblog\u002Fmobile-app-cost\u002F","\u002Fblog\u002Fonline-store-cost\u002F","\u002Fblog\u002Fpersonal-account-guide\u002F","\u002Fblog\u002Fportal-where-to-start\u002F","\u002Fblog\u002Fredesign-without-losing-seo\u002F","\u002Fblog\u002Fsite-support-guide\u002F","\u002Fblog\u002Fslow-site-checklist\u002F","\u002Fblog\u002Fwordpress-or-custom-code\u002F","\u002Fblog\u002F","\u002Fen\u002Fblog\u002F","\u002Fru\u002Fblog\u002F","\u002Fbrief\u002F","\u002Fen\u002Fbrief\u002F","\u002Fru\u002Fbrief\u002F",1793579960746]