I agree that we should capitalize from other carts experience which have been tested and improved over time. Besides Magento I find
OpenCart (login credentials: demo, demo) also valuable because it seems to be simple and powerful, probably more alike of what Nop requires.
The Multi-store/vendor conceptJust for establishing a working framework here are some some kinds of multi-store/vendors which I had described in another post (and now with some more details):
Multi-vendor (drop-shipping): several vendors selling under one store (as this in Nop)which has only one common: domain, skin, product catalog, customer db, payment and shipping methods, reward points, discounts, etc. There are several administrations, one general which sees and controls everything and one for each vendor from which he updates his products and sees and controls the portion of the orders referring to his products. This is, in real life similar to some department stores which provide (or "rent") places to vendors to display their products but customer pay at store's checkout. The vendors do not have control over the customers base nor the discount. promotion and reward strategies, etc. Amazon could be a case of multi-vendor.
Multi-Store: Several stores sharing one or several parts of the cart system. Here we can have different combinations and cases. Examples:
- Like a pizza (or groceries, supermarket, etc.) chain with a general catalog, but not all product and prices are alike in all branches: One domain (each store might have its sub-domain); one skin; one central customer db; common payment and shipping methods, and discount and rewards settings; etc. Individual stores have their administration to check/control their orders and to select their products and pricing from general catalog. Ina a multi-national/regional case is common that products can from store to store different pricing and costing, taxing, currencies, stock/warehoses, etc.
- Like a mall: several stores under one roof. One general domain and other common infrastructure (i.e. delivery, credit card processing, rewards, etc). Each store has its domain (redirected to its sub-domain in the general domain) skin (sometimes from a set of templates provided by the mall), catalog, customers, discounts, individual payment and shipping methods. The Mall might have a general catalog, encompassing all individual catalogs, for the purposes of aiding the customers to do searches and then refer them to the individual store. It may also provide customer service, call/chat center and a guaranties to customers. Ebay can be in a combination of this and previous case.
- Like a shopping district where all stores are independent (domain, skin, customers, catalog, payment/shipping, discounts/rewards, etc.) but they all share a common cart system (most db's are individualized), so that the hosting and any enhancements are shared by all stores.
- A multi-Vendor could be considered a particular case of a multi-store.
Summarizing a multi-store can go from some stores selling some products from a general catalog and sharing some common infrastructure to a single installation with different and independent stores.
My 2 centsI find that Adndrei's initial proposal is an excellent start and here are some comments on what he and others have proposed:
1. Mapping. The ACL type of mappings sounds good. Consider mapping product variants which can be used to differentiate pricing, currency, costs, taxing, warehouses, stock management, etc. Topics should be mapped too. Store managers should have restricted access to the entities allowed to their stores.
2. Cart and order history sharing. I think at least for the first releases there should not be cart sharing. Each store should have its own cart and order history. For a multi-vendor (drop shipping, as the
project developed by Hezyz, alike Amazon) there would be a
single store where orders and catalog administration is split among all the vendors.
3. Settings. OpenCart Settings and other configurations under System have interesting ideas for Nop.
4. Plugins. Some plugins such as all related to discounts should be shared by all stores whereas there are some others (i.e. shipping and payment) which will require multiple installations.
8. Localized message templates and strings Maybe they can be handled as different versions of the same language. In that fashion each language (which will be a default) might have different "versions".