Larentix CRM. Как я уже год разрабатываю свой IT-проект.
Привет. Я простой парень Антон из Саратова. И всё как в названии: примерно год назад я решил создать свой первый IT-продукт. Что из этого вышло?
Кратко о сути: я разрабатываю Larentix — CRM-систему для управления сделками, проектами, задачами и контактами. Эту статью написал к выходу первой бесплатной MVP-версии и открытой демо-версии. Это мой первый пост на VC.
Свой проект - система призванная снизить хаос?
Я давно занимаюсь веб-разработкой и, думаю, могу назвать себя fullstack-разработчиком.
В конце 2010-х, программировал сайты и плагины на заказ. Костыли в разработке магазинов на WooCommerce из тех времен - помню до сих пор.
Затем перешёл в постоянное сотрудничество по крупным проектам. Разрабатывал кастомные CRM, CMS и даже ERP системы для нескольких компаний, но мне всегда очень хотелось создать что-то своё - личный большой проект.
Вообще, делая проекты на заказ, ты можешь заработаешь денег, но считать проекты своими не можешь. Я словил себя на мысли, что хотел бы сделать что-то значимое, какую-то систему, которой бы пользовался даже сам, знал бы какой функционал нужно развивать, и где слабые и сильные места.
Я очень люблю систематизировать и упрощать различные вещи и дела, нравится когда всё минималистично и красиво. И так как я сам часто веду задачи и проекты в CRM и таск-треккерах - я решил разработать такой продукт. Формула следующая: CRM-система с базой контактов + таск-трекер + проекты и хранилище документов. Система сейчас называется Larentix.
И вот, я всегда замечал, что в готовых системах какая-то часть реализована хорошо, а что-то другое - неудобно. Зачастую переусложнено. Бывает, нельзя просто создать пустую задачу или пустой проект в CRM - чтобы дополнить их позже. Как бы не так! - система тебя не отпустит и не сохранит проект пока ты не введёшь абсолютно всё.
Это один из примеров...
Но что я могу сделать? один?
Я понимаю почему большие 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).
Уже почти отчаявшись, попробовал несколько решений для 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 (с главной стр. тоже есть ссылка на это демо).
Большое спасибо за внимание!