Pet-проєктДоповідь

Pet-проєкт: від ідеї до production

Чому власний застосунок, який працює в інтернеті, — найкоротший шлях пройти повний життєвий цикл продукту

1 Ідея 2 Код 3 Production 4 Користувачі 5 Проблеми 6 Досвід PET власний продукт від ідеї до users
Що це

Що таке pet-проєкт

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

Робочий проєктНавчальний проєктPet-проєкт
МетаПрибуток компанії, задача бізнесуОцінка, залік, сертифікатВирішити власну проблему, навчитися
Хто вирішуєProduct owner, тімлід, архітекторВикладач, методичкаВи
СтекТой, що вже є в компаніїТой, що в програмі курсуБудь-який, навіть «не прод»
ЗакінчуєтьсяКоли бізнес каже «досить»Після здачіКоли є живі користувачі
ВідповідальністьПоділена між командоюФактично відсутняПовна й особиста
Навіщо

Навіщо розробнику pet-проєкти

01

Нові технології

На роботі стек фіксований. У pet-проєкті можна спробувати Go, Rust, Svelte, Postgres замість MySQL — без ризику для бізнесу

02

Свобода рішень

Ніхто не каже «так історично склалося». Ви самі обираєте архітектуру, бібліотеки й спосіб деплою — і самі живете з наслідками

03

Інженерне мислення

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

04

Портфоліо

Посилання на робочий застосунок переконує краще за будь-який рядок у резюме. Код у GitHub показує, як ви думаєте

Головне: pet-проєкт — єдине місце, де junior проходить увесь цикл, а не лише свій тікет.

Дискусійне питання

Чи має pet-проєкт приносити прибуток?

«Так, інакше він помре»

  • Гроші — найчесніша перевірка, що проблема справжня
  • Навіть $5 на місяць за сервер мотивують не закинути
  • Платні користувачі дають вимоги, яких не вигадаєш сам
  • Indie hacking, SaaS на одну людину — реальна кар'єрна траєкторія

«Ні, прибуток вбиває свободу»

  • Щойно є клієнти — зникає право експериментувати зі стеком
  • Підтримка, рахунки, GDPR, податки замість нових технологій
  • Більшість ідей не монетизуються, і це нормально
  • Мета — досвід; продукт є побічним ефектом

Компроміс: ставте ціль «один справжній користувач, який не ви», а не «перший долар». Гроші прийдуть або ні — досвід залишиться.

Ідея

Як обрати ідею для pet-проєкту

Не починайте з великого

«Своя соцмережа», «аналог Notion», «маркетплейс» — це роки роботи команди. 90% таких проєктів закінчуються на екрані логіну.

Вирішуйте конкретну проблему

Краще свою: вам не треба проводити дослідження користувачів — ви і є користувач. Біль, який ви відчуваєте щотижня, — найкраще ТЗ.

Визначте MVP

Одна функція, яка вже приносить користь. Усе інше — у список «потім». Якщо MVP не можна зробити за кілька вихідних — він ще не MVP.

Шлях ідеї
Щось дратує →Є готове рішення? →Одна функція →MVP →Перший користувач →Ітерації
Ідея

Той самий інтерес, інший масштаб

Занадто велика ідеяТа сама ідея як MVP
Соцмережа для розробниківTelegram-бот, що щопонеділка надсилає підсумок вашої активності на GitHub за тиждень: коміти, PR, стрік
Платформа онлайн-курсівСторінка з розкладом і нагадуванням про дедлайни однієї групи
Фінансовий застосунок з ШІІмпорт виписки банку в таблицю з категоріями витрат
Маркетплейс для домашніх майстрівКаталог з десятьма майстрами вашого району і формою заявки
Система керування проєктамиКанбан-дошка для себе, яку можна відкрити з телефону

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

Код

Від ідеї до працюючого застосунку

Продуктове мислення

Цінність для користувача, метрики, гіпотези, MVP, пріоритети

Аналіз вимог

User stories, критерії приймання, нефункціональні вимоги

UX дизайн

Дослідження користувачів, сценарії, прототипи, юзабіліті-тести

UI дизайн

Figma, дизайн-системи, типографіка, доступність (a11y)

Архітектура

Системний дизайн, патерни, C4, OpenAPI, ADR

Команда і процеси

Jira, Confluence, Scrum, Kanban, Slack

Frontend

HTML, CSS, JavaScript, TypeScript, React, Vue

