Totum — open source конструктор CRM/ERP и произвольных учетных систем (PHP + PgSQL)


    В двух словах — продвинутые таблицы. Ориентирован на отдельных разработчиков или микрокоманды из двух-трех человек. Подходит начинающим разработчикам и бизнес-аналитикам, желающим превратить свое понимание бизнеса в готовое решение или быстро разработать проект под конкретного клиента. Для небольших бизнес-ниш — в которых нет типовых решений. Small-code принцип — множество простых, ситуационных кодов. Есть подробная документация и видео. Устанавливается на собственный сервер за 5 мин. Со временем позволит выгружать разработанные на нем решения с коммерческими лицензиями с использованием встроенной защиты.


    Сайт: https://totum.online
    GitHub: https://github.com/totumonline/totum-mit
    Лицензия: MIT


    Для каких задач


    Разработка custom CRM/ERP или любого другого учета для небольших компаний


    Лично мы сделали и эксплуатируем несколько проектов с ценой разработки 300—1500К.


    • Систему записи на учебные мероприятия с объемами 500 учащихся/месяц.
    • Производственную систему для металлообрабатывающего предприятия.
    • Систему обработки заказов, товарной базы, логистики, всевозможных автоматических синхронизаций с базами поставщиков для интернет-магазина.
    • И прочие проекты поменьше.

    Быстрая разработка коробочных CRM/ERP для небольших ниш


    В малом бизнесе есть множество небольших областей, в которых требуются специализированные CRM/ERP/Учетные системы. Так как сегменты рынка небольшие, в продуктах крупных разработчиков есть пробелы, не покрывающие мелкие специфические задачи. Идея Totum в том, чтобы упростить разработку нишевых CRM/ERP, сделав ее возможной для отдельных разработчиков и рентабельной для небольших команд из 2-3 человек.


    Таблицы + код + браузер


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



    Таблиц может быть много. Предусмотрены разные типы таблиц под разные задачи: хранение данных, циклические заказы или проекты, временные отчеты или всплывающие окна.


    Для полей внутри мы сделали 15 типов:


    • строки;
    • числа;
    • файлы;
    • тексты;
    • графики…

    Поля добавляются мышкой. Настройки полей выбираются мышкой и их не так много. Для числового поля это будут:


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


    Часть полей в решении отвечает за ввод данных пользователем, часть за вычисление значений и выполнение действий или все вместе. Для того, чтобы это обеспечить, коды пишутся в специальных окнах в настройках поля. Totum обеспечивает подсветку, поиск и подстановку адресов таблиц и других полей, переменных и функций, а также автозаполняет параметры функций. Сделано это на основе codemirror. Про коды и их разделение я расскажу чуть дальше. Коды простые и с ними могут работать начинающие разработчики или бизнес-аналитики.



    Интерфейс у Создателя-разработчика тот же, что и у пользователя, но с дополнительными элементами управления, которые создатель может быстро скрыть/показать. Можно на время переключиться в вид конкретного пользователя, чтобы оценить, как у него выглядит система. В одной и той же таблице различные роли могут видеть/изменять разные наборы полей и строк. Можно создать не только пользователя-человека, но и пользователя-API и настроить ему собственный доступ.



    Разработчику не нужно быть full-stack программистом, чтобы собрать конечное решение на Totum. Знание html, адресация доменов и общие познания про то, как работает интернет, будут в плюс, но вообще нужно знать лишь сам Totum.


    Small-code принцип


    Totum основан на небольших кодах, разделенных по типам действия — одни коды вычисляют значение в поле аналогично формуле Excel, другие следят за триггерами изменений и — если они сработали — выполняют написанные в них действия. Третий тип кодов отвечает за внешний вид полей в зависимости от набора данных в схеме. Если эти коды выполняются для таблицы с несколькими строками, то их выполнение будет повторено для каждой изменяемой строки. Обычно коды маленькие. В реальных проектах у нас всего пару раз были коды более 100 строк — обычно 5-10. С таким кодом легко может разобраться начинающий разработчик. Преимущество же кода перед BPMS в том, что на нем проще и понятнее написать разветвленную логику (во избежание холивара по BPMS — это наше субъективное мнение).


    Код, вычисляющий значение поля, не может выполнить действие или изменить форматирование — он замкнут сам в себе. Если в нем использованы какие-либо переменные, то они существуют только в момент выполнения этого кода в конкретном поле и никак не пересекаются с другими полями. Имеют декларативную логику:


    Значение_в_поле: А + B
    A: Значение Поля_1 в Текущей_таблице в текущей_строке
    B: Возьми из Таблица_1 значение из Поле_2 где Поле_3 > 10 и Поле_4 не равно пустоте.

    Это не синтаксис, про синтаксис чуть дальше :)


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


    Триггер: изменилось значение в поле
    Выполни: Действие_1 и Действие_2
    Действие_1: Добавь в текущую_таблицу новую строку и в Поле_1 поставь “Новая строка”
    Действие_2: Открой окошко с уведомлением и напиши “Успешно”

    Код форматирования может повлиять только на внешний вид своего поля. С ним все просто — он выполняется, если пользователь смотрит на таблицу, при любом изменении в этой таблице:


    Правило_1: Если Текущее_поле равно пустоте то подсветить «Красным»
    Правило_2: Если Поле_1 текущей таблицы равно «Новая строка» выделить жирным.

    Чтобы это работало, должен быть известен порядок выполнения — он есть. У каждого поля в таблице есть порядковый номер sort. Сначала считаются значения полей в порядке sort, потом действия в таком же порядке и затем форматирование. В интерфейсе поля показываются в этом же порядке. Да, есть возможность показать поле не в том месте, в котором оно рассчитывается, но об этом сейчас не будем.



    Таблицы же могут быть на миллионы строк — они же не будут целиком пересчитываться при изменении? Не будут. В Totum есть понятие «единица пересчета». Она может быть «таблица целиком» или «строка целиком». Разные типы таблиц имеют разные единицы пересчета. Те типы, у которых единица пересчета «строка целиком», при изменении пересчитывают только те строки, в которых произошли изменения. Действия выполняются только при срабатывании триггера. Форматирование считается только на те поля, которые видны пользователю.


    Если в результате расчета или действия в таблице что-то изменилось — то при записи изменений у нее изменяется «транзакционный номер». При начале пересчета этот номер запоминается и сравнивается с номером этой же таблицы по окончании пересчета и перед записью. Если номера не совпали, то это значит, что за время операции таблица была изменена другим пользователем. Тогда расчет можно отменить, продолжить или запустить его еще раз взяв новые исходные данные. Это настраивается для каждой таблицы и позволяет разработчику в два клика управлять требуемым уровнем согласованности данных и обеспечивает многопользовательский режим. Для таблиц, в которые осуществляется непересекающаяся запись, — эту проверку можно отключить. Еще одним преимуществом этой модели является то, что вся цепочка действий и пересчетов, задействующая несколько таблиц будет отменена при наличии ошибки или по срабатыванию специально заложенной отмены без записи каких-либо изменений в базу. Открытая у нескольких пользователей таблица сама не обновляется, но они видят предупреждение, что другой пользователь внес в нее изменение которое текущий пользователь еще не видит. Его тоже можно отключить.


    Totum-code


    Totum написан на PHP, но внутри программируется собственным языком — Totum-кодом. Он призван упростить задачу разработки для новичков. Упрощали по-максимуму и затачивали под таблицы и поля, которые разработчик видит внутри Totum. Вызов и запись данных тоже осуществляется в Totum-коде, SQL знать не нужно.


    Базис выглядит так:


    $name — взять значение из другой строки
    #name — взять значение из поля в текущей таблице и текущей строке
    name: — определить имя строки кода
    function_name(param1:; param2: ) — выполнить функцию
    $name[key] — взять значение по ключу из массива
    $name[[section]] — взять колонку из списка массивов
    $#name — переменная внутри кода или быстрая переменная (например, $#nd — это текущая дата)
    calc: $A + $B — $C * $D / $E — математические операторы (по умолчанию выполняются в той последовательности, в которой указаны — как в калькуляторе)
    < > = != — операторы сравнения


    Есть еще немного мелочей, но они уже второстепенные. Все остальное выполняется функциями. Например:


    Взять значение поля из произвольной таблицы:


    value: select(table: 'table_name'; field: 'field_name_1'; where: 'field_name_2' > 10; order: 'field_name_2' asc)

    Записать значение в поле:


    action: set(table: 'table_name'; field: 'field_name_1' = $new_value; where: 'field_name_2' = #id)

    Пересчитать таблицу:


    action: recalculate(table: 'table_name')

    Выполнить несколько действий:


    =: while(action: $act_1; action: $act_2)
    
    act_1: insert(table: 'table_name'; field: 'field_name' = $new_value; log: true)
    
    new_value: 10
    
    act2: recalculate(table: 'table_name'; where: 'field_name' > $new_value)

    Отформатировать поле по условиям:


    f1=: setFormat(condition: $#nfv >= 0; color: "green")
    
    f2=: setFormat(condition: $#nfv < 0; color: "tomato")
    
    f3=: setFormat(condition: $#nfv = 0; bold: true)

    $#nfv — значение в текущем поле. Помнить все быстрые переменные не нужно, внутри есть подсказки.
    В этом примере при нуле значение в поле будет и зеленым и жирным.


    Один из вариантов ветвления по условиями:


    =: if(condition: $calc > 0; then: "Положительное"; else: $calc)
    
    calc: #field_name_1 + #field_name_2

    На этом с кодами закончим. Подробнее и с видео можно посмотреть в документации.


    Если не хватило какой-то специфической функции, то, если вы знаете PHP, ее можно написать самому и подключить в обработчик. Мы сами постепенно наращиваем базу функций, но стараемся делать это очень осторожно: если результата можно добиться комбинируя 2-3 существующие — оставляем как есть.


    Через некоторое время можно будет подключать функции написанные на другом языке непосредственно в totum-код. Мы дорабатываем и тестируем это сейчас.


    Вместе с системой поставляется несколько интегрированных инструментов отладки. Например логи расчетов:



    Настраиваемый адаптивный ui


    Делали так, чтобы разработчик мог руководствоваться только одним правилом — «просто выровняй ширины».


    Например как здесь:



    Кликабельный вариант смотреть здесь —>


    И в большей части случаев это работает. Не работает на таблицах с большим количеством полей. Например для каких-нибудь Заказов и Карточек производства.


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


    Настройки адаптивности полей собрали в одной функции и уложили их всего в 8 параметров:


    setFloatFormat(blocknum: ; nextline: ; maxwidth: ; fill: ; glue: ; height: ; maxheight: ; breakwidth: )

    CSS/GRID/FLEX знать не нужно. И да, поставить поле мышкой в произвольное место нельзя — оно всегда привязано к предыдущему полю. Его положение и поведение задается двумя параметрами в настройках, функцией setFloatFormat и настройками Секции.


    Рабочий процесс на практике выглядит следующим образом: поля накидываются пока не наступает тулбар_хэлл. Чтобы от этого спастись они разделяются на Секции. Если это не помогло — на Группы внутри Секций. Если нужно еще, то у очевидных полей убираются заголовки, у информационных — бордеры, добавляются переносы. Если получается криво на промежуточных размерах экранов — добавляются параметры fill: true; и glue: true; контролирующие заполнение и переносы. 5-10 мин и снова можно работать!



    Настраиваемое API


    Так как современная система должна взаимодействовать со всем вокруг сделали два вида API. Оба настраиваются.


    Один отдает данные из таблиц по настроенным для него доступам к конкретным таблицам и полям. Этот API скорее для полноценных разработчиков.


    Второй — это возможность написать API-микросервисы на Totum-коде и отдавать данные или выполнять действия внутри схемы. Этот вариант рассчитан именно на Totum-разработчика, тк здесь все задачи можно решить totum-кодом, не выходя из системы.


    Например: шлет вам внешняя система данные с лидами, вы ее направляете на созданный TOTUM-API-микросервис (мы называем их Remote) и разбираете поступившие данные — создаете записи в нужных таблицах, отправляете уведомления итд. В одном из проектов мы при помощи Remote считаем стоимость доставки товара ПЭКом/СДЭком для интернет магазина — формируем html с ответом скрипту, который его спрашивает с витрины. На 10К запросах в сутки работает быстро и без сбоев — сервер на 4х2,6 совсем не напрягается.


    Ништяки и мелочи


    Графики


    Графики сделаны на chart.js. Внутри есть несколько преднастроенных типов. Какие данные выбирать в график определяет Создатель. Внешний вид графиков настраивается.



    Мобильная версия


    Пока это только мобильная версия. Со временем она станет полноценным PWA. Поля в ней адаптированы к показу на маленьком экране. Чтобы гарантировать скорость загрузки для больших таблиц есть раздельные для десктопа/мобилы пагинаторы (pagination).



    Показать вовне


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


    Такое использования можно посмотреть на Примере калькулятора unit-экономики —>



    Формы


    Этот функционал пока в стэлс-использовании — там еще есть что доделать. Он позволяет представить таблицу, открытую для стороннего пользователя, в видe material-ui. Например для создания пользовательских личных кабинетов, страниц заказов, калькуляторов услуг, многоступенчатых форм И так далее.



    Картинка Теслы исключительно в образовательных целях


    Надежность


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


    При внедрении нового функционала мы неделю его обкатываем на работающих проектах — потом выкладываем в основную ветку на GitHub. Когда выходят большие обновления требующие изменения полей внутри баз — меняем номер тэга. С выходом версии 1.0.0 разделим ветки на dev и master.


    Обучение и документация


    Почти все покрыто документацией. Ссылка на нее есть из интерфейса Создателя.


    Документация —>
    Видеокурс —>
    Учебный проект (первые 5 заданий) —>


    На основной функционал мы подготовили видеокурс, в котором визуально показываем, как работает Totum. Видео снабжены закладками — под роликом есть соответсвующие ссылки на документацию.


    Также мы сейчас работаем над Учебным проектом. Состоять он будет из 60 заданий и заключаться в модификации небольшого demo-примера, который устанавливается вместе с системой.


    Задания будут состоять из:
    — видео, показывающего, что и как нужно сделать;
    — текстового описания;
    — описания минимальной проверки правильности выполнения.


    Одно задание в большинстве случаев укладывается от 30 минут до 1 часа выполнения. Первые 5 заданий уже готовы. Выполнять можно и на demo-сервере.


    Всегда можно сделать лучше и хорошей документации много не бывает — поэтому и видекурс и текстовая часть будут расширяться вместе с расширением возможностей Totum. Также мы будем расширять встроенные в систему ссылки на соответствующие разделы документации.


    Встроенная защита лицензий


    На сервере Totum хочет PHP 7.3 + ionCube + PgSQL от 9.5. Для чего ionCube?


    Задумка в следующем — можно будет разработать решение на Totum и выгрузить относящиеся к нему таблицы с защитой лицензий на определенные домены, количество пользователей, сроки.


    Для этого каждая таблица содержит шифрованное поле license, в котором записана информация о типе лицензии, сроке ее действия (в том числе и бессрочном), лицензионном сервере и хосте. Обращение к серверу лицензий происходит только для получения информации о лицензии для конкретного хоста. Если лицензия бессрочная, то обращение происходит один раз при установке и первом запуске. Если срочная, то по окончании срока действия.


    Сейчас мы реализовали только один тип лицензий — free, таблицы с которой можно свободно перемещать между схемами. Запроса к лицензионному хосту в этом случае не происходит.


    Сервер лицензий нам предстоит еще разработать, наверное, он будет платным.


    Мы активно думаем об этой идее с лицензиями — если вдруг у вас есть про нее собственные мысли, то, пожалуйста, поделитесь в комментариях.


    Чего не хватает и над чем мы работаем


    На GitHub есть публичный проект, в который мы пишем текущие задачи и их приоритет. Глобально ближайший стек выглядит так (про тонны мелочевки я здесь умолчу):


    • Таблицы в виде карточек и канбан таскалок


    • Доработки вызова сторонних скриптов


    • Интеграция ampphp, что ускорит загрузку больших таблиц


    • Превращение мобильной версии в полноценное PWA


    • Интеграция с поиском (скорее всего MeiliSearch)


    • Календарные виды


    • Документы в свободной форме привязанные к таблицам (типа paper)


    • Экспорт в .xslx и .pdf


    • Сервер лицензий


    • Диаграммы Ганта


    • GraphQL для использования Totum как бэка для проекта (эта часть наверное будет на Go).


    • Доработки Учебного проекта, документации и Видеокурса


    • Подготовка Eng версии


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


    • Дополнительные админские инструменты для внесения изменений в крупные работающие проекты.



    Работы еще море. Если вам хочется поучаствовать в проекте — пишите нам в telegram или на почту. Контакты есть на странице.


    Публичный проект на GitHub —>


    Заключение


    Спасибо, что заинтересовались и дочитали. Если у вас возникло желание “потыкать” Totum самостоятельно, то это можно сделать на demo-сервере. Там есть некоторые ограничения на файлы и вызов сторонних скриптов, и проживет он 3 месяца, но в остальном Totum там такой же, как и на GitHub.


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


    Если есть пожелания — пишите в комментариях или напрямую, мы стараемся учесть все, что можем реализовать.


    Если есть любые другие идеи относительно того, как это можно развивать — тоже пишите!


    Если у вас есть крутая экспертиза в развитии open source проектов и вы хотите ей поделиться — проявитесь.


    Всем продаж!


    Сайт: https://totum.online
    GitHub: https://github.com/totumonline/totum-mit
    Лицензия: MIT

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Блиц-опрос

    • 35,0%Отлично, иду тестить!14
    • 25,0%Интересно, но для меня не актуально10
    • 7,5%Интересно, но пробовать еще рано тк не все доделано3
    • 2,5%Интересно, подожду готовых решений на Totum1
    • 20,0%Что-то странное, вообще непонятно зачем это8
    • 10,0%Разрабатываю такой-же проект4
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 73

      +1
      Осталось всё это переписать на laravel, тесты, архитектуру нормальную, intl, деньги научиться обрабатывать правильно, докер… Всё осталось в общем.

      Не поймите меня неправильно — я видел очень много вполне себе успешных проектов, написанных в таком же стиле, но на перспективу оно не особо жизнеспособно; особенно если планируется «в opensource» отдать
        +3
        laravel врядли, тесты было бы здорово, разное представление денег/чисел добавится с eng-версией, докер с версии 1.0
        Работаем дальше :)
          +2
          переписать на laravel

          Зачем?
            –2
            Затем же зачем другие люди пишут на laravel/zend/yii/symfony/whateverelse — не изобретать колесо по новой — сэкономить времени, воспользоваться наработками community, получить начальные рельсы для архитектуры
              +4
              Мы не стали брать фреймворки тк решили не добавлять еще один слой абстракции, не рисковать воткнуться через год разработки в неожиданное ограничение, не зависеть от их обновлений и не терять в скорости обработки на сервере. Поделитесь, если помните, похожими проектами. Мы знаем например ozma.io
                –1
                Вы воткнетесь в необходимость добавить что-то кастомное за пределами типовых таблиц и начнете это прикручивать сбоку и понесется. Но эта проблема всех нишевых решений хоть сколько-то заточенных подо что-то конкретное.

                Также меня смущает организация кода в виде микросниппетов, я на этом нажил очень много гемороя на растущем modx проекте. Сделайте хотя бы какой-то удобный способ организации, выгрузки, чтобы в случае чего с этими микрокодами можно было работать как с единой кодовой базой в виде набора файлов.
            +1

            Использование Laravel в плане архитектуры само по себе ничего не даст. В маркетинге тоже не особо поможет или помешает. Вот, например, одна из самых популярных CMS на PHP в штатах: https://craftcms.com/. Не Laravel.


            тесты, архитектуру нормальную, intl, деньги научиться обрабатывать правильно, докер

            А вот это нужно, да. В обратном порядке причём. И про SaaS подумать сразу.

              0
              Я не говорю про laravel конкретно — любой вменяемый фреймворк. CMS — больше шансов упереться в ограничения, которых ребята боятся
            0
            Тригеры ясное дело не сработают если данные изменены напрямую в БД?
              0
              Да, не сработают. Если нужно отработать действие в этом случае — добавляется Remote, который вызывается после вставки.
              0
              API генерируется автоматически по всем данным?
                0
                В таблице указываются какие поля должны быть видны через API и возможность чтения/изменения/добавления с привязкой к роли. Или пишется Remote с конкретным функционалом — посчитать-отдать/изменить/добавить. Вот здесь видео: docs.totum.online/vzaimodeystvie_pri_pomoshchi_api
                +2
                Можно ли реализовать «из коробки» мультиорганизации с полностью разделенными юзерами и данными, но с одним функционалом?
                  0
                  Можно разработать конечное решение, а потом дублировать его на разные схемы в одной БД. У нас для этого есть техническое конечное решение (тоже на Totum). Оно управляет множеством схем для разных клиентов. Наверное мы его через некоторое время выложим его как платное дополнение — заодно потестим сервер лицензий.
                    0
                    В такой реализации код функционально будет один, а вот данные просто в разных схемах.
                    Правильно понимаю?

                      0
                      Да, код всего Totum будет один. Но Totum-коды и настройки полей внутри схемы могут при этом отличатся тк они относятся к данным и хранятся внутри схемы. Обновление будет выглядеть так — залить в схемы новые Системные таблицы и потом обновить общие скрипты.
                  +3
                  Добавьте тег low-code тут и в гите в проекте
                  0

                  Динамические фильтры к таблице — Хочу иметь Х вариантов фильтров данных к данной таблице + логику применить к данным.
                  ?

                    0
                    У полей в плейсменте Префильтр есть коды — поэтому результирующий фильтр может формироваться на основе данных в Хедере или вообще в другой таблице. Мы так делаем в каком-то количестве мест. Например одному пользователю показывать одни строки, другому другие.
                      +1

                      Надо что то такое https://academy.terrasoft.ru/documents/base/7-16/gruppy?document=marketing


                      Очень востребованный функционал маркетологами и тд

                        0
                        У нас есть похожий функционал Ярлыков для Дерева связанных с Префильтрами таблицы. Он недавно добавлен и не успели еще в документацию закинуть.
                    +2

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


                    • вся бизнес-логика строится на хуках, написанных ручками в codemirror — что фигово тестируется и легко может вызвать сбои в данных (Что выдают за плюс, так как вроде бы легко поменять, без лазания в код и долгих сложных деплоев)
                    • всё это очень хреново масштабируется и при увеличении данных начнет тормозить, так как будет трудно добиться оптимальной индексации за счёт такой универсальности: в результате недорогое решение на начальном этапе выльется гораздо дороже в эксплуатации, чем решение изначально заточенное под конкретную задачу
                      +1
                      На корпорации мы вообще не рассчитывали. Если у людей есть большой поток данных и деньги на разработку — не надо брать конструкторы подобные этому.

                      Малый бизнес не генерит таблицы на десятки миллионов строк. Поэтому сделанные нами проекты для людей с оборотом 3-15 млн в месяц прекрасно себя чувствуют. Крупные таблицы до 1 сек. Сервер на несколько проектов загружен на 0.15
                        0

                        за пару лет работы — запросто, в некоторых случаях даже меньше. Всё зависит от специфики

                          0
                          У нас есть проект в одной из баз которого хранятся стоимости доставок на 8К товаров на 16К населенных пунктов. 8Кх16К = 128М. Ну быстро отвечает — Pg с этим нормально справляется даже на виртуалке среднего ценового сегмента.
                      +1
                      Пошел смотреть в код — а там даже composer.json нет :( Визуал классный, но под капотом причесать бы под соответствие PSR-ам
                        +1
                        Сейчас мы реально зависим только от phpmailer и выкладываем ее вместе с основным кодом. Дальше все разрастется и можно будет добавить зависимости и причесать код. Это нужно будет сделать, когда появится сообщество. Сейчас и еще какое-то время мы концентрируемся на функционале, визуале и документации для пользователя Totum.
                          0

                          Код очень печальный. Без тестов, с самописным автолоадером в 2020 году проект серьёзно не воспринимается, чтобы что-то ковырять. Опять таки — как вы без тестов собираетесь валидировать PR?
                          На фронте судя по всему еще jquery.


                          Сейчас мы реально зависим только от phpmailer и выкладываем ее вместе с основным кодом

                          Это очень печально


                          С одной стороны видно, что проделана большая и непростая работа… С другой, вникать в это и развивать никакого желания, потому что поддерживать такое очень сложно

                        +2
                        Выглядит очень интересно, если забыть про jquery :) Но вот необходимость ioncube реально напрягает поставить и попробовать. Пересобирать контейнер php с ioncube ну вообще никакого желания нет. Есть ли возможность ioncube использовать опционально?
                          +1
                          +1
                            0
                            Хорошо было бы переписать на нативный JS. В какой-то момент мы это сделаем. С ionCube нет, основной класс таблицы шифрован — это нужно для полей лицензий. Попробуйте на demo-сервере: demo.totum.online
                              0
                              На нативный — перебор :) Для таких задач например Svelte отлично подойдет.

                              Демо-сервер потыкаю обязательно, но это не так интересно — я хочу посмотреть возможность интеграции с собственным управленческим софтом для упрощения отчетной части с возможностью простой и быстрой кастомизации стандартных проводок без пересборки проекта. Должно отлично подойти, но необходимость специального контейнера php как-то странно выглядит. Я не совсем понимаю — если это open source под MIT — в чем проблема сделать ioncube опцией, все ж открыто? Вон не у одного меня такие вопросы :)
                                0
                                Идея в том, что если кто-то захочет написать на Totum конечное решение, например, «Нано-CRM для химчисток», он бы имел возможность закрыть это конечное решение коммерческой лицензией. Если сделать 2 сборки, то этот фокус не пройдет.
                                  0
                                  Пардон, получается код открыт весь — кроме того, что зашифровано?
                                    0
                                    Да, зашифровано корневое поле таблиц проверяющее ее лицензию.
                                    +1

                                    А такие коммерческие решения уже существуют?

                                      0
                                      На текущий момент мы знаем людей, которые разрабатывают ERP для себя с перспективой превращения его в коммерческую коробку. Сам механизм с лицензированием еще в разработке.
                              +1
                              А если бы ещё печать документов нормально работала…
                              Тестировал в Firefox и печать в PDF
                              0
                              А что за скрипт такой странный? Почему не приделали тот же PHP или JS?
                                0
                                Простенький скрипт под конкретную структуру и задачи. Выучить просто в том числе тем кто не знает ни одного языка программирования.
                                0
                                Самый большой вопрос — какова реальна TCO проектов на этом конструкторе?

                                Когда я сам ввязывался в кастомные решения на базе опенсорса (работаю в малом и среднем бизнесе) — в итоге приходилось нанимать разработчика в штат или поддерживать длительные контракты с разрабатывающей студией, качество работы которой со временем ухудшалась (текучка кадров, снижение компетенций по нашим проектам).

                                В настоящее время, сделал для себя простой вывод — брать SaaS, которые можно быстро развернуть и доточить под себя с ожидаемым качеством сервиса от поставщика.
                                  0
                                  Что имеется в виду под ТСО? Мы предполагаем, что между Totum и конечным потребителем в бизнесе будет разработчик или микроинтегратор из 2-3 человек.
                                    +1
                                    1. Стоимость железа, на котором все крутится
                                    2. Компетенции админа, который будет сопровождать сервис и поднимать в случае краха и его загрузка на поддержку
                                    3. Стоимость проекта (тут вы озвучили от 300К)
                                    4. Стоимость доработок в течении 3 лет (в случае с конструктором учитывать обязательно)
                                      0
                                      1. Простенький сервер/шаред – 200 р/мес, наш demo-сервер стоит нам 1700 р/мес
                                      2. Компетенция в серверах почти-нулевая, вот все, что требуется что бы работало на netangels: docs.totum.online/ustanovka_i_konfiguraciya#na
                                      3. Зависит от размера разработки и стоимости разработчика. Мы делали и маленькие, просто они скорее самостоятельно разрабатываются чем на заказ. Посчитать время разработки можно здесь: start.demo.totum.online/An/52
                                      4. Тоже очень индивидуально. Клиенты для которых мы выступаем конечным интегратором тратят на обслуживание и доработки ~0.3-0.5% оборота в год.
                                        0
                                        Спасибо!
                                        Но весь мой прошлый опыт говорит о том, что поддержка все же нужна — появится чуть более сложный сниппет и система начнет тормозить. Без внутренних компетенций такую проблему уже не решить.
                                          0
                                          Если что-то непонятное с сервером — мы обращаемся в поддержку хостера. ispservers на котором наш прод лежит нормально помогает и именно с totum ни одно обращение не было связано, сервер клал лежащий рядом CS-Cart. Сам totum никакого серверного эксклюзива не требует и рассчитан на шареды в том числе.

                                          Если что-то работает не так, как описано в документации в самом Totum — да, такое случается. В текущей стадии встречается всякая мелочевка. Чиним если сами обнаружили, или нам сказали. Вот например: github.com/totumonline/totum-mit/issues?q=is%3Aissue+is%3Aopen+label%3Abug

                                          Если сложности возникают с конечным решением написанным кем-то на totum, то это зависит от этого кого-то. Как и любой инструмент, totum позволяет написать что-то быстро без учета роста базы и нагрузки, или написать это же решение оптимизировано. Мы планировали в документации сделать отдельный раздел с хорошими практиками, позволяющими сразу собирать оптимизированное решение.
                                            0
                                            Спасибо за исчерпывающий ответ!
                                  0
                                  А формы там у Вас есть? Если есть, то можно ли заполнить шаблон документа данными из формы и открыть (скачать) его в doc/docx или еще каком-то формате?
                                    0
                                    Не про то ответил в начале.

                                    Шаблоны печати и просто HTML для замены: docs.totum.online/pechat_i_csv#sx-oformlenie_shablonov

                                    Печать в .pdf в работе
                                    Выгрузка в .docx — посмотрим когда .xlsx будем делать
                                      0
                                      Спасибо за ответ и статью, очень заинтересовали! Будем посмотреть.
                                    +1

                                    Интересно сравнить по функциональности с SuiteCRM, мы им пользуемся для мсб-разработок и автоматизации. Там конечно есть свои ограничения и преимущества, попробую свести их попозже в таблице…
                                    А так это очень удобная штука получается для прототипирования и микро-ERP

                                      0
                                      +1

                                      Если вы знаете еще какие-то похожие системы — напишите. Мы стараемся смотреть по сторонам и внедрять хорошие штуки.
                                        0
                                        EspoCRM — как по мне самый удобное коробочное решение если нужно накидать данные + роли и тд.
                                        Как вариант, Directus — но это чисто админка + апи

                                        У всех есть «минус», только mysql
                                          +1
                                          Из открытых: Руководитель — www.rukovoditel.net.ru, Активити — www.activiti.org
                                          Из платных: Бипиум — www.bpium.ru, clevadesk.com, Идея — ideaplatform.online

                                          Это далеко не все близкие по задумке проекты. У всех есть свои достоинства и недостатки. Посмотрите, может быть вдохновение почерпнете для себя.

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

                                          ваш подход мне понравился, но нужно тестировать в какие углы упремся.
                                            0
                                            +1 да, надо еще мяса нарастить :)
                                        0

                                        А почему СРАЗУ не писать нормально? С тестами, соблюдая стандарты и шаблоны проектирования?
                                        Сначала заинтересовался идеей, потом немного напрягло описание в статье, а потом я заглянул в код, ужаснулся и закрыл. Нет уж, ешьте сами с волосами!

                                          0
                                          Деньги, заходите через год-два, все будет
                                            0

                                            При чем тут деньги? Вот это вот все надо переписывать с нуля. Это гораздо больше денег, чем сразу писать нормально. Вы просто плохой программист (или не вы, а тот, кто это писал). И учиться, судя по всему, не желаете. Перенимать опыт и лучшие практики других разработчиков — тоже. Страшно даже подумать, что у вас там с безопасностью. Использовать это даже для небольшого бизнеса — крайне опасно.
                                            Так что нет, через год-два я тоже не зайду. Ничего не поменяется принципиально, уверен.

                                              0

                                              Безопасность там тоже ниже плинтуса, там даже проверок на то что цены/проценты и т.п. нельзя отрицательные вводить. xss в лёгкую. Там похоже вообще не очень догадываются что пост запросы можно и без ui-интерфейса отправить, введя что угодно

                                          +1
                                          Для энтузиастов с пониженным уровнем опыта еще бы парочку «горячих» шаблонов с возможностью допиливания…
                                          Попробую на Open Server запуститься вечером, интересно получиться ли я связать Totum с Mit App inventor?
                                            0
                                            Да, мы тоже очень хотим пару крутых шаблонов :)
                                              0
                                              Изи старта на Open Server не вышло, ioncube по умолчанию в последнем php не прикручен, будем гуглить… энтузиазм упал на 5 позиций…
                                                0
                                                Странно. Нужен php 7.3 и у них на сайте написано, что для него есть ionCube. 7.4 принципиально отличается прелоадом, который для тотума не дает преимуществ.
                                                  0
                                                  Спасибо,
                                                  Заголовок спойлера
                                                  пожадничал, решил сразу с php7.4…
                                                  +10
                                                    0
                                                    Супер, а то мы запереживали :) Скорее всего 7.4 вообще пропустим и будем обновляться на 8.0 через год после его выхода. Есть предположение, что JIT будет помогать на таблицах с большим количеством полей.
                                            +1
                                            > основной класс таблицы шифрован

                                            Ваш продукт не опенсорс. Бинарь под MIT открыть — это не опенсорс. :-) не называйте его опенсорсом.

                                            Ну и (я уж не знаю, ВДРУГ вы этого не осознаёте) при желании всё всегда можно расшифровать. Кому оно конечно надо… Ну, если бы мне было надо, я бы из принципа расшифровал, да :-)

                                            А так, если по делу — ну такая себе попытка сделать свой 1С-ик. Ну, нормальная идея, но она, в общем-то, очевидная. Будет ли успех — зависит от реализации.

                                            Но в целом заниматься шифрованием кода — это какая-то фигня, нормальные проекты таким не занимаются.
                                              0

                                              Угу, концепция поменялась и мы выпилим шифрованный класс в следующем обновлении.

                                                0
                                                и можно будет запуститься без ionCube?
                                                  0

                                                  Да. Гдет через 2-3 недели.

                                                    0
                                                    АЛИЛУЯ.
                                                    А то костыльно выходит.
                                                    Конечно лучше всего что бы среда запускалась спокойно под чем то типа
                                                    dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache.html
                                                    Либо даже dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-nginx.html

                                                    Кстати, какая концепция развития сейчас?
                                                      0
                                                      Все наши дополнения для удобства разработки и управления несколькими схемами выйдут бесплатно. Мы доработаем кучу всяких мелочей именно для разработчика, в том числе возможность писать коды на php внутри Totum. Доделаем PSR-совместимость. Сегодня обновим дизайн. В следующем году будем заниматься облаком с комьюнити фишками. Облако будет платным. Возможно потом мы сделаем отдельную версию с шифрованием.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое