Totum — open source конструктор CRM, ERP и произвольных учетных систем

Конструируйте ERP, XRM, CRM
и другие управленческие инструменты

х5 раз быстрее! MIT license ⟶
Totum для вас, если вы — небольшая команда из 2-3 человек или фриланс-разработчик.
Посчитайте время производства проекта на Totum воспользовавшись калькулятором ⟶

Для команд из двух-трех человек, фрилансеров и интеграторов 💪 👀

Totum упрощает разработку нишевых ERP, XRM, CRM и других управленческих инструментов. Подходит небольшим интеграторам и начинающим разработчикам для превращения бизнес-опыта в готовые решения. Используйте Totum для конечных продуктов или быстрого прототипирования.

Области применения

Один конструктор — множество вариантов применения

Собирайте данные ⟶ Обрабатывайте ⟶ Выполняйте действия ⟶ Создавайте отчеты

Комбинируйте готовые блоки

Графики на основе chart.js.

Вы можете настраивать отображаемые данные и вид.

Возможны комбинированные отображения с двумя разными осями по Y.

Самое универсальное поле.

Хранит строковое значение любой длины.

При сравнениях Строки в виде чисел сравниваются с числами как числа.

Хранит целое или десятичное число до 10 знаков после запятой.

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

Имеет настраиваемое автоматическое округление вводимого значения в том числе с заданным шагом.

Выпадающие списки.

Создаются вручную или автоматически на основе другой таблицы.

Подключаются превью и секции.

Есть поиск по значениям.

Могут быть сформированы кодом по условиям.


= : selectRowListForSelect(table: 'chairs'; field: 'name'; where: 'id' != 6; order: 'id' asc; section: 'type'; preview: 'img')
        

Сворачивающиеся иерархические списки.

Поиск значений.

Одинарный и множественный выбор.

Настраиваемый запрет на выбор папок.

Классический чекбокс.

В кодах true и false.

Дата или Дата + время.

Можно выбрать в выпадающем окне или ввести вручную.

totum-code имеет несколько инструментов для обработки дат.

Например, вычисление даты последнего дня текущего месяца:


= : dateAdd(date: $fd; days: $days; format: "Y-m-d")

days: dateFormat(date: $fd; format: "t") - 1

