Введение
Мой опыт работы в продажах в различных компаниях многому меня научил. Одним из ключевых инструментов, без которого невозможен эффективный процесс продаж, является CRM-система. Для руководителей и менеджеров по продажам она должна решать множество задач и отвечать на целый ряд вопросов. Но об этом чуть позже.
На рынке представлено не так много распространённых CRM-систем для управления продажами, и в большинстве компаний мне приходилось работать именно с ними. В некоторых случаях я сталкивался с кастомными решениями, которые значительно упрощали жизнь пользователю благодаря удобному интерфейсу и гибкости. Поэтому на собеседованиях я часто задавал вопрос о CRM-системе компании. Разочарование наступало, когда выяснялось, что в компании используют "шаблонные" решения, которые не всегда соответствовали требованиям пользователей.
Ещё до того, как я начал заниматься разработкой, мне пришла идея поучаствовать в создании собственной CRM-системы и глубже погрузиться в процесс её разработки. Спустя несколько лет я начал заниматься веб-разработкой, и в какой-то момент понял, что даже небольшому бизнесу, где я работал, нужна CRM. Я пробовал использовать таблицы в Google Docs, тестировал триальные версии популярных CRM, но они были перегружены ненужной информацией и казались неудобными. Так что я решил создать что-то простое, что будет удобно мне и, возможно, другим.
В своей CRM я использую Next.js. Эта система не претендует на то, чтобы обслуживать тысячи пользователей, но она точно может решить задачи 1-2 небольших отделов продаж. У меня есть репозиторий на GitHub, и если кому-то это решение покажется интересным, его можно взять и доработать под свои задачи. В этой статье я постараюсь кратко описать текущий функционал, с какими трудностями я столкнулся и что удалось внедрить в качестве новых гипотез.
Подготовительный этап
Так как мои клиенты — это юридические лица, мне понадобились три основные сущности для отслеживания:
Компании
Сделки у компаний
Дела (или задачи) у сделок
В качестве СУБД я использую Prisma с PostgreSQL, что позволяет легко управлять связями между этими сущностями. Для системы авторизации я использую NextAuth.js v5 в бета-версии. Несмотря на отсутствие опыта работы с этой библиотекой, мне понравилась её гибкость по сравнению с предыдущими версиями, и её освоение не показалось мне слишком сложным.
Чтобы не тратить много времени на визуальную часть, я решил использовать библиотеку shadcn/ui и немного кастомизировать её под свои задачи. Стоит отметить, что с тех пор, как я попробовал Tailwind CSS, я больше не использую обычный CSS в своих проектах — Tailwind стал для меня основным инструментом для стилизации интерфейсов.
Текущий функционал
На данный момент CRM включает следующие возможности:
Компании: можно добавлять и управлять компаниями.
Сделки: каждая компания может иметь несколько сделок, что позволяет отслеживать статус и прогресс работы с клиентами.
Задачи: для каждой сделки можно создавать задачи, что помогает не забывать о важных шагах в процессе работы.
Система авторизации позволяет пользователям безопасно входить в систему, и её настройка была довольно простой благодаря NextAuth.js. Для визуализации данных использую простую аналитику и календарь, которые помогают лучше организовывать рабочий процесс. Но пока их функционал очень ограничен. И я его дорабатываю.
Будущие планы
В ближайшее время я планирую:
Добавить интеграцию с мессенджерами, чтобы пользователи могли получать уведомления о сделках и задачах в привычных для них приложениях.
Улучшить систему аналитики и добавить больше возможностей для отчётов.
Продолжить разработку системы календарей для удобного планирования встреч и задач.
Добавить настройки для работы. (Сейчас есть но буквально пару. Что то типа изменения пароля и настройке темы.)
Добавить саморизацию комментариев через Ai инструменты. На самом деле эта штука уже работает но пока в тесте.
Заключение
Этот проект для меня — хобби, но я планирую продолжать его развивать и делиться своим опытом в следующих статьях. Буду рассказывать о новых функциях, доработках и проблемах, с которыми сталкиваюсь. Если вам интересен мой проект, вы можете посмотреть репозиторий на GitHub, доработать его под свои нужды и, конечно, поделиться своим опытом.
Спасибо за внимание, и до встречи в следующих статьях!
Комментарии (5)
Paveldpv
17.10.2024 08:26Стоит отметить, что с тех пор, как я попробовал Tailwind CSS, я больше не использую обычный CSS в своих проектах — Tailwind стал для меня основным инструментом для стилизации интерфейсов
о да )) под каждым словом подпишусь, крайне удобная вещь Tailwind CSS
классный проект )
развернут локально ? сколько людей пользуются?
сейчас тоже разрабатываю crm систему ) тоже nextjs и сопутствующее) если вдруг буду полезен каким советом помогу )) очень круто )
jbourne
17.10.2024 08:26Делаю тоже кастомную CRM. Стек тот же самый, что и у вас + даже база на NodeJS (NoSQL так сказать, просто потому-что могу :) ). Короче все решение на Ноде фактически.
Работает 3+ года. Полет нормальный. Все летает. Заказов много. Ритейл.
Кастомная, потому что сложные бизнес правила (участвуют много стран на разных континентах) и готового нет и близко. До нашей CRM была пачка ГуглоДок + проприетарные решения в конкретных местах. Это конкретно мешало масштабированию.
Еще в курсе вот про такой движек, который может быть бы рассмотрел, если начинал бы сначала.
Кастомная CRM - это значит, что бизнес правила сложны и заморочены. И TypeScript+NextJS сильно помогает тут в скорости и гибкости имплементации. Именно это решало при выборе тех стека.
Если какая то часть будет тормозить по причине NodeJS - просто вынесу в Java/... микросервис и все. Базы это тоже касается.
П.С. Я Джава тех. лид и в курсе, что такое быстро и оптимально.
leon-mbs
17.10.2024 08:26f а еще проще написать на PHP как и сделано в большинстве CRM
просто потому что это позволить разворачивать ее на дешевом виртуальном хостинге. особенно это актуально для простых CRM
Если конечно CRM не для личного пользования но в таком случае кому она интересна чтобы о ней писать
gun_dose
17.10.2024 08:26В CRM часто бывают всякие сложные формы, которые реально проще делать на реакте, поэтому на мой взгляд для CRM оптимально иметь бэкенд на PHP, а фронтенд на реакте. Скомпилированный скрипт фронтенда можно всё так же отдавать с дешёвого виртуального хостинга.
А вот Next.js тут вообще не нужен. Нет никакого смысла делать SSR для приложения, где все страницы доступны только авторизованным юзерам.
ncix
Больше разных CRM рынку!
Понимаю, что у всех клиентов свои приоритеты, однако из своего опыта разработки, внедрения и использования различных CRM посоветовал бы следующую приоритезацию развития:
1. Интеграция CRM с бухгалтерией или банком - чтобы видеть факты прихода денег, причем с привязкой к сделкам. Потому как выполненная работа менеджера по продажам - это деньги на счёте. А менеджер - главный пользователь CRM
2. Расчёт бонусов/премий менеджерам. Поддержка разных расчетных алгоритмов или даже скриптов. Так чтобы менеджер в любой момент видел сколько он наработал в этом месяце.
3. Интеграции с почтой, мессенджерами, телефонией - чтобы видеть и слышать всю историю сделок и отношений с клиентом
4. Раз уж CRM для B2B хорошо бы иметь функционал длинных многоэтапных продаж, многоэтапных работ с актированием. Планы расходов и поступлений денег по уже законтрактованным работам.
6. Что касается аналитики, разработать в рамках CRM действительно мощную аналитическую систему - крайне сложная и объемная задача. На мой взгляд лучше обеспечить удобные способы интеграции с внешними системами. Начать можно хоть с выгрузки в csv/xlsx.
7. Календари для встреч и задач на мой взгляд незкоприоритетны, т.к. сотрудники уже наверняка имеют календарь в почтовом клиенте. Два календаря - это скверно.