Задача
SHIFT>_CRM - CRM-система для компаний любой сферы с отдельной установкой для каждого клиента.
Универсальные CRM подходят всем понемногу, но никому полностью. Они рассчитаны на «среднюю» компанию, поэтому бизнесу приходится подстраивать свои процессы под чужую логику, мириться с лишними функциями и обходиться без нужных, а данные всех клиентов хранятся у одного поставщика. Задача проекта - сделать CRM, которая работает именно так, как устроен бизнес конкретной компании. Каждой компании разворачивается своя независимая копия на отдельном сервере, со своей базой данных и своим адресом, и настраивается под её процессы: сотрудники, права доступа, этапы работы с клиентами, справочники, собственные поля и даже названия терминов, к которым привыкла команда. В итоге компания получает систему, с которой не сравнится ни одна крупная универсальная CRM, потому что та создавалась не для неё.
В CRM ведётся вся работа с клиентами: карточка клиента с несколькими контактными лицами, комментариями и файлами, смена статуса прямо в карточке, платежи в разных валютах, воронка продаж, напоминания и уведомления. Статистика показывает картину и по клиентам, и по каждому сотруднику: сделки, конверсию, оплаты, звонки и просроченные задачи. Заявки с сайта и из рекламы Facebook Lead Ads автоматически превращаются в новых клиентов, а повторные обращения распознаются. Встроенный телефон позволяет звонить и принимать звонки прямо в браузере, и все разговоры попадают в историю клиента. Для общения внутри команды есть мессенджер с личными чатами, голосовыми сообщениями, ответами на сообщения и мгновенной доставкой.
Отдельная часть системы - искусственный интеллект. ИИ-помощник отвечает на вопросы менеджеров по базе, например кому стоит позвонить сегодня, при этом видит только те данные, к которым у сотрудника есть доступ, и ничего не меняет сам. Компания может использовать собственную модель Qwen на своём сервере или подключить ChatGPT, Claude, Gemini и DeepSeek по ключу API; администратор выбирает основной сервис и решает, кому какой доступен. Описание компании для ИИ можно загрузить из файла Word или PDF, а в режиме обучения ИИ сам накапливает общие заметки о компании, не сохраняя персональные данные клиентов. Каждую ночь ИИ разбирает изменения по клиентам и к шести утра составляет каждому сотруднику план на день. Комментарии можно надиктовать голосом, и они сами превратятся в текст.
Безопасности уделено особое внимание. Пароли хранятся в виде хэшей Argon2id, сессии - в защищённых cookie, доступна двухфакторная авторизация через приложение-аутентификатор. Права проверяет сервер, данные дополнительно защищены на уровне строк базы данных, а все действия записываются в журнал аудита, который нельзя изменить. Есть автоматический выход при бездействии и ежедневный выход всех сотрудников в заданное время, ключи внешних сервисов шифруются, резервные копии создаются автоматически и тоже шифруются, а сайт работает только по HTTPS. Интерфейс переведён на 11 языков, есть несколько цветовых тем и демо-версия с вымышленной компанией для показа клиентам.
Проект полностью написан на TypeScript. Интерфейс построен на React 19 и React Router с собственной дизайн-системой, сервер - на Node.js и Fastify с базой данных PostgreSQL, запросами через Kysely и проверкой данных через Zod. Живые обновления приходят через Server-Sent Events и механизм уведомлений PostgreSQL, телефония работает на WebRTC и JsSIP и проверена с Asterisk. Для ИИ используются OpenAI API, Anthropic SDK и Ollama. Система разворачивается на VPS с Ubuntu через Docker Compose, а Caddy автоматически выпускает HTTPS-сертификаты. Ключевые сценарии покрыты автотестами.
В результате получился продукт, который не нужно подгонять под себя: CRM с телефонией, мессенджером и ИИ-помощником работает на собственном сервере клиента и с первого дня устроена так, как устроен его бизнес.








