интерфейс "дела"
интерфейс "дела"

Введение

Мой опыт работы в продажах в различных компаниях многому меня научил. Одним из ключевых инструментов, без которого невозможен эффективный процесс продаж, является CRM-система. Для руководителей и менеджеров по продажам она должна решать множество задач и отвечать на целый ряд вопросов. Но об этом чуть позже.

На рынке представлено не так много распространённых CRM-систем для управления продажами, и в большинстве компаний мне приходилось работать именно с ними. В некоторых случаях я сталкивался с кастомными решениями, которые значительно упрощали жизнь пользователю благодаря удобному интерфейсу и гибкости. Поэтому на собеседованиях я часто задавал вопрос о CRM-системе компании. Разочарование наступало, когда выяснялось, что в компании используют "шаблонные" решения, которые не всегда соответствовали требованиям пользователей.

Ещё до того, как я начал заниматься разработкой, мне пришла идея поучаствовать в создании собственной CRM-системы и глубже погрузиться в процесс её разработки. Спустя несколько лет я начал заниматься веб-разработкой, и в какой-то момент понял, что даже небольшому бизнесу, где я работал, нужна CRM. Я пробовал использовать таблицы в Google Docs, тестировал триальные версии популярных CRM, но они были перегружены ненужной информацией и казались неудобными. Так что я решил создать что-то простое, что будет удобно мне и, возможно, другим.

В своей CRM я использую Next.js. Эта система не претендует на то, чтобы обслуживать тысячи пользователей, но она точно может решить задачи 1-2 небольших отделов продаж. У меня есть репозиторий на GitHub, и если кому-то это решение покажется интересным, его можно взять и доработать под свои задачи. В этой статье я постараюсь кратко описать текущий функционал, с какими трудностями я столкнулся и что удалось внедрить в качестве новых гипотез.

Подготовительный этап

Так как мои клиенты — это юридические лица, мне понадобились три основные сущности для отслеживания:

  1. Компании

  2. Сделки у компаний

  3. Дела (или задачи) у сделок

В качестве СУБД я использую Prisma с PostgreSQL, что позволяет легко управлять связями между этими сущностями. Для системы авторизации я использую NextAuth.js v5 в бета-версии. Несмотря на отсутствие опыта работы с этой библиотекой, мне понравилась её гибкость по сравнению с предыдущими версиями, и её освоение не показалось мне слишком сложным.

Чтобы не тратить много времени на визуальную часть, я решил использовать библиотеку shadcn/ui и немного кастомизировать её под свои задачи. Стоит отметить, что с тех пор, как я попробовал Tailwind CSS, я больше не использую обычный CSS в своих проектах — Tailwind стал для меня основным инструментом для стилизации интерфейсов.

календарь
календарь

Текущий функционал

На данный момент CRM включает следующие возможности:

  • Компании: можно добавлять и управлять компаниями.

  • Сделки: каждая компания может иметь несколько сделок, что позволяет отслеживать статус и прогресс работы с клиентами.

  • Задачи: для каждой сделки можно создавать задачи, что помогает не забывать о важных шагах в процессе работы.

Система авторизации позволяет пользователям безопасно входить в систему, и её настройка была довольно простой благодаря NextAuth.js. Для визуализации данных использую простую аналитику и календарь, которые помогают лучше организовывать рабочий процесс. Но пока их функционал очень ограничен. И я его дорабатываю.

настройки
настройки

Будущие планы

В ближайшее время я планирую:

  1. Добавить интеграцию с мессенджерами, чтобы пользователи могли получать уведомления о сделках и задачах в привычных для них приложениях.

  2. Улучшить систему аналитики и добавить больше возможностей для отчётов.

  3. Продолжить разработку системы календарей для удобного планирования встреч и задач.

  4. Добавить настройки для работы. (Сейчас есть но буквально пару. Что то типа изменения пароля и настройке темы.)

  5. Добавить саморизацию комментариев через Ai инструменты. На самом деле эта штука уже работает но пока в тесте.

Заключение

Этот проект для меня — хобби, но я планирую продолжать его развивать и делиться своим опытом в следующих статьях. Буду рассказывать о новых функциях, доработках и проблемах, с которыми сталкиваюсь. Если вам интересен мой проект, вы можете посмотреть репозиторий на GitHub, доработать его под свои нужды и, конечно, поделиться своим опытом.

