Розробка сайтів під ключ: що входить у повний цикл?
Клієнт приходить із завданням «нам потрібен сайт» — і вже в першій розмові з’ясовується, що за цим стоїть: інтернет-магазин з синхронізацією з 1С, корпоративний портал з рольовим доступом, SaaS-платформа з multi-tenant архітектурою або публічний лендінг з A/B-тестами. Це принципово різні завдання — за архітектурою, стеком, термінами та точками складності. За час роботи ми провели понад 150 таких проєктів — від простих лендінгів до високонавантажених платформ, і знаємо, де реально виникають вузькі місця.
Чому вибір rendering strategy — головне рішення на старті?
Більшість сучасних інтерфейсів будуються на React або Vue. Вибір між ними майже ніколи не принциповий — важливіший вибір rendering strategy: SSR, SSG, ISR або SPA.
Для публічних сайтів з SEO-вимогами ми за замовчуванням беремо Next.js App Router або Nuxt 3. ISR дозволяє кешувати сторінки каталогу на CDN та регенерувати їх по тригеру — без повного SSR на кожен запит. Це дає TTFB < 80 ms навіть на каталозі з 200 000 SKU. Для адміністративних панелей, дашбордів, CRM-інтерфейсів — SPA на Vite + React достатньо і працює швидше в розробці. TypeScript обов’язковий: без нього рефакторинг у масштабі болючий. Бандл — постійне джерело проблем. Непомічений moment.js у залежностях додає 230 KB gzip. lodash замість lodash-es ламає tree-shaking. Ми використовуємо @next/bundle-analyzer або vite-bundle-visualizer на кожному проєкті — до деплою, а не після.
Як ми вибираємо стек: backend, database, CMS?
Backend. Laravel — наш основний фреймворк для бізнес-додатків. Octane з Swoole тримає 8 000–12 000 RPS на одному сервері m5.xlarge при правильному налаштуванні — це покриває 95% завдань без горизонтального масштабування. Для Node.js обираємо Fastify замість Express: у 2–3 рази швидше на холодних запитах, краща TypeScript-інтеграція. Go використовуємо для високонавантажених мікросервісів та gRPC.
| Завдання | Стек |
|---|---|
| CMS, e-commerce, REST API для бізнес-логіки | Laravel + PostgreSQL |
| Realtime: чат, сповіщення, стрімінг даних | Node.js (Fastify) + Redis + WebSocket |
| Високонавантажені мікросервіси, gRPC | Go |
| Аналітика, ML pipeline, data-heavy | Django + Celery + PostgreSQL |
| Контентні сайти з помірним навантаженням | Laravel + Octane (Swoole) |
Database. PostgreSQL — основа. N+1 query — найпоширеніша причина деградації продуктивності. На сторінці каталогу з eager loading with(['category', 'images', 'attributes']) це не проблема. Але варто додати користувацькі мітки або агреговані рейтинги — і без withCount, loadMissing або виділеного query object починається по 300+ запитів на сторінку. Ми покриваємо це тестами через Laravel Debugbar та Telescope в dev-оточенні. Індекси — окрема історія. Composite index по (status, created_at DESC) для фільтрованих стрічок. Partial index для soft-deleted записів. GIN-індекси для JSONB-полів та full-text search. Без цього будь-який ORDER BY на великій таблиці перетворюється на seq scan. Wikipedia: PostgreSQL підтверджує його надійність.
CMS. Для проєктів, де редактори працюють з контентом самостійно, вибір CMS залежить від складності структури даних:
- WordPress — для простих корпоративних сайтів та блогів. Швидко, знайомо, величезна екосистема плагінів.
- Headless CMS (Strapi, Directus, Payload CMS) — коли потрібна гнучкість у структурі даних і фронтенд повністю на React/Vue.
- Власна CMS на Laravel — для проєктів з унікальними вимогами до workflow, ролей, версіонування контенту.
Що дає правильно налаштований PostgreSQL?
Коректно налаштовані індекси та eager loading знижують кількість запитів до бази в 10-15 разів. На реальному проєкті з каталогом на 200 000 товарів ми зменшили середній час генерації сторінки з 4.2 s до 0.3 s завдяки composite index на полях фільтрації та кешуванню через Redis. Економія ресурсів сервера дозволяє тримати той самий трафік на дешевшому плані хостингу — різниця до $200 на місяць для середнього магазину.
E-commerce та SaaS: продуктивність та multi-tenancy
Інтернет-магазини — окремий напрямок з високою технічною насиченістю. Тут важливі: продуктивність каталогу (Elasticsearch або PostgreSQL full-text search), коректний checkout з обробкою гонок при резервуванні товарів, інтеграції: 1С, МійСклад, платіжні шлюзи (Stripe, ЮKassa), фасетна фільтрація без N+1.
SaaS — це multi-tenant архітектура, білінг, onboarding, feature flags, rate limiting, audit logs. Wikipedia: Multi-tenancy описує основні підходи. Multi-tenancy на рівні бази даних: shared schema (tenant_id) проти separate databases. Білінг через Stripe з webhook-обробкою — обов’язково ідемпотентний прийом подій.
Як ми будуємо процес і оцінюємо терміни?
- Discovery — збір вимог, аналіз поточної системи, виявлення інтеграцій, ERD.
- Проектування — архітектура, вибір стеку, wireframes / Figma-прототип.
- Дизайн — UI kit, адаптивний дизайн, design system.
- Розробка — спринти по 1–2 тижні, демо після кожного.
- Тестування — unit, integration, e2e (Playwright), навантажувальне (k6 або Locust).
- Деплой — Docker + Nginx, CI/CD через GitHub Actions, моніторинг Sentry + Grafana.
- Підтримка — SLA, оновлення залежностей, масштабування.
| Тип проєкту | Термін |
|---|---|
| Лендінг / візитка | 2–4 тижні |
| Корпоративний сайт | 4–10 тижнів |
| Інтернет-магазин (середній) | 8–16 тижнів |
| SaaS-платформа (MVP) | 12–24 тижні |
| Корпоративний портал / ERP | 16–40 тижнів |
Вартість розраховується індивідуально після декомпозиції. На оцінку впливає кількість інтеграцій, обсяг ролей, вимоги до навантаження та наявність готового дизайну.
Типові помилки, які ми зустрічаємо в готових проєктах
- Відсутність індексів на зовнішніх ключах. Laravel не створює їх автоматично. На таблиці в 500K рядків JOIN без індексу — seq scan на кожен запит.
- JWT без механізму відкликання. Access token живе 15 хвилин — окей. Але якщо немає blacklist або rotation refresh tokens, скомпрометований токен працює до закінчення терміну.
- Відсутність rate limiting на API. Без throttling ендпоінт
/searchабо/exportлегко покласти випадковим скриптом. - Деплой без rollback-стратегії. Blue-green або теговані Docker-образи з можливістю відкотитися за 2 хвилини.
- Логи тільки в stdout без агрегації. Sentry для exception tracking + structured logs в Loki або CloudWatch.
Що ви отримаєте після завершення?
- Документацію: архітектурні схеми, ERD, OpenAPI/Swagger, інструкцію з деплою.
- Вихідний код у приватному репозиторії (GitHub/GitLab) із захистом main-гілки та рев’ю.
- Доступи до хостингу, моніторингу (Sentry, Grafana), CRM/CMS.
- Навчання: 2–3 сесії для адміністраторів та редакторів.
- Підтримка за SLA: гарантійний період 1 місяць (критичні баги — 4 години, інші — 24 години).
Гарантії та досвід
Наш підхід дозволяє скоротити витрати на хостинг на 30-50% — для середнього проєкту це близько $100-200 на місяць економії. Ми маємо 8 років досвіду, понад 150 завершених проєктів та команду з 10+ сертифікованих інженерів (Laravel, React, AWS). Фіксуємо SLA в договорі; при порушенні термінів компенсуємо знижкою на подальше обслуговування. Ліцензійне ПЗ, NDA та обробка персональних даних згідно із законодавством.
Замовте розробку сайту під ключ — отримайте консультацію інженера та точну оцінку термінів. Зв’яжіться з нами, щоб обговорити ваш проєкт і отримати деталі по економії.







