Пет-проєкти, що стали продуктами. Українські розробники – про корисні застосунки, які вони «пилили» для себе

А ви колись розробляли для себе пет-проєкт, який врешті перетворився на непоганий і зручний продукт? Наші герої — так. Українські розробники розповіли, як і для чого створювали пенсійний калькулятор, текстовий начитувальник, Webdriver Manager для Python та власну IDE для роботи в дорозі.

Це перша частина матеріалу про пет-проєкти, другу частину ми випустимо впродовж тижня.

IDE для мобільних платформ

Сергій Дуб, Software Engineer

Як виникла ідея проєкту

Ця ідея спадала мені на думку щоразу, коли я перебував у дорозі та обмірковував робоче рішення. Або ж коли у голові раптово виринав задум і потрібно було швидко «накидати» proof-of-concept.

Користуватись ноутбуком у дорозі було незручно. А деякі розробники працюють на стаціонарних ПК і взагалі не можуть взяти девайс із собою.

Траплялося, я їхав у гості до товариша відпочити та заодно продемонструвати робочий проєкт. Знову ж таки, тягати з собою громіздкий ноут — не варіант, а легкий і компактний планшет завжди під рукою.

Це може здатися дивним, але на розробку також вплинув фреймворк Flutter. Він мене дуже цікавив, і хоча я на той час вже неодноразово мав із ним справу, але задач, на яких можна було б поганяти Flutter на чомусь складнішому за «формошльопство», не траплялося.

Ще до того, як з’явилась ідея розробити власну IDE, я почав шукати готові рішення на ринку, першочергово — застосунки для мобільних платформ. Спробував 10–15 штук, які тою чи іншою мірою дозволяли писати код, але запустити проєкт і принаймні затестити зроблене не було змоги. І за функціоналом ці застосунки були далекі від IDE, яку я задумав. Я хотів комбайн на кшталт WebStorm для десктопних операційних систем, але з базовим функціоналом. Коли тобі не потрібно окремо встановлювати клієнт для баз даних, термінал тощо — все відразу є з коробки.

Одна IDE, яка дозволяє писати код і компілювати проєкт у хмарі, мені все ж трапилась. Але там було багато обмежень у плані того, що саме ти можеш компілювати, і на кожному кроці очікувала реклама. Зазвичай застосунки з рекламою я видаляю відразу після встановлення, бо UI тоді виглядає досі кепсько, а в цьому випадку це гальмувало б саму розробку.

Особливості реалізації

Slyx Editor — це IDE для мобільних платформ. З коробки користувач отримує редактор коду з підсвіткою синтаксису, клієнтом баз даних, терміналом, FTP-клієнтом і, звичайно ж, Git GUI. Ще є Desktop Mode. За допомогою цієї функції користувач може «перекинути» IDE на інший пристрій і продовжити працювати над проєктом уже там (це може бути навіть Smart TV).


Самі проєкти перебувають локально на девайсі користувача, але компіляція відбувається у хмарі. До речі, у цьому теж є переваги. По-перше, користувач може не турбуватись, що софт щось поламає на його пристрої, бо процес відбувається на віддаленому сервері. До того ж так не засмічуєш девайс різними бібліотеками, які хочеш протестувати.

По-друге, є вибір платформи, на якій відбуватиметься компіляція. Наразі це лише Linux, але в планах додати Windows та macOS. Користувач не буде привʼязаний до конкретної платформи, достатньо вибрати сервер з потрібною операційною системою. А ще у планах розробити хмарний емулятор.

Сам застосунок написаний на Flutter, але в ньому є розділи, де Flutter виступає радше як рендер, а логіка вже зроблена на Kotlin/Swift. Наприклад, Git. Перша ідея була використати якусь бібліотеку з Pub (Package Manager в Dart), але такої там не знайшлося, тому цей функціонал вирішив готувати власноруч, розуміючи, що тут треба опрацювати рішення для кожної платформи окремо.

Загалом я не фанат на кожний «чих» обирати бібліотеку, але й не створюю велосипеди.

Серверна частина написана на Python. Як база даних — PostgreSQL. Пішов шляхом мікросервісної архітектури. Як брокера повідомлень використовую RabbitMQ. Серверна частина може горизонтально масштабуватись. Дизайн робився на ходу і постійно прогресував. Весь проєкт я виконував сам.

Доступність і популярність продукту

