Как стать автором
Обновить

Totum — open source, self hosted база данных для непрограммистов

Время на прочтение8 мин
Количество просмотров13K

Инструмент для цифровизации бизнеса в момент, когда он вырос из XLS-таблиц.

Универсальный UI, логика на основе простых кодов, автоматические действия, права доступа, логирование, API и куча всего остального 👍

На вашем сервере, легко изучаемая и масштабируемая вместе с ростом бизнеса 🎉

Вместо целой команды проект могут вести 1-2 специалиста ✌️

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

Лицензия: MIT (бесплатно)

Сайт: https://ru.totum.online
GitHub: https://github.com/totumonline/totum-mit

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

Видео на YouTube (5 мин)

Для быстрого конструирования внутренних приложений непрограммистами 💪 👀

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

Это нужно и эффективно, когда под ваши требования на рынке нет готовых вариантов.

В общем — когда в XLS-табличках уже запутались, а до SAP еще какое-то время :)

Дальше расскажу про саму систему и про то, что изменилось с прошлой статьи.

Здесь на GitHub можно посмотреть, что делали люди из сообщества

  • Управление производством

  • Финансовый учет

  • Инвентаризация оборудования

  • Ведение заказов

  • Учет услуг

  • Перенос учета из Excel

  • Склады

  • итп...

Totum — это еще и Enterprise-возможности для малого бизнеса. Интеграции, личные кабинеты для поставщиков, покупателей, сотрудников…

Используйте Totum для конечных продуктов или прототипирования:

— Totum — гибрид базы данных и электронных таблиц.

— Готовый frontend — для десктопов и мобильных устройств.

— Small-code — простой синтаксис, который легко освоить.

Документация и учебный курс — первая работающая таблица через 30 мин.

— WEB, open-source — устанавливается на собственный сервер.

— Двухуровневый доступ — разработчик-пользователи.

— API — интегрируйтесь с чем угодно.

Сервер + браузер + таблицы + small-code

Сервер

Тотум ставится на ваш сервер:

  • Попробовать demo без установки

  • Если вы с сервером на «ты» — то вот конфигурация окружения на ubuntu

    Низкие требования к серверам — Totum не использует фреймворки, легковесен и может успешно работать на серверах среднего и эконом класса. PHP 8.0, который мы используем для текущей версии, имеет JIT и реально быстро переваривает даже замороченные расчеты.

Браузер

Дальше вы работаете с базой через браузер.

Глобально это выглядит так:

  • Создаете мышкой нужные вам таблицы и поля;

  • Для некоторых пишете формулы, вычисляющие значения;

  • Для некоторых полей пишете, что они должны сделать автоматически при наступлении условий;

  • Раскрашиваете поля, как вам комфортно;

  • Создаете роли и назначаете комбинацию прав на видимость, добавление, изменение, удаление, дублирование и доступ к логам по ролям.

  • Раздаете роли пользователям и проверяете, не видят ли они лишнего;

Сборка и эксплуатация решения идет через один интерфейс, в котором разработчик (создатель), имеет дополнительный слой с технической информацией:

Таблицы и поля

База данных как интерфейс — х10 к скорости разработки 🏃 💨

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

  • строки;

  • числа;

  • файлы;

  • тексты;

  • график;

  • ...

Small-code — код для неразработчиков

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

Это очень простой язык, который создан неразработчиками для неразработчиков.

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

В большинстве полей коды маленькие — до 5-10 строк. Не сложнее, чем формулы в Excel, а по читаемости в 10 раз лучше.

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

Значения (формулы)

Одни вычисляют значение аналогично формуле 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)

Действия

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

Форматирование

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


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

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

Разобраться поможет:

— бесплатный! учебный курс

форум на GitHub

— техподдержка в Telegram 👌


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

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

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

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

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

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

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

API

Cам Totum может вызывать сторонние серверы и сторонние серверы могут вызывать микросервисы в Totum, которые вы можете запрограммировать на totum-коде.

Таким образом можно подключить все, что обменивается данными через интернет, например Telegram-бот. А если взять коннектор типа Zapier на тарифе, который дает возможность исполнять POST, то можно быстро законнектить кучу SAAS сервисов. Сделаем в Мае больше видеинструкций по этой теме.

Если у вас есть специальные серверные скрипты, то их можно вызвать по SSH непосредственно из totum-кода и получить ответ непосредственно в Totum.

Не только таблицы

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

Карточки типа Канбан: взал картинку из проекта опубликованного сообществом. Темная тема это плагин для браузера, а не возможность Тотум (темную тему чуть позже сделаем):

