IrenSystem — система для планирования ресурсов совместно с клиентом
История о том, как я делал таск-менеджер, а в итоге почти повторил концепцию CSRP.
CSRP (Customer Synchronized Resources Planning) – Управление, ориентированное на взаимодействие с клиентами. Иными словами CSRP , это когда ваш клиент участвует во всех бизнес-процессах. Начиная от заказа чего-либо, заканчивая постановкой требований, контролем процесса производства. А также сервисной поддержкой.
Идея
История возникновения идеи, предельно банальная. Во время использования различных систем для ведения проектов и задач я столкнулся с определенными ограничениями. Например в большинстве систем было ограничение на количество пользователей и проектов. Ограничение по количеству проектов было самое больное. Ведь после сдачи проекта не редко бывает, что возникают баги, ошибки или доработки. Так или иначе требовалась система к которой у клиента всегда был бы доступ. Также меня не устраивало, что все данные хранятся где-то там, и я никак не могу на них влиять. И в моей голове поселилась идея, о том чтобы сделать свою систему. В тот момент мне это казалось простым. Спустя 5 лет, я понял что я ошибался. И это нихрена не просто.
Собрав волю в кулак, я начал делать первую версию. Первая версия была предельно простой, в ней было минимум основных возможностей: аутентификация, управление проектами, создание записей которые, привязка к тегам. комментирование. Так как я не представлял, как должна была выглядеть моя будущая система. Я решил взять за основу интерфейс atata. com.
В систему я изначально заложил возможность создания проектов различных видов. Например можно было создать публичный проект, к которому могли присоединится абсолютно все, но у участников была возможность только комментировать, а не писать записи.(Не спрашивайте зачем, это было нужно.) Или например сделать закрытый проект, где публиковать записи, комментарии могли только участники.
После использования системы в течении 1 года, я понял в системе чего-то не хватает. А именно системы контроля финансов. В системе можно было вести и контролировать проекты и задачи на минимальном уровне. Но нельзя было посмотреть расходы по проектам, а именно сколько должен оплатить клиент, и оплатил ли он. Также хотелось сделать что-то похожее на API. Для добавления проектов через API.
Помимо этого была проблема, при работе с подрядчиками. Нельзя было в проекте отдельно выделить задачу к которой имел доступ только подрядчик и менеджер.
После долгих размышлений было принято решение делать 2ю версию.
Версия 2.0
В новой версии, я решил исправить проблемы первой версии, и полностью переработать саму суть проекта а именно:
Убрана полностью система\ регистрации авторизации. Теперь чтобы получить доступ к системе, нужно было просто ввести свой email, на который придет код для входа с помощью которого пользователь уже входит в систему.
Если в прошлой версии, проекты это были одновременно сами проекты, и новостной раздел. То в версии 2.0 это было разделено. Блог — это блог компании, а проекты — соответственно только проекты.
Добавлена система счетов. А именно, в каждом проекте, имеется возможность указать сколько будет стоить этот проект, а клиент соответственно может это либо подтвердить либо опровергнуть. Соответственно, когда клиент подтвердит что проект завершен, то между клиентом и исполнителем создается счет. Это позволило контролировать свои доходы.
Система счетов позволила добавить возможность работы с подрядчиками. Как это работало: клиент создает проект, менеджер создает задачу приглашает подрядчика. Подрядчик оглашает цену, менеджер в родительском проекте выставляет цену со своей наценкой. Ни подрядчик, ни клиент не видят друг-друга если так задумано.
Добавлено API для создания проектов. Как это работало, клиент заполнял форму на лендинге, после чего клиенту приходило письмо на email с сообщением о необходимости подтверждения проекта. После подтверждения проекта, в зависимости от переданных параметров проект прикреплялся за определенным исполнителем, либо публиковался конкурс среди исполнителей в этой услуге.
Также был добавлен JS-виджет, который можно было поместить в административную панель будущего проекта, чтобы клиент всегда смог быстро отправить информацию о баге, который он нашел.
Все функции я описывать не буду, если вам интересно вы можете посмотреть в видео ниже. За качество звука и видео заранее извиняюсь.
После продолжительного использования 2й версии, я постепенно пришел к выводу что создал монструозный портал, который был сложен в поддержке, и больше был похож на фриланс биржу, чем на проектную систему. В системе не было предусмотрено отдельного REST API, для того чтобы можно было извне системы часть её функций полностью автоматизировать, а также например если потребуется сделать мобильное приложение. Так же я хотел систему унифицировать, таким образом чтобы она запускалась на любом хостинге. А как известно не все хостинги дружат с такой БД как Mongodb
Помимо этого, была большая проблема с авторизацией. В системе был механизм уведомлений на почту, и если например кто-то посчитал это спамом. То автоматически все письма с домена помечались тем самым спамом. Поэтому часть пользователей не могла войти.
Версия 3.0 IrenSystem.
При начале разработке я решил разделить отдельно back и front чтобы они не были крепко связаны друг на друге. В итоге back сделал на laravel, front решил делать на vue.js (хоть и опыта у меня разработки фронта на vue у меня не было)
Первое что я сделал это избавился от прошлой проблемы с авторизацией.
Теперь, авторизация происходит через Telegram. Ни клиенту, ни менеджеру не требуется вводить логины\пароли и запоминать их.
Побочным плюсом от внедрения Telegram, стала нововведение Telegram WebApp
Уведомления теперь заиграли новыми красками. Если раньше каждое уведомление приходило только на email, то теперь они отправлялись в Telegram и на сайт (если они включены)
Была изменена сама структура проекта, если раньше при заходе на проект, каждый пользователь понимал что это какой-то сервис. То теперь основной сайт выглядел как обычный сайт. Он состоял из типичных разделов: основной блог, блок с портфолио, блок с командой, блок с услугами, новостной блок.
Блок с портфолио показывал все работы, которые были загружены в систему исполнителями у которых есть доступ.
Работы делились по тегам для удобства. Которые впоследствии трансформировались в коммерческое предложение для клиента в PDF
Система проектов была переработана. Если раньше клиент сразу попадал в проект при заполнении формы, то теперь было добавлено промежуточное звено CRM.
Задача CRM , узнать больше о клиенте и его проекте. А когда вся информация получена принять решение, назначить на проекта отдельного исполнителя или объявить конкурс среди подрядчиков.
Дальше соответственно, внутри рабочей области после утверждения исполнителя ( если объявлен конкурс) , исполнитель и клиент могут создавать задачи, управлять проектными счетами, писать комментарии, фильтровать задачи как в канбан-доске, так и в обычном списке. Также исполнитель может добавить подрядчика в отдельную задачу, и работать с ним там, включая финансовые вопросы.
Js-виджет для отправки багов был переработан в отдельный API end-point , через который новый разработанный проект мог посылать запросы с ошибками.
Раздел Блог из прошлой версии был переработан в систему блогов, где у каждой категории могут быть свои настройки приватности и доступа к категории.
Для того чтобы зациклить систему на себя, был отдельно добавлен функционал маркетплейса. Сделано это было для того чтобы, ваши партнеры которые оказывают готовые услуги, могли разместится на вашем персональном сайте.
Каждый клиент, например может сам напрямую заказать требуемые ему готовые услуги. Каждый заказ автоматически трансформируется в счет.
Любой подрядчик или поставщик, всегда может подключить онлайн оплату своих счетов. На данный момент в тестовом режиме работает юкасса.
В блогах, в портфолио, в проектах\задачах, в маркетплейсе за редактирование контента отвечает редактор editorjs.io.
Это позволяет делать новые блоки. Например для теста я сделал указание маршрута от точки А до точки Б
Таким образом у меня получилась система, которая полностью отвечает концепции CSRP. А именно клиент видит что происходит с его проектом, всегда есть доступ к его проекту, всегда может задавать вопросы, просить доработки, исправление багов. Помимо этого может заказывать дополнительные услуги у партнеров как в виде конкурса, так и выбирая отдельные услуги в маркетплейсе.
На этом все!
Очень сложный текст