M
M
Maxim Zubenko2019-06-06 12:56:06
Django
Maxim Zubenko, 2019-06-06 12:56:06

How to make a rendering system with additional properties unknown in advance?

Good time everyone!
In the last few years, I've been addicted to Django. During this time, he created several systems for production. Systems operate in the furniture segment.
By and large, it was necessary to consider all stages of the production of an enterprise. And to make sure that the customer can place an order online and immediately know the price of this order, as well as prepare blank documents in one click. Of course notifications. Payment. Archive of orders and so on.
It may immediately seem that this is some kind of online store. But it only seems. In fact, I’ll tell you on the example of, for example, the production of facades for kitchens.

  • The facades have about 10 models
  • Thousands of types of paints and varnishes
  • Several dozen patinas (also color)
  • Facades can be made of 4 types of materials (3 types of wood and MDF)
  • Some of the models can be made from only one material, some from two, some from any
  • There are about 30 types of facades within one model (deaf, under glass, under a lattice, overlays, metabox, etc.)
  • In addition to facades, there are other products (decor, prints, cornices, arches, pillars, columns)
  • They also have their own additional properties
  • Some additional properties are grouped (i.e. only one item can be selected from the group)
  • A separate point I would like to note the radius facades (curved round)
  • Under the product there is a range of sizes (the client specifies the sizes himself)
  • Some products provide for non-standard (out of range, but the price increases)
  • Some additional properties affect only the order item, some affect the group (for example, arches or pedestals), some affect each order item
  • Some additional properties change the price, some are only informational (type of socket, type of edge processing, etc.)

And all this is just what I remembered offhand. The service (my software product made on Django) monitors everything. Doesn't show extra. Controls the sizes, prices and all additional properties in the mode, which is called "from the fool". All sorts of options are laid out and everything is embodied.
There are three prices in the system (Manufacturer, Dealer and Furniture Manufacturer). The latter, depending on the volume, has a discount of 5 to 15%
And now the question is:
I did all this for one client. Everything is tied to its production processes. And database tables and price formulas. All specifically for this production.
As I did, a second client appeared. Made it for him too. He has some processes similar, and some nuances are completely different. This means that some database tables and price formulas are different.
Now the third client is pecking. And so a thought arose .
Is it possible to make some kind of universal platform, where all sorts of options for some additional properties, characteristics, production features, formulations, price formulas, etc. It was possible to configure what is called "from the admin panel".

I suddenly remembered that once in the distant past there was such a PHP engine called Jumla. And here it was possible to customize, hang, all sorts of add-ons, plugins, widgets and other fake whistles.
Question: How (under the hood) are such software solutions implemented? Well, when the nuances and additional properties are not known in advance?
ps I hope my question is clear.
ps2. If there is something to read or see, then I will be glad to like it in the comments.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
sim3x, 2019-06-06
@sim3x

Comparing your solution and Joomla is, of course, the height of disrespect for yourself and jung
Development always follows business solutions, not before
If you agree with all your clients to unify their businesses, then you can think about SaaS based on your solution
Now, in fact,
you can use the project as a boilerplate, but no more.
Immediately there will be a problem with removing some of the functional tests
. Solutions that try to cross a snake with a hedgehog always end up with solutions a la Joomla with the same code quality and security problems

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question