Всякие разные всплывающие окна, сворачивающиеся секции, относительный и групповой ввод значений, контекстные меню итп:

Работа над ошибками

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

Например: использование ioncube-шифрования. Изменение коммерческой модели и пара хороших идей по оптимизации поспособствовали тому, что мы переписали ядро более экономным образом — уже без шифрования и на улучшенной архитектуре.

В те древние времена не было консольного установщика — добавили.

Очень люди расстраивались, что нет composer — это было наше сознательное решение, тк люди на которых Тотум ориентирован знать не знают, что это такое. Но оказалось, что пользуются и программисты и им удобнее подтянуть дополнительные зависимости через composer — исправились и добавили.

Просили переписать на laravel и засунуть внутрь Slim — это нет, сознательно не стали добавлять лишних фреймворков.

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

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

Была мысль, что ляжет по нагрузке из-за плохой архитектуры конечных решений, тк делают непрофессионалы. Ответ такой: если в вашем решении таблицы на десятки миллионов строк, то может быть, поэтому в этом случае можно написать нам вопрос, как лучше сделать. Если миллионов строк не предвидится — то не переживайте. Если вы в принципе хотите делать хорошую архитектуру на Totum — я записал вам пару видео про нее. Мы регулярно вывешиваем примеры с видео по запросам пользователей. Можно посмотреть в этом плейлисте на нашем канале YouTube.

Если вы переживаете, что у вас компания на 5000 пользователей будет эксплуатировать — то в принципе подумайте, нужен ли вам Тотум. Для корпораций можно проверять так — смотрите основной репо на GitHub и, если у нас там уже больше звезд, чем пользователей в вашей системе — то можно делать. Если меньше, то максимум локальное что-то для отдельно взятого отдела. Сейчас ~110, но они все с одной статьи на Хабр год назад.

Что обещали по функционалу в прошлой статье

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

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

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

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

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

  • Календарные виды будет в PRO или можно натыкать самим

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

  • Экспорт в .xslx и .pdf будет в PRO

  • Сервер лицензий отказались

  • Диаграммы Ганта будет в PRO

  • GraphQL отказались

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

  • Подготовка En версии готово + подготовка под другие языки (китайский есть)

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

  • Дополнительные инструменты для разработки много чего добавили, еще куча будет в PRO

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

Покрытие кода тестами и контрибьют

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

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

Как можно поучаствовать:

— рассказать о своем проекте, когда сделали, здесь

— написать нам, если вам вдруг выпал warning, так-как есть миллион комбинаций использования, мы проверили не все 100% просто потому, что пользователи выдумывают такие, про которые мы не догадывались;

— если у вас есть какая-то идея по новому функционалу — пишите здесь. Не все добавится в MIT и, возможно, не все предложения реализуются, но по факту мы много чего улучшаем именно по таким запискам;

— если вы хотите добровольно помочь нам с переводом на любой язык, в первую очередь на испанский или португальский — напишите мне в Telegram @alexeypolunin

— если вы хотите добавиться на страницу Партнеры (разработчики на Тотум) — также напишите мне в Telegram @alexeypolunin

— если сделали проект для себя и вам понравилось — поставьте звезду основному репо

Обучение

Больше всего за это время мы потратили на учебные материалы — это реально так.

Сейчас есть базовая часть Учебного курса, форум на GitHub и можно написать мне в telegram

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

Продвинутую часть мы наверстаем в течении Мая - Августа, как раз, к моменту, когда она вам потребуется, если вы стартанете что-то делать в Мае.

Если вы читаете эту статью в 23 году или позже, то вангую, что все уже есть.

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

Месяц — если по часу по вечерам.

Неделя-полторы — если в будни по 4 часа в день.

Пользователи с успешными проектами в среднем тратили около полутора месяцев параллельно с другими задачами до начала их эксплуатации на своем предприятии.

Заключение

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

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

Если у вас есть крутая экспертиза в развитии open source проектов (желательно за пределами границы РФ) и вы хотите ей поделиться — проявитесь.

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

Всем классных проектов!

Сайт: https://ru.totum.online
GitHub: https://github.com/totumonline/totum-mit

P.S.: Для ранних пользователей будущий PRO — бесплатно. Ставьте звезду основному репозиторию если хотите его получить!

Теги:
Хабы:
Всего голосов 27: ↑21 и ↓6+15
Комментарии17

Публикации

Истории

Работа

ABAP разработчик
10 вакансий
PHP программист
148 вакансий

Ближайшие события