Guidelines for Apps
The guidelines are to ensure high quality apps and that they work in all the CMSs, which Ucommerce integrate with.
The points mentioned in this section are thing that we will look for in the curation process of apps.
Ucommerce Sample App
To help you build your shiny new app, you can leverage the Ucommerce Sample App project. It contains examples of many of the most common extensions you might need and conventions you need to follow.
Component Ids
Unique component ids are important to avoid conflicts between apps unless you're specifically looking to override existing components of Ucommerce or others apps.
To avoid this your component ids should be prefixed with the app name, e.g. MyApp.MyComponent as opposed to MyComponent.
Ucommerce will pick up all the .config in the apps folder and therefore the ids of the components registered are very important, as you shouldn't override other app developer's components.
Dependencies
Ucommerce Dependencies
Your app package shouldn't contain any Ucommerce assemblies as they will already be present on the system when your package is installed.
CMS Dependencies
To make your app run across all CMSs supported by Ucommerce, your app must depend on the Ucommerce CMS abstractions instead of CMS's own implementations.
This also ensures that your app will work when additional CMS integrations are released.
Other Dependencies
To avoid dependency conflicts between your app and other apps, all of your app's dependencies must be signed. This is to ensure that .NET always pick the right assembly if the same assembly is present in multiple versions.
Installing Your App
Go to the Ucommerce backend and open "Settings" -> "Apps" -> "Install App" in the menu tree to the left. Upload the your app nupkg file and click the upload button. In the details page for the app click the install button.
When your app is installed, views, binaries, and configuration will added to the Apps folder, e.g. uCommmerce/Apps/MyApp. As Ucommerce starts it will load the dependencies of all the installed apps.
Your app may need to setup something for your app to work, for this there is an initialization pipeline, which is run when Ucommerce starts up.
Packaging Functionality
To make it easy for you to distribute your app, the sample app project can generate a Nuget package for you, by default the sample app project will generate a package everytime you build the project.
The reason that app are distributed as Nuget packages is that it's a established format.
Documentation
The documentation for you app can be added to the Nuget package that you upload to the app store and the documentation will hosted on our documentation site.
Support
Supporting your app is important because users will have questions about your app that won't be covered in your documentation, they will encounter bugs using your app and they will need your help, and Users will have suggestions to changes and extensions that you might not have thought about.