Repository navigation
Deployment Workflow
selldone deploy (or Deploy in the menu) turns the project in the current folder into a new Layout version on
Selldone. This page explains every step, the manifest.json rules and the premium requirement, so you know what to
fix when a step stops.
selldone deploy
│
├─ 1. Authenticate ........ saved token → 2FA status check, or browser login
├─ 2. Premium check ....... only premium accounts can deploy
├─ 3. Manifest check ...... ./manifest.json fields
├─ 4. Version check ....... POST /developer/layouts/check-version
├─ 5. Confirmation ........ type "yes"
├─ 6. Build ............... npm|yarn run build-production
├─ 7. ZIP ................. contents of dist/ → dist.zip
└─ 8. Upload .............. POST /developer/layouts/deploy (file + manifest)
If ~/.selldone-dev/.persist holds a token, the CLI prints You are already authenticated. and checks the 2FA status.
If no token is saved, it starts the browser login. If the saved token is rejected, the CLI clears it and starts the
browser login again. See Authentication.
The CLI prints the signed-in user and stops unless the account is premium. See Premium requirement.
The CLI reads ./manifest.json and stops with an error when a rule is broken. See manifest.json.
The CLI sends package and version to POST https://api.selldone.com/developer/layouts/check-version. If the
version is already used, it prints the error and, when the Layout exists, its dashboard URL
(https://selldone.com/developer/layouts/<id>). Details: Layout Deployment API.
The CLI prints the Layout name, version, package and supported targets (Storefront and/or Backoffice) and asks:
❓ Is the name "My Custom Storefront" and version "1.0.0" correct? (yes/no):
Only yes (any letter case) continues. Any other answer stops the deployment.
The CLI runs build-production with npm or yarn (see Package manager detection)
and prints the build output. If the build fails, it prints the error and stops.
The contents of dist/ are compressed with maximum compression into dist.zip in the project root. The dist/
folder itself is not included, so dist/app/shop.js becomes app/shop.js in the ZIP. The required structure is
described in Packaging Layouts.
The CLI uploads a multipart/form-data request with two parts, file (dist.zip) and manifest (the text of
manifest.json), and shows a progress bar. On success it prints:
- the server message (for example
Layout uploaded successfully!), - a Layout table and a Deploy table,
-
DONE! with the management URL
https://selldone.com/developer/layouts/<layout_id>.
The server creates or reuses the Layout, creates a new deployment and sets this version as the Layout's beta version
(version_beta). Details: Layout Deployment API.
manifest.json lives in the project root, outside dist/. It is uploaded as a separate form field; a manifest inside
the ZIP is not used.
{
"package": "my-custom-storefront",
"version": "1.0.0",
"name": "My Custom Storefront",
"description": null,
"storefront": true,
"backoffice": false
}| Field | Checked by the CLI | Checked by the server |
|---|---|---|
package |
Required. Must match ^[a-z0-9\-.]+$ (lowercase letters, digits, -, .). |
12–64 characters. The unique, permanent identifier of your Layout. |
version |
Required. Must match ^[a-z0-9\-.]+$. |
1–64 characters. Must not have been deployed before for this package. |
name |
Required. | 8–255 characters. |
description |
— | String or null. Include the key. |
storefront |
At least one of storefront and backoffice must be true. |
Boolean. |
backoffice |
At least one of storefront and backoffice must be true. |
Boolean. |
Recommendations:
- Use a lowercase slug with letters, digits and single hyphens for
package, and keep it the same for every release. The New wizard warns: do not change the package after the first publish. - Use lowercase letters, digits, dots and hyphens for
version. Underscores are rejected by the version check. - Set
storefront: truefor a storefront Layout. - Other keys in your manifest (the Storefront project also has
deploy_serveranddeploy_path) are sent as part of the manifest text; the fields above are the ones the deploy endpoint validates.
Common manifest errors printed by the CLI:
| Message | Fix |
|---|---|
manifest.json does not exist. |
Run the CLI from the folder that contains manifest.json. |
The manifest.json file is missing either the name or the version field. |
Add name and version. |
One of the storefront or backoffice field is required in the manifest.json to be true. |
Set storefront or backoffice to true. |
The package field [...] must be lowercase alphanumeric and can contain dashes, or dots. |
Remove uppercase letters, spaces and other characters from package. |
The version field [...] must be lowercase alphanumeric and can contain dashes, or dots. |
Fix version the same way. |
Version is duplicated! Please change the version in the 'manifest.json' and try again. |
Increase version. |
Deploying Layouts is a premium feature. For a non-premium account, the CLI prints:
Only premium users can deploy layouts. Please upgrade your account to premium. It costs only $8 per month or $84 per year.
Subscribe at selldone.com/shuttle/wallet/subscriptions. The CLI
also says that if you cannot subscribe, you can email Selldone once you have completed your Layout design, and that
free premium badges are offered to the most outstanding designers. Premium users see
You're a premium user. You can deploy layouts for free.