~fd: dateFormat(date: $#nd; format: "Y-m-01")
        

Кнопки, для выполнения запрограммированных действий.

Автоматическая защита от множественного нажатия.

Возможность нажать кнопку программными методами.

Большие тексты с форматированием.

Можно настроить подсветку синтаксиса и ограничить объем текста передаваемый в браузер.

Для редактирования открывается во всплывающем окне.

Ситуативные комментарии.

Показывают кто и когда оставил заметку.

Есть подсветка непрочитанных^ индивидуальная для каждого пользователя.

Один или несколько файлов.

Автоматическое добавление хэша к пути, для усложнения подбора имени.

Превью для .png и .jpg

Пароль в скрытом виде.

Хранится в md5.

Не логгируется при изменении.

Данные в формате JSON.

Редактируются во всплывающем окне через jsoneditor.

Данные могут быть быстро получены с любого уровня вложенной структуры:


= : #json_field[data][datasets][0][borderColor]

// Результат: blue
        

Адаптируйте под разные ширины экранов

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

Вам не нужно знать CSS/GRID/FLEX для того, что бы сделать понятный, адаптивный интерфейс на Totum.

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

Ваша решение будет выглядеть аккуратно на всех ширинах экранов.

Используйте типовые возможности интерфейса

Открывайте таблицы с необходимой фильтрацией для показа проваливания в данные.

Используйте шаблоны таблиц для заполнения их ситуативными данными.

Показывайте внешние ресурсы в iframe.

Выбирайте тип показа iframe, self, blank, top.

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

Автоматически закрывайте окно при успешном завершении выполнения действия.

Контекстное меню для всех полей.

Полное значение поля.

Автоматически генерируемая дополнительная информация для выпадающих списков.

Картинки и текст расчитываемые при показе контекстного меню.

Размещение в контекстном меню дополнительных кнопок.

Разделение полей на сворачивающиеся секции.

Распределение полей по группам.

Управление заливкой и обводкой для групп.

Динамическая подстройка ширин полей под размеры экрана и автоматическое выравнивание.

Управление точками переноса полей.

Указание относительных высот для групп.

Скрытие заголовков и обводок полей.

Встроенные нотификации.

Приоритет показа и даты активности.

Групповые действия.

Расширенные нотификации (карточки звонков, заказов, клиентов и т.д...)

Всплывающая панель ввода.

Срабатывание на enter.

Выполнение произвольного действия.

Настраиваемое HTML-содержимое.

Автоматическая активация по триггеру.

Настройка текста кнопки подтверждения.

Множественный ввод значений.

Относительные изменения для числовых полей.

Копирование значений в буфер.

Блокировка одновременного изменения нескольких колонок.

Сортировки по отображаемым строкам.

Сохраняемый ручной порядок сортировки строк.

Фильтры по нескольким колонкам.

Поиск и инвертация значений в фильтрах.

Фильтрация по ручным значениям в полях.

Вам нужен только браузер

Разработка и эксплуатация ведутся в одной среде. Таблицы, поля и их настройки создаются и управляются мышкой. Логика пишется кодом.

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

Разрабатывайте сложные продукты

Программируйте логику небольшими функциональными кодами

Totum написан на PHP, но внутри программируется собственным языком — totum-кодом. Он упрощает разработку для новичков.

Разработчику на Totum не нужно знать SQL — вызов и запись данных тоже осуществляется на totum-коде.

В большинстве полей коды маленькие — до 5-10 строк.

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

Сделано это на основе Codemirror.

Коды привязаны к полям и разделенны по типам действия:

— Одни коды вычисляют значение аналогично формуле Excel.

— Другие, следят за триггерами изменений и если они сработали, выполняют написанные в них действия.

— Третий тип кодов отвечает за внешний вид полей в зависимости от набора данных.


= : listSum(list: $list) + #fixed_costs

list: selectList(table: 'orders'; field: 'cost'; where: 'number' = $listNumbers)

listNumbers: selectList(table: 'orders'; field: 'number'; where: 'date' >= #first_day_months; where: 'orderStatus' = #final_status)

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

Дорабатывайте прямо в эксплуатирующемся проекте

Благодаря PHP, ваша ошибка при разработке не приведет к обрушению всего сервера. А встроенные инструменты отладки и тестирования помогут вам вносить изменения в работающие проекты на лету.

Низкие требования к серверам

Totum не использует фреймворки, легковесен и может успешно работать на серверах среднего и эконом класса.


CPU 2х2.2ГГц 512Мб RAM PHP >=7.3 PostgreSQL >= 9.5 Apache/Nginx
  

Автоматические транзакции и одновременный доступ

В качестве базы данных Totum использует PostgreSQL.

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

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

Встроенная система логгирования и гибкие права доступа

Настраивайте разрешения на видимость, добавление, изменение, удаление, дублирование и доступ к логам по ролям.

Отслеживайте авторизации и действия пользователей.

Всегда известно, кто совершил то или иное действие.

Для большей безопасности для пользователей API настраивается собственный доступ.

Печать таблиц, печать по шаблонам, экспорт/импорт в .csv из коробки

Просто не тратьте на это время и все...

API, который вам нравится

Открытое и настраиваемое API позволяет обмениваться данными с любыми системами как на вход, так и на выход.

Обменивайтесь данными с Totum через POST в формате JSON.

Инициируйте обращение к стороннему серверу непосредственно из totum-кода.

Напишите свой микросервис на totum-code отвечающий на GET/POST запросы.

Вы легко сможете подключить к Totum ваш сайт или мобильное приложение.

Большие возможности для расширения функционала

Весь код открыт, свободно-модифицируем и соответсвует PSR-1, PSR-2, PSR-3, PSR-4, PSR-7.

Быстро интегрируйте собственные функции или вызывайте любые скрипты через ssh непосредственно из totum-code:


example: execSSH(ssh: "python ./python_script"; vars: $vars)

vars: rowCreate(field: "key_1" = "value_1"; field: "key_2" = "value_2")

// В ssh будет выполнена команда $ python ./python_script key_1='value_1' key_2='value_2'

// Результат будет возвращен в example

Если вам потребуется специальный модуль с собственным интерфейсом — положите его папку в ./totum/moduls/, он сможет использовать все возможности Totum.

Скачать PDF по разработке модулей и интерфейсов

Обслуживание нескольких проектов в одной базе

Обслуживайте несколько схем для разных клиентов на одном сервере.

Используйте поставляемый в комплекте консольный bin/totum для установки, дублирования, создания новых схем и обновлений:

Простая установка с git:


git clone https://github.com/totumonline/totum-mit.git
cd totum-mit
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --quiet
rm composer-setup.php
php composer.phar install --no-dev
bin/totum list

Мы выполняем работы по разработке конечных решений для бизнеса. Сами и при помощи партнеров-интеграторов. Бюджетная вилка на разработку 150К—1М р. Для оценки стоимости проекта потребуется его описание в .xlsx, .doc или облаке.

Демо

Если вы хотите попробовать Totum до установки на собственный сервер — оставьте заявку. Мы пришлем доступ на почту в течении 30 минут. Все происходит автоматически в любое время суток.