Спочатку це був пет-проєкт, за допомогою якого я хотів більше дізнатись про можливості Flutter, прокачати навички мобільної розробки та спробувати зробити застосунок, який задовольняє мої потреби. Та у процесі зрозумів, що це може стати повноцінним продуктом, корисним і іншим розробникам.

Якось 2014 року мене пограбували, і я залишився майже ні з чим. На той час я був фрилансером, не задумувався про заощадження, і купити новий ноутбук для мене було проблематично. Якби цей застосунок тоді існував, то дуже допоміг би мені швидше відновитись на роботі.

Наразі нашу країну підло атакують кацапи. Багато людей втратили житло та/або переїхали в інші куточки країни/планети, хтось втратив роботу. Не кожен може дозволити собі нормальний ноутбук. Але якщо розглядаєте купівлю планшета, то можна отримати робочу машину набагато дешевше і використовувати цей застосунок як заміну десктопним IDE. Ще під час розробки я почав отримувати позитивні відгуки від друзів та знайомих, що додало натхнення довести справу до кінця.

Webdriver Manager для Python

Сергій Пірогов, QA Manager у BlaBlaCar

Приблизно шість років тому я працював в одній аутсорсинговій компанії, і між проєктами, сидячи на «лавці зневаги», тобто бенчі, вирішив повчити Python. Я віддаю перевагу підходу learning by doing, тому завжди намагаюсь створити проєкт за допомогою мови або інструмента, який вивчаю.

На той час я знав, що є проєкт Webdriver Manager для Java. І вирішив: а чому б не створити версію для Python? Від самого початку розробки проєкт був у відкритому доступі на GitHub.

Мета — спростити менеджмент binary-драйверів для Selenium під час написання тестів у браузері. Проблема полягає в тому, що браузерів, версій браузерів і операційних систем багато. Оновлення виходять часто, і тому потрібно, щоб версія драйвера відповідала версії браузера. Ось цим і займається Webdriver Manager.

Позаяк я вивчав мову, працюючи над цим проєктом, то його написання зайняло багато часу. Плюс під час реалізації вилазили різні технічні моменти на кшталт API Rate Limiting від GitHub чи проблеми доступності певних звʼязок типу Windows + Internet Explorer.

Мети популяризувати проєкт у мене не було — я просто заливав код і робив коміти, використовував його для своїх цілей. Заколосилось воно само собою — я помітив, що в YouTube з’являються відео про цей інструмент від хлопців з Індії.

Нещодавно я дізнався, що його навіть вказано як офіційно рекомендований у документації Selenium. Щодо майбутнього, то це не такий проєкт, де можна багато чого вигадати. Велике поле для покращення — це виявлення браузерів, які встановлено в системі, та їхніх версій, а також пошук драйверів для відповідної версії.

Начитник тексту

Роман Повзик, Product Analyst в Bini Bambini

Як виникла ідея проєкту

Мій пет-проєкт став у пригоді як хороший сервіс. Я люблю бігати, водночас мені складно читати довгі тексти з екрана ноутбука. А щодня і в українських, і в англомовних виданнях виходять цікаві та варті уваги лонгріди.

Оскільки рік тому я вивчав Python, щоб знайти собі роботу в аналізі даних, то вирішив застосувати ці знання, щоб створити начитника текстів. Суть така: я даю програмі текст, а натомість отримую аудіофайл зі зрозумілим начитуванням, який використовуватиму як подкаст під час бігу.

Зупинився на Jupyter Notebook як середовищі через його зручність і бібліотеці gTTS (Google Text-to-Speech), у якій є приклади та потрібні мені мови.

Звісно, можна було знайти щось схоже серед уже реалізованих іншими розробниками продуктів. Але я хотів зробити це власноруч.

Користуватися сервісом доволі просто: вводите текст, обираєте потрібну з переліку мову та отримуєте файл. Що більше тексту, то довше триває опрацювання. Пізніше я зробив оновлення:
начитник, який заходив на новинні сайти та начитував певну кількість найсвіжіших заголовків. Наприклад, на «Українську правду».

Під капотом все працює так: спочатку сервіс завантажує потрібні для роботи бібліотеки (gTTS — для начитування, DateTime — щоб порахувати, скільки часу пішло на конвертацію). Далі просить надіслати йому текст для начитування та обрати мову з переліку.

Після цього, відповідно до мови, потрібно запустити функцію, і після закінчення всього процесу скрипт видасть повідомлення про готовність аудіо. Сам файл збережеться у теку з програмою. Залишається лише закинути його собі на телефон і слухати.

