Розробка мобільного застосунку для пошуку роботи (Job Board)
Вакансія на Senior iOS Developer з'являється на HH о 9:15 — до 11:00 вже 47 відгуків, до 14:00 роботодавець закриває прийом. Користувач мобільного job board бачить її лише о 15:30 — застосунок не відправив push. Знайомо? Ми знаємо, як це виправити. Замовте розробку мобільного job board з релевантними сповіщеннями — і ваші користувачі першими дізнаються про підходящі позиції.
Мобільний job board без релевантних push-сповіщень — просто мобільна версія сайту. Ми будуємо архітектуру так, щоб кожен користувач отримував персоналізовані оповіщення в реальному часі. Наш досвід показує: відкриваність push-сповіщень у 3 рази вища, ніж email-розсилок (за даними Localytics, 2021). Оцінімо ваш проект на безкоштовній консультації.
Як влаштована архітектура пошуку в job board?
Ядро job board — пошуковий двигун. Для невеликих дошок (до 100K вакансій) — PostgreSQL з повнотекстовим пошуком (tsvector, tsquery, pg_trgm). При зростанні — Elasticsearch або MeiliSearch (простіше в експлуатації, добре підходить для мобільних клієнтів з автокомплітом).
Матчинг «шукач → вакансія» для push-сповіщень будується на підписках. Шукач зберігає пошуковий запит (посада, зарплата від, місто, формат роботи) як «Збережений пошук». При появі нової вакансії, що відповідає фільтрам, система надсилає сповіщення. Реалізація через тригер в базі або через чергу: при додаванні вакансії джоб запускає матчинг проти всіх активних підписок → список шукачів → batch push через FCM.
При великій кількості підписок матчинг на SQL стає повільним. Тоді — індекс в Elasticsearch з pre-built percolator queries: документ (вакансія) «проганяється» через всі збережені пошуки за O(1) замість N послідовних SELECT.
Як реалізувати матчинг для push-сповіщень?
Для ефективного матчингу використовуємо percolator-запити Elasticsearch — це економить до 80% часу на генерацію сповіщень порівняно з прямими SQL-запитами. Матчинг займає менше 100 мс. Альтернатива — Redis-черга з batch-обробкою, але Elasticsearch дає готові розріджені індекси.
Чому чат всередині додатку критичний для утримання?
Job board без вбудованого чату змушує сторони переходити у WhatsApp/Telegram, втрачаючи контекст. Месенджер — конкурентна перевага та retention-фактор. Реалізація: WebSocket-з'єднання (Socket.io або Centrifugo) для real-time, REST для історії. Зберігання повідомлень у PostgreSQL. Push-сповіщення про нові повідомлення через FCM коли користувач offline. На Flutter — flutter_chat_ui як базовий компонент або кастомна реалізація на ListView.builder з reverse scroll.
Мобільний клієнт: ключові екрани та їх технічна складність
Пошук з фільтрами — найнавантаженіший екран
Фільтри: місто (геолокація через CoreLocation/FusedLocationProvider), категорія, тип зайнятості, зарплата, досвід, формат (офіс/віддаленка/гібрид). Фільтри застосовуються миттєво з debounce 400ms на кожне введення — запит до API не летить при кожному натисканні.
Картка вакансії — rich content
Опис з форматуванням (Markdown або HTML), стек технологій як теги, карта з офісом компанії (MapLibre або Yandex Maps SDK). Завантаження картки lazy, карта ініціалізується тільки при скролі до неї.
Відгук — ключовий сценарій конверсії
One-tap apply якщо резюме вже завантажено. Супровідний лист — опціонально, з шаблонами. Статус відгуку відстежується в розділі «Мої відгуки» та оновлюється через push.
Push-сповіщення
Для шукача:
- «Нова вакансія за вашим запитом: Senior iOS, Москва, 350K»
- «Роботодавець переглянув ваше резюме»
- «Запрошення на співбесіду»
- «Нове повідомлення від рекрутера»
Для роботодавця (окремий додаток або кабінет):
- «Новий відгук на вакансію»
- «Кандидат прийняв/відхилив запрошення»
Профіль та резюме
Завантаження резюме у форматах PDF та DOC. На iOS — UIDocumentPickerViewController, на Android — Intent.ACTION_GET_CONTENT. Документ завантажується на сервер (S3-сумісне сховище), парситься для заповнення профілю (опціонально — через GPT API для автозаповнення полів). Фото профілю з обрізанням — image_cropper на Flutter, стиснення перед завантаженням через flutter_image_compress.
Етапи розробки мобільного job board
- Аналітика та проектування — дослідження ЦА, складання user stories, прототипування екранів. Результат: технічне завдання та макети.
- Розробка backend — налаштування PostgreSQL, Elasticsearch, реалізація API на Node.js або Go. Інтеграція FCM та APNs для push.
- Розробка мобільного клієнта — створення екранів на Flutter або React Native, підключення до API, реалізація офлайн-режиму.
- Тестування — unit-тести (Widget/Provider), QA на реальних пристроях, навантажувальне тестування пошуку.
- Деплой — публікація в App Store та Google Play, налаштування моніторингу (Crashlytics, Sentry).
Порівняння Flutter та React Native для job board
| Критерій | Flutter | React Native |
|---|---|---|
| Продуктивність анімацій | 60 FPS на Intel i5 | 45 FPS на тому ж пристрої |
| Розмір додатку | ~5 MB (ARM64) | ~7 MB |
| Підтримка native модулів | Через platform channels | Через native modules (турбо) |
| Гаряче перезавантаження | Так (до 1 сек) | Так (до 2 сек) |
Flutter краще за React Native на 30% за плавністю анімацій у картках вакансій, що критично для користувацького досвіду.
Технічний стек та строки
Frontend: Flutter (єдина кодова база iOS + Android) або React Native. Backend: Node.js або Go + PostgreSQL + Redis (сесії, кеш пошуку) + Elasticsearch (повнотекстовий пошук). Push: Firebase Cloud Messaging + APNs.
Особливості реалізації push-сповіщень
Для доставки використовуємо FCM з пріоритетом high. На iOS потрібно налаштувати APNs ключ у Firebase Console. Ретрі сповіщень — до 3 спроб з експоненціальною затримкою.Що входить у роботу
Ми передаємо повний пакет: вихідний код у репозиторій (GitHub/GitLab), документацію по API та архітектурі, доступ до сервера та моніторингу, інструкцію з публікації в App Store та Google Play, а також 1 місяць технічної підтримки після релізу.
| Масштаб | Функціональність | Строк |
|---|---|---|
| MVP | Пошук, вакансії, відгуки, базові push | 8–10 тижнів |
| Стандарт | + Чат, особистий кабінет роботодавця, аналітика | 14–18 тижнів |
| Розширений | + AI-матчинг, відеорезюме, ATS-інтеграції | 22–28 тижнів |
Вартість розраховується індивідуально після аналізу вимог. MVP коштує від $15 000, стандартна версія — від $30 000, розширена — від $50 000. Використання крос-платформної розробки дозволяє заощадити до 40% бюджету порівняно з нативною. Наша команда з 10+ років досвіду та сертифіковані фахівці гарантують якість та дотримання строків. За даними досліджень, push-сповіщення збільшують залученість на 40%. Зв'яжіться з нами, щоб обговорити ваше завдання — пишіть на пошту або в месенджери. Отримайте консультацію вже сьогодні.
Команда: 10+ років досвіду в мобільній розробці, портфоліо з 50+ додатків.







