I'm looking for an e-commerce platform that allows for the customer to customize the product. The shop would be for glasses, so after selecting the frame there should be a form where the customer can select the type of lenses they want. The lenses available are independent of the frame selected, and the lenses add to the total price of the glasses. I think this should be doable with the same kind of product customization feature that allows for selecting custom text to be engraved on an item, for instance.

I started working on a store based on Django Shop, but I'd like to know whether there's an e-commerce framework that already supports this feature. I've also looked at Saleor,¹ ² ³ Spree, Solidus, Sylius, Reaction Commerce,¹ Aimeos, and Cezerin, but they also don't seem to have that feature. WooCommerce, nopCommerce, Shopware, and possibly PrestaShop have plugins for product customization, but those plugins are not gratis.


  • Supports product customization. Customization can be either before or after it's added to the cart; it doesn't matter. Form should support radio- and checkbox-like ways of choosing from multiple choices, and conditional logic for hiding later parts of the form. Product customization should be able to affect the price of the product.
  • Support for product variants (different sizes and colors), which can be selected on the product detail page.
  • Keeps track of stock - purchasing an item decreases the available stock, etc.
  • Easy-to-use GUI interface for adding products to store
  • Includes a pre-built mobile-responsive storefront, not just a back-end
  • Open source (copyleft is okay)
  • Gratis
  • Secure
  • Not primarily in WordPress, Drupal, Lua, Perl, Objective-C, or Pascal

Desired but not required:

  • Product list page supports filters
  • Images can be associated with the product variant and not the product model
  • Store can be translated into multiple languages. Localization for currency is not necessary, however.
  • Users can "like" or save products they like without adding it to their cart
  • Users can create an account


  • Progressive web app, single page app, works offline, etc.

Related question (no answers so far): Best e-commerce solution to add product customization within checkout page? (not product page). One difference is that I don't particularly care whether the configuration is on the product page or checkout page, and I have some additional requirements.

3 Answers 3


From my experience, you will probably need custom code to do this.

Having said that, you can try using drupal. There are two independent paths to follow:

  • drupal ubercart (simpler but older). You can try out the in-built attributes or even a module like uc_dropdown_attributes, assuming you can fit in your options [lenses, etc] as options. There is a Glasses Retailer example I came across in the past. But the developer also says they did some custom coding.


You can find some of the APIs here

Both are opensource, gratis, stock, have responsive themes, gui interface for products, create product searches/filters, users can create accounts, product images, like/save products or wishlists, localization etc. Generally customisation is done before adding to cart, but can also be done after by using ubercart_node_checkout or commerce_node_checkout.

But you will have to invest some time to try out, to see if either meets your needs.

  • 1
    Thanks for looking into this! I'd rather not use Drupal, however.
    – mic
    Aug 23, 2019 at 15:42

Drupal Commerce supports product customization. Both Drupal and Drupal Commerce are gratis and libre. I'm haven't checked whether it meets my other needs.

Drupal is, however, not doing so hot as a developer platform.

  • "Drupal is, however, not doing so hot as a developer platform" - care to expand on that?
    – Mawg
    Sep 23, 2019 at 10:37

Spree (written in Ruby on Rails) has an officially supported 3rd party extension called Spree Product Assembly.

To build a bundle (assembly product) you'd need to first check the Can be part flag on each product you want to be part of the bundle. Then create a product and add parts to it. By doing that you're making that product an assembly.

The store will treat assemblies a bit different than regular products on checkout. Spree will create and track inventory units for its parts rather than for the product itself. That means you essentially have a product composed of other products. From a customer perspective it's like they are paying a single amount for a collection of products.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.