Також як фічу я додавав змогу послухати аудіо відразу у браузері за допомогою бібліотеки PlaySound. Але так нею і не користувався.

Минулої осені я також переводив начитник у формат Telegram-бота, але через свою недосвідченість тоді засвітив токен у публічному репозиторії. Цим скористалися шахраї та намагалися отримати доступ до контактів користувачів, які б використали бота. Через це я вимкнув сервіс з продакшену і продовжую використовувати Jupyter Notebook.

Уже тепер розумію, що все можна було зробити з меншою кількістю коду, але сервіс виконує свою функцію і в нинішньому вигляді. Тому поки що не змінюю його. І досі використовую, коли бачу цікавий текст напередодні пробіжки.

Допомога під час пошуку роботи

Коли я почав шукати роботу, то часто цей проєкт був однією з тем для розмов з рекрутерами або техлідами та допомагав виділитися серед інших кандидатів. Гадаю, цей досвід впливав на рішення рекрутера поговорити зі мною та показати мою кандидатуру технічному менеджеру. Адже такі пет-проєкти — хороше підтвердження навичок фахівця.

Планів удосконалити саме начитувальник у мене немає. Але будуть і інші пет-проєкти, ідеї для яких можна черпати будь-де. Наприклад, у лютому колеги захопилися грою «Словко», де потрібно за найменшу кількість спроб вгадати слово. Мені стало цікаво, чи можна, маючи базу слів, розгадувати задумане слово автоматично, без жодних здогадок. Поекспериментувавши з Python, виявилося, що це цілком просто.

Пенсійний калькулятор

Дмитро Тижненко, Software Engineer

Як виникла ідея проєкту

Колись давно я почав цікавитися особистими фінансами. В інтернеті знайшов статтю про солідарну пенсійну систему та на що можна розраховувати, якщо нічого не робити задля свого добробуту. Спойлер: нічого хорошого не буде.

Щоб солідарна пенсійна система працювала, треба багато працездатного населення. А щоб одна людина отримала пенсію, потрібно 7–10 тих, хто працює. Це лише приблизний розрахунок, але він видається мені цілком реальним.

Сьогодні тенденція така: кількість тих, хто отримує пенсію, зростає; а кількість тих, хто платить податки — ні.

Тож я почав цікавитися різними практиками, читати статті та книги, слухати подкасти та відео на цю тему. З року в рік у мене почали формуватися нові фінансові звички: ставити фінансові цілі, вести бухгалтерію тощо.

Щоб отримати бажаний рівень доходів і витрат у момент, коли ви вирішите завершити активно працювати, потрібні дві складові. По-перше, мати різницю між доходами та витратами. По-друге, мати план, що робити з цією різницею. Адже якщо залишити її під матрацом, то гроші з’їсть інфляція.

Чи не єдиний легальний шлях отримати бажаний рівень достатку до певного віку — це інвестиції. Треба постійно вкладати гроші, щоб бачити протягом життя зростання свого капіталу. Про те, як це робити, є купа інформації.

Отже, щомісяця ми маємо: гроші, які можемо вкласти у своє майбутнє, інфляцію і прибуток від грошей, які інвестуємо. Як зрозуміти, чи вистачить нам цих коштів, щоб почати жити на пенсію через 10—20—30 років?

Є формули для цього, а ще можна вести онлайн-таблиці. Але я хотів бачити, як мої гроші зростають завдяки відсоткам чи згорають через інфляцію. На мою думку, ми сприймаємо картинки значно краще за текстову інформацію.

Я шукав та пробував різноманітні інструменти, але мені забракло наочності. Тож я пішов банальним шляхом розробника — треба самому розробити те, що влаштовуватиме. І так створив калькулятор.

Особливості реалізації

Ідея розробити власний калькулятор за часом збіглася з бажанням спробувати себе як Front-end розробника. Я вирішив робити все на стороні клієнта — це простіше, не треба готувати бекенд та інтеграцію з ним. Бонусом ще й можна трішки зекономити коштів на хостингу.

Щодо фреймворку, то я обирав між React, Angular та Vue.js. Позаяк багацько досвіду у Front-end я все одно не мав, віддав перевагу Vue.js. Навіть не знаю чому — мабуть, він здався мені легшим за інші.

Мій калькулятор влаштований просто. Це декілька елементів для налаштування даних, бібліотека, яка все це зберігає в сховище браузера, та бібліотека, яка малює графік. Якщо ви робили розрахунки, то, повернувшись до браузера, побачите місце, на якому зупинилися.

