Ми розробляємо Laravel-бекенди для мобільних застосунків — не «дешевий» вибір, а прагматичний. Коли у клієнта вже є PHP-команда, або коли потрібно за 4–6 тижнів випустити робочий API з аутентифікацією, push-сповіщеннями, файловим сховищем і чергами — Laravel Sanctum + Eloquent + Horizon перекривають 90% завдань без зайвої інфраструктури. Наш досвід — 5+ років і 30+ проєктів, гарантія якості коду та безпеки.
Чому Laravel для бекенду мобільного застосунку?
Laravel дає готові рішення для типових завдань мобільного бекенду: аутентифікація, черги, кешування, REST API. Це скорочує час розробки та спрощує підтримку. При цьому ми використовуємо не просто «з коробки», а з оптимізаціями під високі навантаження.
Типові помилки в Laravel-бекенді
Eloquent N+1 вбиває мобільний API. User::all() з ->posts всередині foreach — класика. На колекції з 30 елементів летить 31 запит, відповідь 600ms замість 20ms. Мобільний клієнт чекає, потім retry, потім скарга в сторі. Фікс — with(['posts']) при завантаженні, ->load() якщо вже завантажили. Діагностуємо через Laravel Debugbar або Telescope з підрахунком duplicate queries.
Черги без supervisor. Mail::send() або FCM-push у HTTP-handler — запит висить поки Firebase не відповів. Якщо APNs лагає (буває), мобільний клієнт отримує 30-секундний таймаут. Всі асинхронні операції — в dispatch(new SendPushJob($payload)) з Laravel Horizon для моніторингу Redis-черг.
Як ми будуємо Laravel-бекенд для мобайлу
Аутентифікація — Laravel Sanctum для SPA/mobile token-based auth. Токени зберігаються в таблиці personal_access_tokens, при логіні видаємо пару access + refresh. Sanctum з коробки не робить refresh rotation — реалізуємо через кастомний RefreshTokenController з інвалідацією старого токена в БД.
Для OAuth через соцмережі — Laravel Socialite з драйверами Google, Facebook, Apple. Apple Sign In потребує окремої уваги: nonce валідується в id_token, а email Apple надає тільки при першому логіні — зберігаємо одразу.
Push-сповіщення: пакет laravel-notification-channels/fcm для FCM та laravel-notification-channels/apn для APNs. Нотифікації — через Laravel Notifications API ($user->notify(new OrderStatusChanged($order))), канал вибирається за методом via().
Як ми оптимізуємо Eloquent запити?
Реальний кейс: маркетплейс для iOS/Android, ~25 000 DAU. REST API на Laravel 10, PostgreSQL, Redis для сесій та кешу. Endpoint каталогу товарів (/api/v1/products) з фільтрами та пагінацією. Перша версія — Eloquent з ->paginate(20), час відповіді 350–800ms залежно від фільтрів. Після оптимізації: raw query через DB::select() для складної вибірки + Cache::remember() на 60 секунд для популярних фільтрів — p95 став 40ms. Мобільний клієнт перестав показувати skeleton-лоадер.
| Тип запиту | Час відгуку (p95) | Кількість SQL запитів |
|---|---|---|
| Eloquent без with | 600 ms | 31 |
| Eloquent з with() | 120 ms | 2 |
| Raw query + Cache | 40 ms | 1 (або 0 при кеші) |
Структура API-проєкту
app/ ├── Http/Controllers/Api/V1/ — контролери з версіонуванням ├── Http/Resources/ — API Resources для форматування відповідей ├── Http/Requests/ — Form Request validation ├── Models/ — Eloquent-моделі ├── Jobs/ — асинхронні задачі (пуши, листи, вебхуки) └── Notifications/ — Laravel Notifications routes/api.php — роути з `sanctum` middleware API Resources замість ->toArray() напряму — це важливо. Resource контролює поля відповіді, вкладені відношення завантажуються через whenLoaded() без ризику N+1, і структура відповіді не змінюється несподівано при зміні моделі.
Як налаштувати Laravel для push-сповіщень
- Встановіть пакет
laravel-notification-channels/fcm. - Створіть клас сповіщення
app/Notifications/PushNotification.php. - Визначте метод
via()— поверніть['fcm']. - У методі
toFcm()поверніть екземплярFcmMessageіз заголовком і тілом. - Відправте:
$user->notify(new PushNotification($data)).
Деплой
Laravel Octane (Swoole або RoadRunner) дає 3–5x приріст throughput порівняно з PHP-FPM — актуально якщо бюджет не дозволяє горизонтальне масштабування. На Swoole важливо враховувати: статичні властивості класів живуть між запитами, ServiceProvider не перестворюється — потрібно явно скидати стан через octane:table або уникати stateful-сервісів.
Supervisor для черг: php artisan queue:work --queue=high,default --sleep=3 --tries=3. Laravel Horizon дає веб-інтерфейс для моніторингу воркерів і метрик Redis-черг.
Що входить у роботу
- Проєктування архітектури API
- RESTful ендпоінти з версіонуванням
- Аутентифікація (Sanctum/Passport) та OAuth2
- Push-сповіщення (FCM, APNs)
- Черги та фонові задачі (Jobs, Horizon)
- Оптимізація запитів (Eager Loading, Cache)
- Документація (Scribe/OpenAPI)
- Розгортання та моніторинг
- Навчання команди (2-3 сесії)
Строки та вартість
Строки: API з 12–18 ендпоінтами — 3–5 тижнів. Складний маркетплейс — 8–12 тижнів. Вартість розраховується індивідуально, виходячи з обсягу робіт. Оцінимо ваш проєкт безкоштовно — напишіть нам.
Додаткові деталі
Ми використовуємо Continuous Integration (GitLab CI/GitHub Actions) для автоматичного тестування та деплою. Код покриваємо юніт-тестами (PHPUnit) та інтеграційними тестами для критичних сценаріїв.Замовте розробку під ключ — отримайте надійний бекенд, який не підведе при пікових навантаженнях. Зв'яжіться з нами для консультації.