Backend і API

Node.js, Python, Go, Java, PHP, REST, GraphQL

Дані

PostgreSQL, MySQL, MongoDB, Redis, S3, MinIO

Тестування

Jest, PyTest, Playwright, Cypress, k6, SonarQube

Контейнери

Docker, Compose, Swarm, Kubernetes

Мережа і доставка

DNS, HTTPS, Nginx, Traefik, CDN, балансувальники, черги

Хмари і хостинг

Linux, VPS, AWS, Google Cloud, Azure, PaaS

Автоматизація

Git, GitHub Actions, GitLab CI, Terraform, Ansible

Моніторинг

Prometheus, Loki, Sentry, Grafana, Kibana, Datadog

Робота з ШІ

Агенти, контекст, специфікації, перевірка результату

Продукт і проєктуванняІнженерія та інфраструктураРобота з ШІ
Localhost

На localhost працює все. Production починається там, де ваш код зустрічає чужий комп'ютер, чужу мережу і чужі дані.

Застосунок, який ви відкриваєте лише з власної IDE, — це ще не продукт. Це ескіз продукту.

Localhost

Що змінюється після виходу в production

localhostproduction
КористувачіВи один, і ви знаєте, куди клікатиЛюди, які роблять те, чого ви не передбачили
ДаніТестові, їх можна стертиСправжні; втратити їх — значить втратити довіру
ПомилкиВидно в терміналі одразуНіхто не скаже, що зламалося, якщо немає логів
МережаМиттєва, без збоївПовільна, з обривами, з мобільного
БезпекаНе має значенняВідкритий порт сканують за години після запуску
Час роботиПоки запущено npm run dev24/7, зокрема під час оновлень
ОновленняCtrl+SЗбірка, деплой, міграція, відкат, якщо щось пішло не так
Production

Реальні користувачі приносять реальні проблеми

  • Хтось вставив емодзі в поле, де ви чекали число
  • Файл на 200 МБ там, де ви тестували на 2 КБ
  • Сервер упав о третій ночі, а дізналися ви вдень із повідомлення в Telegram
  • Міграція зламала таблицю, а бекапу немає
  • Через місяць диск заповнили логи
  • Домен прострочився, бо автоплатіж не пройшов

Чому це добре

Кожна з цих проблем — тема, яку junior у компанії бачить лише з боку: нею займаються DevOps, SRE або сеньйор. У pet-проєкті вона ваша, і ви розумієте її не з лекції, а з ночі, коли все впало.

Саме тут народжується «розуміння системи в цілому», про яке йшлося в попередній доповіді.

Production

Як вебзастосунок працює в інтернеті

Користувач браузер my-app.dev Domain ім'я, яке запам'ятають DNS ім'я → 203.0.113.7 HTTPS :443 SERVER / VPS · UBUNTU · DOCKER Reverse proxy Nginx / Traefik / Caddy TLS-сертифікат, маршрути, стиск, обмеження запитів http :3000 Application ваш backend + frontend контейнер із кодом, читає змінні оточення :5432 Database PostgreSQL том на диску, бекапи, порт закритий зовні HTTP / HTTPS Браузер і сервер домовляються за протоколом HTTP; HTTPS додає шифрування, і без нього сучасний браузер покаже «небезпечно»
Production

Сім слів, які треба розуміти, а не лише знати

ТермінЩо це насправдіЩо з ним робите ви
DomainЛюдське ім'я вашого застосунку, яке ви орендуєте в реєстратораКупуєте за $5–15 на рік, вказуєте DNS-записи
DNSРозподілена «телефонна книга»: ім'я → IP-адресаСтворюєте A-запис на IP сервера, чекаєте до години
Server / VPSВіртуальна машина в чужому дата-центрі, доступна по SSHСтавите Docker, налаштовуєте firewall, оновлюєте
HTTP / HTTPSПротокол запит-відповідь; HTTPS — той самий, але шифрованийОтримуєте сертифікат Let's Encrypt, редиректите 80 → 443
Reverse proxyОдин вхід на сервер, який розводить запити по застосункахNginx, Traefik або Caddy; саме тут живе TLS
ApplicationВаш код у контейнері, що слухає внутрішній портЗбираєте образ, запускаєте, читаєте логи
DatabaseПроцес зі станом: єдине, що не можна просто перестворитиТом на диску, бекапи, міграції, закритий порт
Деплой

