My implementation is for a jeweler that only makes one of each item.  Each item is unique.  I want to avoid double-selling an item.  I tried fiddling with inventory management and so on -- but it seems to only take effect AFTER the purchase is complete.  So 2 people could in at the same time, add the same necklace to the cart and buy it -- one is going to be very upset.

This is for nopCommerce 2.20

My thought is to fiddle with Libraries\Nop.Services\Orders\ShoppingCartService.cs and make it set "do not buy" when an item enters the cart and then clear it when it leaves the cart (or maybe add a similar flag that acts like do not buy, but call it "in cart").  

This way, when someone adds an item to their cart, it instantly makes it unavailable to others (barring some race conditions).

In addition, I'd develop some kind of timeout service that would expire carts after 10 or 15 minutes -- this would be to try to stop people from holding items for days and then not purchasing them.

Does this sound like a good approach?  I realize I'm going off the beaten path here, but it'd beat having to write an ecommerce from scratch.