Спасибо за внимание, и до встречи в следующих статьях!

Комментарии (5)


  1. ncix
    17.10.2024 08:26

    Больше разных CRM рынку!


    Понимаю, что у всех клиентов свои приоритеты, однако из своего опыта разработки, внедрения и использования различных CRM посоветовал бы следующую приоритезацию развития:
    1. Интеграция CRM с бухгалтерией или банком - чтобы видеть факты прихода денег, причем с привязкой к сделкам. Потому как выполненная работа менеджера по продажам - это деньги на счёте. А менеджер - главный пользователь CRM

    2. Расчёт бонусов/премий менеджерам. Поддержка разных расчетных алгоритмов или даже скриптов. Так чтобы менеджер в любой момент видел сколько он наработал в этом месяце.

    3. Интеграции с почтой, мессенджерами, телефонией - чтобы видеть и слышать всю историю сделок и отношений с клиентом

    4. Раз уж CRM для B2B хорошо бы иметь функционал длинных многоэтапных продаж, многоэтапных работ с актированием. Планы расходов и поступлений денег по уже законтрактованным работам.

    6. Что касается аналитики, разработать в рамках CRM действительно мощную аналитическую систему - крайне сложная и объемная задача. На мой взгляд лучше обеспечить удобные способы интеграции с внешними системами. Начать можно хоть с выгрузки в csv/xlsx.

    7. Календари для встреч и задач на мой взгляд незкоприоритетны, т.к. сотрудники уже наверняка имеют календарь в почтовом клиенте. Два календаря - это скверно.


  1. Paveldpv
    17.10.2024 08:26

     Стоит отметить, что с тех пор, как я попробовал Tailwind CSS, я больше не использую обычный CSS в своих проектах — Tailwind стал для меня основным инструментом для стилизации интерфейсов

    о да )) под каждым словом подпишусь, крайне удобная вещь Tailwind CSS

    классный проект )
    развернут локально ? сколько людей пользуются?
    сейчас тоже разрабатываю crm систему ) тоже nextjs и сопутствующее) если вдруг буду полезен каким советом помогу )) очень круто )


  1. jbourne
    17.10.2024 08:26

    Делаю тоже кастомную CRM. Стек тот же самый, что и у вас + даже база на NodeJS (NoSQL так сказать, просто потому-что могу :) ). Короче все решение на Ноде фактически.

    Работает 3+ года. Полет нормальный. Все летает. Заказов много. Ритейл.

    Кастомная, потому что сложные бизнес правила (участвуют много стран на разных континентах) и готового нет и близко. До нашей CRM была пачка ГуглоДок + проприетарные решения в конкретных местах. Это конкретно мешало масштабированию.

    Еще в курсе вот про такой движек, который может быть бы рассмотрел, если начинал бы сначала.

    Кастомная CRM - это значит, что бизнес правила сложны и заморочены. И TypeScript+NextJS сильно помогает тут в скорости и гибкости имплементации. Именно это решало при выборе тех стека.

    Если какая то часть будет тормозить по причине NodeJS - просто вынесу в Java/... микросервис и все. Базы это тоже касается.

    П.С. Я Джава тех. лид и в курсе, что такое быстро и оптимально.


  1. leon-mbs
    17.10.2024 08:26

    f а еще проще написать на PHP как и сделано в большинстве CRM

    просто потому что это позволить разворачивать ее на дешевом виртуальном хостинге. особенно это актуально для простых CRM

    Если конечно CRM не для личного пользования но в таком случае кому она интересна чтобы о ней писать


    1. gun_dose
      17.10.2024 08:26

      В CRM часто бывают всякие сложные формы, которые реально проще делать на реакте, поэтому на мой взгляд для CRM оптимально иметь бэкенд на PHP, а фронтенд на реакте. Скомпилированный скрипт фронтенда можно всё так же отдавать с дешёвого виртуального хостинга.

      А вот Next.js тут вообще не нужен. Нет никакого смысла делать SSR для приложения, где все страницы доступны только авторизованным юзерам.