Larentix CRM. Как я уже год разрабатываю свой IT-проект.

текущий логотип системы Larentix
текущий логотип системы Larentix

Привет. Я простой парень Антон из Саратова. И всё как в названии: примерно год назад я решил создать свой первый IT-продукт. Что из этого вышло?

Кратко о сути: я разрабатываю Larentix — CRM-систему для управления сделками, проектами, задачами и контактами. Эту статью написал к выходу первой бесплатной MVP-версии и открытой демо-версии. Это мой первый пост на VC.

Свой проект - система призванная снизить хаос?

Я давно занимаюсь веб-разработкой и, думаю, могу назвать себя fullstack-разработчиком.

В конце 2010-х, программировал сайты и плагины на заказ. Костыли в разработке магазинов на WooCommerce из тех времен - помню до сих пор.

Затем перешёл в постоянное сотрудничество по крупным проектам. Разрабатывал кастомные CRM, CMS и даже ERP системы для нескольких компаний, но мне всегда очень хотелось создать что-то своё - личный большой проект.

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

Я очень люблю систематизировать и упрощать различные вещи и дела, нравится когда всё минималистично и красиво. И так как я сам часто веду задачи и проекты в CRM и таск-треккерах - я решил разработать такой продукт. Формула следующая: CRM-система с базой контактов + таск-трекер + проекты и хранилище документов. Система сейчас называется Larentix.

И вот, я всегда замечал, что в готовых системах какая-то часть реализована хорошо, а что-то другое - неудобно. Зачастую переусложнено. Бывает, нельзя просто создать пустую задачу или пустой проект в CRM - чтобы дополнить их позже. Как бы не так! - система тебя не отпустит и не сохранит проект пока ты не введёшь абсолютно всё.

Это один из примеров...

Например в Larentix я добавил возможность в пару кликов создавать проекты и задачи. А потом, когда понадобится - можно зайти в них и добавить дополнительные данные.

Но что я могу сделать? один?

Я понимаю почему большие CRM такие. Почему Битрикс24 часто тормозит, почему при входе на Trello или в аккаунт Microsoft порой происходит по четыре редиректа и прежде чем мельтешение верстки и загрузчиков на экране превратится в мою доску с одной маленькой карточкой.

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

Создавая же проект с нуля, я могу выбрать самые новые технологии, причём которые уже зарекомендовали себя. Но, вернувшись на землю, я понимаю, что конечно, прежде всего, я обязан выбрать то в чём у меня самого как у разработчика есть опыт.

У меня нет команды разработки, и, я подумал: единственный шанс справиться - сделать своей командой тысячи разработчиков со всего мира - ну, то есть подобрать набор готовых открытых библиотек, фреймворков, утилит и грамотно использовать их API, полагаться на их возможности по максимуму.

Я всё чаще слышу что люди используют сервисы low-code и no-code для построения сложных систем, но это не мой путь. У меня будет наоборот - «full-code» сервис, который не будет полагаться на что-то сторонее. Всё будет в одном, внутри.

В итоге стратегия такая: если что-то хорошо сделано до меня - это лучший вариант, надо брать.

Во фреймворке есть авто-валидация и проверка данных без написания кучи DTO? - применяем по максимуму. Есть автонастройка авторизации одной строкой? - то что нужно!, готовый UI-кит с возможностью стилизации? - берём и выжмем все соки.

Я понял, что главное - как можно подробнее изучить документацию к инструменту. Разработчики, как правило, хотят упростить своё API, и добавить как можно больше «авто-настроек». А это то что сэкономит нам сотни часов. Ну и конечно смотреть чтобы все библиотеки распространялись по лицензии MIT (т.е. для коммерческого использования).

Технологический стек

Я не очень нормальный разработчик. Известно что специалисты углубляются в какую-то одну область (например в фронтенд), а другие области знают поверхностно, так называемые, T-shaped специалисты.

Я же выбрал две очень узкие области из бека и фронта и углубился в них. Фронтенд - только React и его инфраструктура, а в бекенде PHP-фреймворк Symfony. В итоге получился как-бы несуществующий «П-shaped» специалист.

Стек был выбран именно такой:

  • PHP Symfony - как основа бекенда и API.
  • Фронтенд в виде SPA-приложения на React JS + TypeScript - вместе с React Router и MobX для хранения состояний.
  • Дизайн система Mantine UI с возможностью кастомизировать всё и верстать недостающие вещи.

