We are building a jewelry website where customers can assemble different products together for purchase. This product building module will be on each page reading session variables. The module will respond according to the session variables set by the customer interactions.
Customers can build the following category/types of jewelry products on the website:
rings, pendants, and earrings.
The jewelry products can combine with 2 types of stones... diamonds / gemstones.
Earrings require 2 stones of near identical measurements.
The customer can select stone(s) first OR they can select jewelry products first. The customer can find the jewelry product first, then the website will display stones that fit the product, including sorting and filters to help. Or the customer can find the stone first, and the website will display products that fit the stone, including sorting and filters to help.
Jewelry products will include custom attributes: length, width, depth, and accepted shapes. These attributes will be used to match stone the stones to products. And some products can have more than 1 stone to match. Each stone will have 4 attributes that are used to match products: 3 dimensions (length, width, and depth) and 1 stone cut (shape).
Your code must be well documented and committed to our private git server. Please mention the word "amethyst" in your bid, so that I know you read this.