[{"data":1,"prerenderedAt":303},["ShallowReactive",2],{"cases-uk-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\u002Fuk\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\u002Fuk\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","uk","Мій власний продукт: додаток, який показує, на скільки вистачить грошей до кінця місяця. Від ідеї до публікації в App Store і Google Play я зробив його сам.",{},"2026-11-02",true,"\u002Fuk\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","uk\u002Fcases\u002Fbudgetra","2026","DlMg23PXU0VugIg5cDNdh4DSjfHaCAHJo_q0dO_Rm0A",[190,191,167],"en","ru",[193,198],{"path":194,"title":195,"description":196,"draft":165,"short":197},"\u002Fuk\u002Fservices\u002Fflutter-apps","Мобільні додатки на Flutter","Мобільний додаток на Flutter: один код для iOS і Android, сучасний інтерфейс, підключення до вашого сервера. Від макета до публікації в App Store і Google Play.","Один код для iOS і Android: від інтерфейсу до публікації в магазинах додатків.",{"path":199,"title":200,"description":201,"draft":165,"short":202},"\u002Fuk\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",1793579958988]