Хитро смешав SPA и традиционный бекенд на PHP удалось достичь возможности - сделать в будущем простую коробочную версию которая может быть установлена на самом дешманском хостинге с поддержкой PHP и MySQL. А может даже в локальной среде предприятия. Короче, как WordPress, только не сайт, а CRM.

Но, благодаря современному SPA-фронтенду, удалось сделать переходы между разделами без перезагрузки страницы, упростить динамику, а так-же снизить задержку и ускорить загрузку за счёт REST-API.

Раскрутка ещё перед разработкой

С самого начала, я захотел делиться процессом разработки. Чем раньше люди узнают о чём-то новом, тем проще будет продвигать в будущем. Ну, или я так подумал...

Бюджета и опыта у меня особо не было. Тогда было распространено делать ежедневный дневник в виде reels, что-то типа "делаю ремонт за 60 дней" или "новая жизнь за 2 месяца" и каждый день выкладывать ролик.

Я решил сделать так-же в старом аккаунте соцсети. Было что-то типа "Свой IT-проект с нуля, день N". Очень стеснялся, но получилось записать такие ролики.

Но выложил только 8 штук.

Так выглядели эти рилсы. Просмотров особо не было, т.к. я их никак не продвигал.
Так выглядели эти рилсы. Просмотров особо не было, т.к. я их никак не продвигал.

Но вот проблема: можно либо программировать, либо снимать видео о том что программируешь. Вместе не получается.

Писать сценарии, монтировать и нарезать видео-ряд, начитывать и подставлять звук, делать субтитры и выкладывать - всё это занимало тьму времени. Поэтому, идея была конечно хорошая, но слишком затратная по времени. Бюджета на делегирование такого блога не было, да и это должен был быть исключительно личный контент.

Далее решил упростить себе жизнь и делиться просто текстами в телеграме. Канал до сих пор активен - ссылка в конце.

Тёмные времена и таск-треккер.

Дальше были месяцы разработки. Разрабатывал в свободное время от "оплачиваемой" работы. Использовать готовый код из других разрабатываемых мной для клиентов проектов было нельзя и как-то не этично. Всё писалось заново.

Сначала систему авторизации и управления сотрудниками. Затем наброски раздела "Проекты". Потом с проектами были связаны базы контрагентов (компаний) и контакты к ним.

Затем началась большая работа по таск-трекеру. Идея была такая: у каждого проекта будет своя canban-доска. В ней будет полная свобода. Можно добавлять неограниченное кол-во колонок, менять их местами, двигать карточки по ним.

С карточками и drag-n-drop было много проблем. Я сильно придирался к себе. Мне нравилось как это работает в Trello - там, как бы, «тень» карточки с анимацией перемещалась при перетаскивании по колонкам и «раздвигала» имеющиеся карточки. И нужно было сделать чтобы это не подтормаживало (что технически означает минимизацию ререндринга react-компонентов). А кроме того, хотелось сделать ещё и как в AmoCRM - чтобы можно было перетаскивать доску, просто взявшись курсором за свободное место и двигая доску мышью, (так называемый drag-scroll).

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

Уже почти отчаявшись, попробовал несколько решений для drag-n-drop и даже пообщавшись с разработчиком популярной библиотеки через github и подготовив баг-репорты ему, удалось всё-таки добиться вменяемого результата. И оказалось что...

MVP всё дальше и дальше.

Допустим, в Larentix админ может создать сотрудника, добавить его в проект и назначить задачу. А сотрудник соответственно войти и выполнять задачу. Но:

  • Уведомления надо? - да.
  • Сводный список задач для сотрудника? - да.
  • Архивация задач и целых колонок? - нужно.
  • Настройку прав и ролей для сотрудников? - безусловно.
  • Прикрепление файлов? - да
  • Базу знаний?, историю действий по задачам и проектам?, чек-листы?, комментарии? фильтры всех сущностей? связи между контрагентами? да и статистику какую-то? отчёты?

И вообще..., а где сама CRM? воронки и сделки?

Вот так я и закопался на следующие месяцы. Я понял, что если не составлю список минимально необходимого функционала то сам себя закопаю на долгие годы и система не выложится никуда кроме github-а примерно никогда.

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

А всё остальное буду уже доделывать после. Главное чтобы я мог хотя бы показать что-то кроме скриншотов.

