Кастомний корпоративний інтранет-портал
Корпоративний інтранет-портал — закрита платформа для співробітників: стрічка новин, база знань, заявки та погодження, телефонний довідник, управління завданнями, HR-функції. Коли готові рішення на кшталт SharePoint, Bitrix24 або Confluence не закривають специфіку бізнесу або вимоги безпеки, доводиться будувати кастомний інтранет. Ми займаємося цим понад 8 років і реалізували понад 50 проєктів для компаній з чисельністю від 50 до 5000 співробітників. Типовий портал часто не справляється з нестандартними маршрутами погодження або інтеграцією з legacy-системами — саме тоді замовник звертається до кастомної розробки.
Типові проблеми, які вирішує інтранет
Розрізненість інформації. Документи в одному місці, новини в іншому, CRM — у третьому. Співробітники витрачають до 30% часу на пошук даних. Інтранет об'єднує все в єдиному інтерфейсі: стрічка новин, структурована база знань, пошук по всіх документах.
Складні погодження. Заявки на відрядження, закупівлю обладнання або відпустку проходять через кількох керівників. Без автоматизації процес затягується на дні. Наш конструктор форм і маршрутів погодження скорочує час обробки заявки до 2–4 годин.
Відсутність єдиного довідника. Актуальні контакти співробітників, org chart, компетенції — все в одному місці з синхронізацією з Active Directory або 1С:ЗУП.
Як ми це робимо: стек і кейс
З нашої практики: для одного клієнта (IT-компанія, 300 співробітників) ми побудували портал на Laravel 11 з React 18. Front-end — SSR на Next.js 14. База даних — PostgreSQL, пошук через Meilisearch. Аутентифікація — SAML 2.0 через ADFS. Впровадили за 3,5 місяці.
Ключовий модуль — конструктор заявок з динамічними формами та послідовними етапами погодження. Наприклад, заявка на закупівлю: співробітник заповнює форму, система перевіряє бюджет, відправляє керівнику відділу, потім фінансовому директору. На кожному кроці — сповіщення в Telegram.
«Портал скоротив час погодження заявок з двох днів до трьох годин», — зазначив керівник IT-відділу клієнта.
Чому варто обрати кастомну розробку замість готового рішення?
Готові платформи (Bitrix24, SharePoint) підходять для простих сценаріїв, але коли потрібна нестандартна логіка або високий рівень безпеки, вони програють. Кастомний інтранет:
-
не прив'язаний до вендора та ліцензійних платежів;
- легко інтегрується з legacy-системами (1С, CRM, ERP);
- дозволяє реалізувати будь-які бізнес-правила;
- масштабується під зростання компанії без обмежень.
Кастомна розробка в 2-3 рази швидше впроваджує нові модулі порівняно з доопрацюванням Bitrix24, оскільки ми не обмежені архітектурою вендора. Економія на ліцензіях — до 40% на рік для середнього бізнесу. Середній термін окупності кастомного інтранету — 1,5–2 роки за рахунок скорочення простоїв та прискорення погоджень.
Процес роботи
-
Аналітика (1–2 тижні). Вивчаємо бізнес-процеси, збираємо вимоги від ключових відділів, визначаємо MVP.
-
Проєктування (2–3 тижні). Малюємо прототипи, погоджуємо структуру порталу, готуємо технічне завдання.
-
Розробка (2–6 місяців). Backend, frontend, інтеграції. Ведемо спринти по 2 тижні, кожен завершується демо.
-
Тестування (2–4 тижні). Функціональне, навантажувальне, безпеки. Пишемо автотести.
-
Запуск і підтримка. Деплой на ваш сервер або хмару, навчання адміністраторів, технічна підтримка.
Приклад технічної архітектури
- Backend: Laravel 11 з модулями аутентифікації (SAML2), конструктором форм, чергою сповіщень.
- Frontend: Next.js 14 з SSR, React 18, Tailwind, react-query.
- Інтеграції: REST API для 1С, Graph API для Exchange, WebSocket для сповіщень.
- База даних: PostgreSQL + реплікація, Redis для кешу.
- Пошук: Meilisearch.
- Розгортання: Docker, CI/CD через GitLab.
Що входить в результат?
- Документація: опис архітектури, інструкції з адміністрування, посібник користувача.
- Вихідний код і права на нього.
- Доступи до сервера, CI/CD.
- Навчання команди (2–3 дні).
- Технічна підтримка на 3 місяці (далі за договором).
Терміни та вартість
MVP — від 3 місяців. Повнофункціональний інтранет — від 5 до 9 місяців. Вартість розраховується індивідуально залежно від складності модулів та інтеграцій. Бюджет проєкту узгоджується на етапі аналітики.
| Параметр |
Кастомний інтранет |
Готове рішення (Bitrix24/SharePoint) |
| Ліцензія |
Відсутня — ви володієте кодом |
Щорічна плата, часто за користувача |
| Гнучкість |
Будь-які доопрацювання |
Обмежена кастомізація |
| Інтеграція |
Будь-які API, legacy |
Тільки підтримувані вендором |
| Безпека |
Повний контроль, аудит, 2FA |
Залежить від вендора |
| Масштаб |
Без обмежень |
Часто є ліміти за функціоналом |
Забезпечення безпеки корпоративного порталу
Всі запити — по HTTPS. Сесії з IP-прив'язкою (опціонально). Журнал дій (audit log) фіксує кожну дію: хто, коли, що змінив. Двофакторна аутентифікація через TOTP. Обмеження доступу за IP або VPN. Для державних компаній — сертифіковані засоби криптографії.
Інтеграції
| Система |
Спосіб інтеграції |
| Active Directory |
LDAP sync, SAML/OIDC |
| 1С:ЗУП |
REST API (HTTP-сервіси) |
| Email (Exchange/Gmail) |
SMTP, Graph API |
| Telegram/Slack |
Бот для сповіщень |
| Jira/GitLab |
Webhook для відображення завдань |
Інтеграція з 1С
Інтеграція з 1С реалізується через REST API (HTTP-сервіси) або обмін файлами (CommerceML). Ми налаштовуємо синхронізацію довідників (співробітники, відділи) та документів (заявки, відпустки) в реальному часі або за розкладом. Для клієнтів з 1С:ЗУП це скорочує ручне введення даних на 70%.
Мобільний доступ
Progressive Web App (PWA) дає співробітникам доступ до інтранету зі смартфона без встановлення з App Store. Push-сповіщення через FCM для важливих оголошень та нагадувань про погодження.
За понад 8 років досвіду ми гарантуємо надійність та відповідність вашим вимогам. Зв'яжіться з нами для консультації — підготуємо КП протягом двох днів. Замовте оцінку вашого проєкту прямо зараз.
Розробка корпоративних порталів та внутрішніх систем
Ми займаємося розробкою корпоративних порталів — CRM, ERP, LMS та Intranet. Кожен такий проект починається не з верстки лендінгу, а з того, як бізнес-правила ляжуть в архітектуру: хто бачить які дані, як синхронізуються 1С та облікова система, як 500 контактів перетворюються на 500 000 без падіння продуктивності. За 7 років ми реалізували понад 40 порталів для компаній з чисельністю від 50 до 5000 співробітників. Оцінимо ваш проект за два робочі дні — просто зв'яжіться з нами.
Як ми забезпечуємо якість архітектури?
Публічний сайт можна запустити без детального проектування — ітеративно виправляти за фідбеком. З корпоративним порталом так не працює: вартість виправлення архітектурних рішень після запуску на 200 користувачів неспівставно вища. Тому ми приділяємо 70% часу аналітиці та прототипуванню, а код пишемо тільки після узгодження рольової матриці та інтеграційної схеми.
Три зони, де найчастіше приймаються погані рішення, — модель прав доступу, продуктивність на великих даних та real-time оновлення.
Як побудувати рольову модель для 30 відділів?
Модель прав доступу. «Менеджер бачить тільки своїх клієнтів, керівник відділу — весь відділ, директор — всю компанію, але фінансові дані — тільки фінансовий директор і вище». Це не три ролі — це матриця з ролей, дозволів, організаційних одиниць та володіння записами. Якщо це реалізувати через if ($user->role === 'manager') в контролерах — через півроку код стане непідтримуваним.
Правильний підхід: Spatie Laravel Permission для базової рольової моделі + Policy класи для object-level permission (can('view', $deal) перевіряє не тільки роль, але й володіння). Для складних ієрархічних структур — ABAC (Attribute-Based Access Control) замість RBAC.
Продуктивність на великих даних. CRM з 500 000 контактів, фільтрація по 10 полях, сортування за активністю — це задача, де наївна реалізація видає 15-секундні запити. Composite indexes, денормалізація агрегатів (last_activity_at на самому записі замість MAX по зв'язаній таблиці), Elasticsearch для full-text пошуку по контактах.
Real-time оновлення. Декілька співробітників працюють з одним документом або задачею. Без WebSocket — постійні setInterval з polling кожні 5 секунд, зайве навантаження на сервер, затримка оновлень. Laravel Broadcasting + Pusher/Soketi або власний WebSocket сервер на Node.js — для сповіщень та змін у реальному часі.
CRM-системи
Типовий набір: контакти, компанії, угоди, активності, воронка продажів, звіти. Технічно це нескладно. Складність — в деталях.
Pipeline з кастомними стадіями. Кожна компанія хоче свою воронку. Стадії повинні бути налаштовуваними без деплою. Таблиця pipeline_stages з position, color, is_final, probability — і drag-and-drop для зміни порядку на UI (React DnD або dnd-kit).
Історія змін. Хто і коли змінив статус угоди, поміняв відповідального, додав нотатку. Audit log через Observer або spatie/laravel-activitylog. На UI — timeline з фільтрацією за типом активності.
Інтеграція з поштою. IMAP/SMTP для підключення корпоративної скриньки, автоматична прив'язка вхідних листів до контактів за email-адресою. Це надійно працює тільки при правильній обробці bounce, spam, авто-відповідей — потрібна фільтрація.
Чому ERP — не про код, а про дані?
ERP — це коли CRM, склад, виробництво, бухгалтерія та HR об'єднані в єдину систему. Повний ERP з нуля — рідкісна задача (зазвичай інтегруються з існуючими системами), але модульні системи під конкретний бізнес — регулярна.
Ключовий принцип: фінансові операції повинні бути незмінними. Не UPDATE orders SET status = 'cancelled' — а створення нового запису order_cancellations з посиланням на вихідне замовлення. Це принцип immutable ledger, який спрощує аудит та reconciliation.
Інтеграція з 1С — майже завжди частина ERP-проекту. Двостороння синхронізація: з 1С в портал (довідники, залишки, ціни) та з порталу в 1С (замовлення, документи). RabbitMQ як шина подій між системами надійніше прямого HTTP-взаємодії — у випадку недоступності 1С повідомлення чекають в черзі.
Як влаштовані LMS: платформи навчання
Learning Management System — це курси, модулі, уроки, тести, сертифікати, прогрес користувачів.
Відео-контент — найбільш навантажена частина LMS. Зберігати відео на власному сервері та віддавати через Nginx — погана ідея: дорого, повільно, немає адаптивного бітрейту. Правильно: завантаження в S3/Cloudflare R2, транскодування через AWS Elemental MediaConvert або Mux, HLS-плейлист для адаптивного стрімінгу через Video.js або Plyr.
Прогрес перегляду — через періодичне відправлення watch_position з фронтенду (кожні 10–30 секунд), зберігання в Redis з періодичною синхронізацією в PostgreSQL. Не зберігати кожну секунду в БД — це вб'є продуктивність.
SCORM-сумісність — якщо потрібна інтеграція з корпоративними тренінговими матеріалами. Окремий модуль, є готові бібліотеки (scorm-again).
Intranet та HR-портали
Корпоративний інтранет: новини, документи, оргструктура, HR-процеси (відпустки, заявки, KPI).
Оргструктура в базі даних — це ієрархічна структура. Adjacency list (parent_id на кожному записі) простий в реалізації, але повільний при рекурсивних запитах. Nested Sets або Closure Table швидше для читання ієрархії, складніше при змінах. В PostgreSQL — рекурсивні CTE (WITH RECURSIVE) з adjacency list — баланс між простотою та продуктивністю.
Погодження документів та заявок — workflow engine. Прості лінійні погодження (співробітник → менеджер → HR → бухгалтер) можна зробити без спеціального движка. Нелінійні (паралельні гілки, умовні переходи, делегування) — варто розглянути готові рішення: Temporal.io для workflow orchestration або власний скінченний автомат на базі патерну state-machine.
Що входить в роботу
При замовленні розробки корпоративного порталу ви отримуєте:
- Архітектурну документацію (ER-діаграми, схема інтеграцій, матриця ролей)
- Повний код в Git-репозиторії з CI/CD
- Доступи до інфраструктури (хостинг, бази даних, сховища)
- Навчання адміністраторів та ключових користувачів (2–3 сесії)
- Гарантійну підтримку на 3 місяці після запуску
Наші принципи проєктування спираються на офіційну документацію Laravel з авторизації (Policies) та рекомендації щодо роботи з чергами.
Технічний стек для порталів
| Слой |
Інструменти |
| Backend |
Laravel + PostgreSQL |
| Frontend |
React + TypeScript (Inertia.js або окремий SPA) |
| Real-time |
Laravel Echo + Soketi / Pusher |
| Пошук |
Meilisearch (швидкий старт) або Elasticsearch (об'єм) |
| Черги |
Laravel Queue + Redis |
| Файли |
S3-compatible (MinIO self-hosted або AWS S3) |
| Моніторинг |
Sentry + Telescope (dev) |
Орієнтири за термінами
| Тип порталу |
Термін |
| CRM (базовий) |
10–16 тижнів |
| LMS (курси + відео + тести) |
14–22 тижні |
| HR-портал (відпустки, KPI, оргструктура) |
12–20 тижнів |
| Корпоративний ERP (модульний) |
24–52 тижні |
Вартість розраховується індивідуально після детальної аналітики вимог та рольової моделі. Щоб отримати попередню оцінку, напишіть нам — ми проаналізуємо вашу задачу та запропонуємо оптимальне рішення під ключ.