As part of our strategy, and following Drupalcon London, Linnovate has started investing in an app store, and we are trying to figure out what would be the best format/architecture of a Drupal App Store.
Here are some first thoughts, toward a possible implementation. The goal is to describe a generic app store, that can interconnect with any existing D7 website/distribution.
(excuse the English, grammar etc.)
Any company or individual can set up a Drupal marketplace to offer own or other developer's applications for sale.
A Drupal marketplace involves two components:
- Could be a “Drupal commerce” file store, managing files (apps).
A registered user on the store can register a client (Marketplace clients are Drupal websites).
By doing that, the user is establishing a User - Client - Store relationship which will be the foundation of remote server files transfers.
A marketplace store may be set up by a “Marketplace store” distribution.
Purchasing an app will be made easy: only one app per order, no cart view.
When choosing an app to purchase, the user will be asked to choose a client from her clients list, and approve payment.
After purchasing an app it will become available by limitations of: clients(IP Address, domains etc.), ...(more?)
a receipt with a token will be provided. At first, using the store’s address with the receipt code will be used for getting the purchased file from the client site. In later phases the purchased file will be pushed to the selected clients.
Each app (product) in the store will have:
-- A voting option (5 stars)
-- An option to add a review (comment)
-- A description
-- One or more images
Any store can have a unique design and branding.
Separation of store and storage (a commerce site and appserver site) ???
- Ability of sharing apps between stores (one storage for few stores) ???
Manages the apps on the website: enable, disable, uninstall. etc.
Browsing for new apps will be made by going to the specific store address or by viewing it on the client site in an iframe.
A client will manage a stores list from which it is recievng apps
A “Marketplace client” is a module installed on the client website.
Using the ability of Drupal 7 of remote module installation, the purchased app will be downloaded and installed on the client site, including download and installation of dependencies and other downloadable code mentioned in the app’s manifest.
I-1Marketplace network: the app stores may be, for example, hosted by: Phase2, SubHub, Acquia, Linnovate and hopefuly many other sources.
I-2 Marketplace Client - Store - Storage workflow
|marketplace transaction.png||42.28 KB|