Система сделок связала все сущности. К сделке прикрепляется проект, и к проекту прикрепляется компания-контрагент, доска задач и все остальное. Так что все сущности становятся связанными.
Система сделок связала все сущности. К сделке прикрепляется проект, и к проекту прикрепляется компания-контрагент, доска задач и все остальное. Так что все сущности становятся связанными.

Продакшн, и демо-версия.

CRM-функционал был готов. Внутри аналогично проектам - полная свобода с неограниченным кол-вом воронок с настраиваемыми стадиями и перемещением сделок. Даже цвет колонок можно задавать! Попутно реализован ещё некоторый функционал вроде ролей с правами и фильтров разных сущностей.

Далее, я сделал SaaS версию и выложил её в интернет. Забавно что сначала проект назывался PlanarCRM. Раньше я работал на заводе с полупроводниковыми СВЧ-приборами и слышал понятия планарной технологии изготовления чипов. И это было созвучно с "планнер" вот так и было выбрано название.

Но зарегистрировав домен planarcrm.com, я вдруг был озадачен когда chrome мне сообщил: «возможно вы имели ввиду plannrcrm.com».

Тогда я увидел, что уже есть некая CRM система с названием Plannr на домене отличающимся всего на одну букву. Конечно, это было разочарование... - особенно учитывая что логотип уже был готов. Нужно было бы погуглить про это раньше.

И в итоге, система была переименована в Larentix (от Large Entities System - т.к. сущностей (Entity) становилось действительно много, а окончание «s» было решено изменить на «ix», чтобы было больше похоже на IT-проект, а не на эльфийское имя).

Переделав логотипы и создав новый домен, система появилась в сети. Каждый зарегистрировавшийся получал свой <поддомен>.larentix.com и мог добавлять своих сотрудников. Ура!.

Конечно, я отбросил все мысли о монетизации на первое время и сделал всё бесплатно. Мне бы хотелось найти энтузиастов, которые бы протестировали систему и дали обратную связь, хотя конечно я и сам могу закопать себя багами и недостающим функционалом :)

Но регистраций было не больше десятка. Никто кроме подписчиков секретной группы в ТГ не знали о системе. Несколько регистраций с временной почтой натолкнуло на одну мысль: нужно сделать демо-версию без регистрации.

Я отлично понимаю, что для потенциальных пользователей любые барьеры воспринимаются негативно. Например:

«Зачем мне вводить вам email непонятно где, если я просто хочу посмотреть?»

Это вполне справедливо. Поэтому торопился настроить демо-версию.

Она была сделана на отдельном поддомене demo.larentix.com

Чтобы просто познакомиться не нужно никаких данных, ни подтверждения почты, ни ввода имени. В форме входа даже уже введен логин и пароль!

Каждый кто заходит - у него максимальный доступ. Можно подвигать задачи, поудалять сделки, создать контактов, и.т.д. А каждый час - сработает скрипт и вернёт все изменения к изначальным.

И вот, я пишу эту статью чтобы рассказать о Larentix как можно большему числу людей.

Дальнейшие планы

Сейчас над проектом работаем вдвоем с женой. Она помогает тестировщиком, скидывает мне баги и записывает неудобства в интерфейсе.

Я и сам пользуюсь Larentix и, например, храню в ней список багов и текстов для паблика. Недавно вот добавили удобства в виде подтверждения закрытия окон если есть несохраненная информация, а так-же возможность прямо из списка контактов создавать новый на лету.

Сначала создаём сделку и только потом вспоминаем что нужно ещё создать контакт под неё. Раньше нужно было идти в другой раздел - а теперь добавлено удобство.

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

Если система размещается в интернете, то главное у неё - это мобильность и доступность из любого места. Большнство пользователей не будут заходить в систему с компьютера - только с телефона.

Все силы будут брошены на мобильную версию, а в идеале, на PWA-приложение, сейчас в системе пока её нет.

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

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

И где-то здесь отдельным пунктом идёт ответвление коробочной версии. Главное в ней - это надёжная система обновлений, опять же похожей на таковую в WordPress. На Saas-версии очень просто вносить правки багов, а если система физически будет у пользователей на хостинге - то это становится проблемой.

Если вас заинтересовал проект Larentix - оставляю ссылку на telegram-канал. Там я и дальше буду выкладывать как списки обновлений, так и делиться мыслями по разработке.

Бесплатная Saas-версия системы: larentix.com

А демо версия системы вот тут: demo.larentix.com (с главной стр. тоже есть ссылка на это демо).

Большое спасибо за внимание!

12
8 комментариев