Коли проєкт почав рахувати та малювати більш-менш так, як було задумано, з’явилася потреба зручно зобразити все на сторінці.

З початку розробки було декілька версій продукту. Я розповів про калькулятор людям, які розумілись на темі особистих фінансів, та вніс деякі правки після отримання зворотного зв’язку. За той час трохи змінився дизайн, з’явилося декілька мов.

Для збереження коду я використовую GitHub, мабуть, як і більшість сучасних розробників. Сам проєкт тримаю в приватному репозиторії й поки не планую його відкривати.

Для хостингу обрав DigitalOcean. Вони мають безплатний тариф для простих статичних сайтів з невеликим навантаженням. А ще у них гарна інтеграція з GitHub. Натиснувши одну кнопку, за кілька хвилин я маю доступну нову версію сайту.

Функції продукту

Калькулятор допомагає подивитись, що може статися в тому чи іншому випадку з фінансами за роки життя. Наприклад, побачити, в якому віці можливо завершити активно працювати та почати жити коштом накопиченого капіталу. Для цього треба вказати, скільки ви бажаєте інвестувати, який прибуток очікуєте та на яку інфляцію розраховуєте. Далі графік все продемонструє.


Або ж можна дізнатися, скільки треба грошей, аби в певному віці завершити активно працювати та жити вільно. З огляду на графік, підбираємо суми та відсотки, які потім можна використовувати у фінансовому плані.

Ще один варіант: якщо хтось бажає залишити спадок чи, наприклад, почати жити на збереження раніше і витратити все. Все це можна побачити на графіку.

Для цього треба обрати роки активної праці, коли ви маєте змогу щось відкладати. Потім вибрати суму, яку вже накопичили та з якої почнете інвестувати. Далі вказуєте, скільки плануєте відкладати щомісяця. Залишилось зазначити, скільки плануєте витрачати «на пенсії» :)

Вказати точку А та точку Б фінансового плану — половина справи. Далі ми повинні намітити шлях, яким рухатимемось. Треба встановити відсотки, які впливатимуть на дохід в активній фазі та на пенсії, інфляцію.

Доступність і популярність продукту

Я одразу розробляв калькулятор з розрахунком на загальнодоступність. Думаю, коли люди заглянуть у своє майбутнє, то скоріше почнуть робити щось, щоб подбати про нього.

На мій погляд, що більше буде тих, хто розбирається в особистих фінансах та поширює фінансову грамотність хоча б своїм прикладом, то більше людей вкладатимуть в економіку та розвиток своєї країни.

Зараз користувачів не багато, щодня на сайт заходить кілька людей. В часи активної розробки, коли я просив тестувати продукт у різних чатах, їх було близько 20–30 на день. Для збору статистики користуюсь базовою аналітикою від Google.

Майбутнє проєкту

У будь-якому разі до перемоги в мене навряд чи буде час займатися чимось схожим. Зараз усе спрямовано на волонтерство та допомогу ЗСУ. Також треба працювати з клієнтами, щоб вони й далі платили кошти, на які можна підтримувати наших захисників та захисниць.

Калькулятор має необхідні функції. В планах є кілька нереалізованих бажань від користувачів і кілька покращень, яких не вистачає особисто мені.

Раніше думав щодо розробки інструментів для фінансового планування та інвестування. Але після скромного вивчення ринку мені здалось, що в нас не так багато людей, яким було б це потрібно. Ще менше тих, хто зацікавлений платити за них кошти. А ще треба подолати конкуренцію з Excel, а це реально гнучкий інструмент при правильному використанні.

Слава Україні!

Похожие статьи:
Graphics Interchange Format (GIF) is becoming very popular among a lot of individuals and it is not a surprise to see that a lot of videos are being converted to this type of format. The most popular GIFs are the animated version because they are...
Ми проаналізували ринок праці у квітні 2020 року. Подивилися, що відбувалося з вакансіями та відгуками на jobs.dou.ua, а також...
З початку широкомасштабного російського вторгнення харківська компанія CodeIT відкрила два офіси: у Софії (Болгарія)...
В середині березня 800 співробітників «Леруа Мерлен Україна», серед них і 9 IT-спеціалістів, відрізали від усіх...
У новому випуску DOU Podcast говоримо про те, як відбуватиметься повоєнна відбудова України, для чого Мінцифра...
Яндекс.Метрика