Product Versioning And Logging

My organization needs the ability to stage and version products as they are built.

Ive already prototyped an addon that allows us to stage products and allow them to undergo a review before publishing. Essentially a separate status from "Active, Disabled, Hidden" that models a simple publishing approval process.This solves the staging part but not the versioning.

Has anyone created something that does this?

Where you create a product which would be version and with each edit/commit it saves a new version and you have the ability to see differences and roll it back. Essentially git for products.

Lastly logging needs to be changed to something more useful. It's impossible to search and the logs aren't detailed enough to provide useful information in a lot of cases. Its on my plate to extend the logging system but I think that should be improved in the primary product.

Original cs-cart had revisions, but I believe that functionality was removed at the start of V4.

Versioning of product data is something that should be built into the core. Trying to do it as an addon will be a maintenance nightmare over time as new versions of the cart are released. You'd have to keep up with every schema change related to products, features, options, etc. as well as possible addon extensions to the products and/or their schemas.

Original cs-cart had revisions, but I believe that functionality was removed at the start of V4.

Versioning of product data is something that should be built into the core. Trying to do it as an addon will be a maintenance nightmare over time as new versions of the cart are released. You'd have to keep up with every schema change related to products, features, options, etc. as well as possible addon extensions to the products and/or their schemas.

I was thinking of doing it via the rest API. Seems the simplest way since you get and update the whole object each time and don't need to worry about the schema as much. At its simplest you could store previous versions of the product in their json representations.

That is one way. There are many ways to skin a cat. Especially in cs-cart.

If you're planning to do this in the cart itself, I think you're going to find the hard part is the version management aspect. Are you planning to have a listing of versions for each product in the admin interface and then have a checkbox that selects the version and updates the DB?

Could be an interesting addon to develop.

If you're going to do it off-board and use the API to export/import the products to the versions you want, I'm guessing you could use git to manage/track the versions and data but I'd think you'd need a development instance of cs-cart for updating the products and then extracting them. You'd then 'get' a version and then import them to your production site when you're approval process is complete.

Keep us updated on the business process you are going to use and the high-level details surrounding it. It sounds like an interesting project.

If you've ever used sharepoint thats the sort of versioning paradigm I'm thinking of. You could just add a table to store the versions as json representations of the product object. Then a separate panel that would bring up version history and allow you to compare them. Thats all just off the top of my head though. I don't know how much effort it would be to actually use git to do it. That would be interesting though

Keep us posted…