Open source CRM constructor


Hi all! The project is already more than three years old, and the number of stars on GitHub has exceeded 500 with zero marketing — so I decided to write about the updates that we have had.

In this article there will be no furious technical details, since under the hood Totum has PostgreSQL and PHP. All this is packaged in Totum for users who may have programmed once, but that was a long time ago and is no longer true.

The killer feature (aka the killer problem for this project) is its own DSL for non-programmers and a special solution structure that allows people with a superficial understanding of programming to create very complex projects, spending a little time in the evenings, after the main work (tested on people).

The main part of the project is open source with an MIT license, there is an advanced PRO with a limited license, but also free – look at https://ru.totum.online – and there is an installation script that even a schoolboy can handle.

Links

Website: https://ru.totum.online

lived-emo: https://n-a7c70ee-78365.demoru.totum.online/

Order a full demo: https://ru.totum.online/downloaddemo

Documentation: https://ru.docs.totum.online/

GitHub: https://github.com/totumonline/totum-mit

Ru forum: https://github.com/totumonline/totum-en-issues-and-discussions/discussions

Telegram: https://t.me/alexeypolunin

Previous articles

This one: https://habr.com/en/articles/511162/

This one: https://habr.com/en/articles/666184/

And here he talked about our DSL: https://habr.com/en/articles/687398/

Brief retelling of previous episodes

The idea was to make a designer of internal information systems for tasks that no longer fit in excel tables:

  • there is a lot of data

  • with automatic interaction of everything with everything

  • including with other projects on the web

  • with hard and dynamic sharing of access rights

  • logs

  • and so that it was all code, and not a thing with squares and arrows

  • but such that it was not necessary to learn SQL

  • and draw data presentation templates – i.e., so that the data is a template

Since we see that there are already more than 100 projects on Totum that were not made by us (and sometimes very complex ones), we can say that this works.

What projects are people doing

ERP, systems for accounting for goods or money, systems for taking orders or collecting information. Interaction systems: production-dealers or supplier-client. Accounting for something exotic, for which no ready-made solutions were found. Or in cases where they deliberately refuse some boxed solutions in order to implement their own way of data movement in the company and gain an advantage over competitors.

About completed projects, we ask you to write to forumbut it works very poorly – they don’t write.

Finished projects in operation look something like this:

Management system for orders and production of medical equipment

Management system for orders and production of medical equipment

What does Totum code look like and what is there with the architecture of solutions

Architecture

First, let me tell you a little about the architecture. The basis is tables, and in them – fields. Here everything is the same as in the database, so we call this type of table Simple. In addition to them, there are tables, where each row contains virtual tables within itself. And there are separate virtual tables that do not have a trace in the database (more precisely, they do, but they are temporary).

Fundamentally Simple and various kinds of Virtual differ in one central parameter – what is calculated in them when a change occurs.

In Simple tables, only the row in which the change occurred is calculated, in Virtual tables, the entire table. Thus, it is possible to regulate the load on the server by moving the cost point of computing power.

Code

Fields in tables contain isolated code. The code is such an analogue of formulas in excel, it can be set in a specific field and it calculates the value of this field. Looks something like this:

A simple code that calculates the discounted amount given the quantity

A simple code that calculates the discounted amount given the quantity

It can take data from the current table or from other tables and perform various operations on them. Fields are calculated from left to right and top to bottom when recalculated, and thus codes in subsequent fields can take on the calculation values ​​in previous ones. A simple solution can be done using codes only. You don’t need to know SQL.

We have typing hints, syntax and error highlighting, search for field and table names. Of course, this does not reach the level of fancy IDEs, but this is not necessary here. Usually codes in Totum are small – 5-10 lines. The code in Totum, 50 lines long, is already a monster. Record examples are 100 lines, and, as a rule, they really did something wrong.

The codes are also functional, so they are written the other way around, which is why the skill developer in imperative languages ​​suffers – but Totum is not for skill guys, so relax 🙂

In addition to these codes, there are also action codes – they look the same, but they perform actions after calculating the values ​​in the fields for one of four triggers: changing, adding a line, deleting a line, or clicking in a blocked field.

We recalculate the rows in the table with the history of deliveries by conditions, when changing in the current field

We recalculate the rows in the table with the history of deliveries by conditions, when changing in the current field

Actions are already less isolated than codes, since they can change values ​​outside the field in which they are performed, as well as open context windows or connect to third-party servers. They look the same, only the functions are used differently. You still don’t need to know SQL.

The third type of codes is the formatting of the field by conditions, highlight in red or block. And all sorts of other things. You don’t need to know SQL here either 🙂

Color the field orange or red depending on the value in the current field

Color the field orange or red depending on the value in the current field