Три шляхи деплою pet-проєкту

Класичний: shared hosting

cPanel-хостинг за $2–5. PHP (Laravel, WordPress) і статика: файли по FTP або з Git, MySQL уже є, SSL — кнопкою. Деплой за годину.

Простий: PaaS

Railway, Render, Vercel, Fly.io. Підключаєте GitHub-репозиторій — платформа сама збирає, запускає, видає HTTPS-адресу. Деплой за 15 хвилин.

Просунутий: VPS + Docker

Hetzner, DigitalOcean + Docker Compose + Nginx або Traefik. Сервер, домен, сертифікати, бекапи — самі. Деплой за вихідні, але ви розумієте кожен шар.

Shared hostingPaaSVPS + Docker
СтекPHP, статика; Node і Python — рідкоУсе, що збирається в контейнерБудь-який
Ціна$2–5 на місяць, база включенаБезкоштовний tier, далі $5–20 за сервіс$4–6 на місяць за все
СкладністьМінімальна: FTP і панельНизька: натиснули DeployСередня: SSH, Linux, Docker, DNS, TLS
КонтрольМайже нуль: без root і фонових процесівОбмежений: що дозволяє платформаПовний: будь-який процес, крон, воркер
РизикиСусіди на сервері, старі версії PHPЗміна тарифів, «сон» безкоштовних інстансівВи ж і DevOps: оновлення, безпека, бекапи
Чого навчитесьДомен, DNS, FTP, базова панельДеплой як кнопка, env, логиЯк насправді працює інтернет
Деплой

Практичний deployment: шість кроків

1

Сервер

VPS на Ubuntu, SSH за ключем, ufw відкриває лише 22, 80, 443

2

Домен

A-запис на IP сервера. Поки DNS оновлюється — ставимо Docker

3

Docker Compose

Проксі, застосунок, база — три сервіси в одному файлі

4

Env variables

Секрети в .env на сервері, ніколи в репозиторії

5

HTTPS

Caddy або Traefik отримують сертифікат Let's Encrypt автоматично

6

Запуск

docker compose up -d, міграції, перевірка з телефона

Кожен крок окремо — година роботи. Разом — перший застосунок, який працює без вашого ноутбука.

Експлуатація

Деплой — не фініш. Що потрібно після нього

Logs

Логи

docker compose logs -f — спочатку досить. Далі — Loki або Better Stack, щоб шукати по всіх контейнерах і не забивати диск

Monitoring

Моніторинг

Uptime Kuma або Better Uptime пінгують сайт щохвилини і пишуть у Telegram, коли він упав. Ви дізнаєтесь раніше за користувачів

Backup

Бекапи

pg_dump щоночі в S3-сумісне сховище. Бекап, який жодного разу не відновлювали, — це не бекап

Security

Безпека

Оновлення ОС, fail2ban, закриті порти, HTTPS, rate limit на логін, залежності без відомих CVE

Updates

Оновлення і відкат

Теги образів замість latest: тоді відкат — це запуск попередньої версії, а не паніка

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

Досвід

Що pet-проєкт дає розробнику

Повний життєвий цикл

Ідея, вимоги, архітектура, код, тести, деплой, підтримка — усі етапи SDLC своїми руками, а не один тікет із середини

DevOps та інфраструктура

Docker, Linux, DNS, TLS, CI/CD перестають бути словами з вакансій і стають речами, які ви налаштовували о другій ночі

System Design на практиці

Чому моноліт, де кеш, що буде під навантаженням, як не втратити дані — відповіді з власного досвіду, а не з відео

Продукт, який можна показати

Посилання, що відкривається з телефона інтерв'юера, і репозиторій із README — найсильніший аргумент на співбесіді

На співбесіді
«Розкажіть про проєкт» →«Ось посилання, ось репозиторій, ось що зламалося і як я це полагодив»
Висновок

Шлях pet-проєкту

Idea→ Code→ Production→ Users→ Problems→ Experience
  • Без production немає users, без users немає problems, без problems немає experience
  • Більшість pet-проєктів зупиняються на кроці Code — і втрачають чотири кроки з шести
  • Маленький застосунок, який живе в інтернеті, цінніший за великий, який живе на localhost
Висновок

Pet-проєкт стає досвідом не тоді, коли написано код, а тоді, коли ним користується хтось інший, щось ламається і ви це лагодите.

Дякую за увагу! Запитання?