You can safely use the same variables, repeat pieces of code, write something sloppy, etc. Especially in Codes and Formatting – because if something is killed, then locally in a specific field.

The combination of codes, action codes and the use of different types of tables makes it possible to create something simple very quickly, and, after thinking, to make an optimized solution.

For those who need hardcore: there is a direct access to the database and the connection of custom functions and the call .py scripts through the server console.

Education

You can learn by yourself using the documentation and a free training course. Search here: https://ru.docs.totum.online/training-course

If something is stuck, you can ask the audience for help: https://github.com/totumonline/totum-en-issues-and-discussions/discussions/20

Why is the code, there is no-code and it is very fashionable

We didn’t use it on purpose. Yes, tables, fields and their parameters are typed visually with the mouse. But then we wanted the platform to be able to implement complex logic with code – it’s much easier to do this. You have to spend a little more time than in no-code, but on the other hand, when implementing complex logic, the effort expended does not grow as much as it happens in no-code systems.

Of course, we know about systems in which some basic blocks, poked with a mouse, are converted into code in a full-fledged language and then they can be finalized. But for this you need to be qualified in the language into which this ready-made block is converted, and we focused on people who are qualified in something else – in engineering or servers, for example, but not in hardcore programming.

To illustrate, I drew this picture:

I met similar opinions on Reddit, but this is not mainstream

I met similar opinions on Reddit, but this is not mainstream

In short, I wanted to achieve a smoother increase in complexity with a small entry threshold. In Totum, it is honestly higher than in Airtable or similar projects, but many times lower than in 1C.

As an experiment, my wife took a basic 1C course for 250 hours. After this course, she could do half as much as people with minimal programming background who spent about 30 hours studying Totum.

Now, in the era of chatGPT, I am infinitely glad that we still have a code (because there were doubts). We’ve done a few experiments and we’re succeeding in teaching GPT how to program in Totum. It’s even easier than I expected. So by the end of the summer, there will be a chatbot built into the system that will further lower the barrier to entry for newcomers. And it will get really good.

Accommodation

Any vps with ubuntu 20 (currently). The larger the project, the more powerful the server you will need. We did not use intermediate frameworks, plus Totum is well optimized, which allows it to work on something budget.

SaaS services

We were not able to cram everything into the distribution kit. Those functions that are not stuffed can be used through our central server.

The list of services will be updated. Now available:

  • uploading tables to .xlsx

  • generation of documents in .xlsx and .docx according to a template (for example, an invoice or contract template)

  • creating a .pdf based on an html template (instead of printing) or based on a .xlsx/.docx document (so that you can immediately send a letter with files to the client, bypassing the browser’s print window, or even do it automatically in the background)

  • [через пару недель] loading data into a table from an .xlsx document with a range and date and number format conversions.

  • [через пару недель] viewing .xlsx and .docx documents uploaded to the system in the browser through their automatic conversion to .pdf

A little later this year:

  • a million different options with GPT

  • geoservices based on open street map

  • generators of various codes (bar, qr, etc.)

  • picture processor

  • something else we haven’t thought of yet

You can connect both to the MIT version and to the PRO: https://ru.docs.totum.online/srv_connection

If you are just starting to use Totum, then most likely you do not need Services yet, but know that they are 🙂

What else is in the plans of the project

The project is developing, but now not as fast as before, since the code base is large and it takes us a lot of time to build almost any new functionality into the system.

From what I really want to finish in the near future, these are:

  • Various file improvements

    • Versioning

    • Separation by folders on the server (to be able to store large archives)

    • Integration with Only Office (opening and editing office formats directly from the system)

    • Sharing files with secure access

  • Authorization via Gmail, Twitter and Github

  • Rocket Chat Integration

  • Reading IMAP out of the box and custom SMTP for users (to be able to correspond directly from the system)

Afterword

If suddenly you are a large corporation, you read and you liked the idea – compare the number of stars in our GitHub repo with the number of employees in your corporation. If there are more employees than we have stars – Totum is not suitable for you (100% experience).

If you want to ask something personally, catch a slot for a short personal consultation (free of charge): https://control.demoru.totum.online/Forms/free-consultation (20 minutes is really a couple of questions).

You can also write me questions in Telegram: https://t.me/alexeypolunin

Just a disclaimer right away: a laudatory ode of any length sent to us does not mean that we will be blown up for free to develop the long list of your wishes that follows it 🙂

I also immediately answer the question about design: if you are interested in design and its processing (like the project is ok, the design is *** but) – it doesn’t suit you. For everyone who redesigned the design, the project did not work. Either karma or something, but most likely they just put the emphasis on the wrong thing!

If you want to be added to the list of partners developing projects, then welcome. No super requirements: https://github.com/totumonline/totum-en-issues-and-discussions/discussions/230

All cool projects!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *