Skip to content

JumpStart

JumpStart is Total CMS’s data import/export system that allows you to quickly set up new projects with predefined content structures, collections, schemas, and sample data. Think of it as a blueprint for your CMS that can be shared, modified, and reused across different projects.

IMPORTANT: JumpStart is not a full backup of your data. JumpStart will remove all images, galleries, files and depots from your data. Please refer to the Export to Zip in each of your Collections. This will include all data from that collection.

  • Bootstrap new projects with predefined collections and schemas
  • Import sample content for development and testing
  • Create consistent project structures across multiple sites
  • Share content structures between projects
  • Create starter templates for specific industries or use cases
  • Distribute pre-configured CMS setups to clients or team members
  • Export data from one Total CMS instance and import to another
  • Backup and restore content structures
  • Transfer configurations between development, staging, and production
  • Provide sample data for demonstrations
  • Create training environments with realistic content
  • Showcase CMS capabilities with pre-populated data

A JumpStart definition is a JSON file containing:

{
"version": "1.0.0",
"name": "My Project Template",
"description": "A template for...",
"collections": {
"reserved": ["blog", "gallery", "text"],
"custom": [...]
},
"schemas": [...],
"objects": [...],
"factory": [...]
}

reserved entries can be either a plain string id (creates the collection with defaults) or an object with overrides. The object form keeps the built-in schema binding but lets you customise the URL, sorting, name, and other collection settings:

{
"collections": {
"reserved": [
"gallery",
{ "id": "blog", "url": "/blog/{id}", "sortBy": "date:desc" }
]
}
}

Common overrides:

FieldPurpose
urlPublic URL pattern. Supports template placeholders (e.g. /blog/{id}); templated URLs are automatically pretty.
prettyUrlToggle pretty URLs for non-templated URL prefixes (ignored when url contains placeholders).
sortByDefault sort (e.g. date:desc, title:asc).
nameDisplay name shown in the admin sidebar.

When you export your current CMS data to JumpStart format:

  • All Objects: Every object from every collection is added to the objects array
  • Collection Definitions: Both reserved and custom collection configurations
  • Custom Schemas: Any custom schemas you’ve created
  • Collection Settings: Labels, sorting, and other collection configurations
  • Binary Uploads: Image files, gallery images, uploaded files, and depot files are not included in JumpStart exports. Image, file, depot, and gallery field values are normalized/referenced but not embedded. If you need to preserve all files and binary data, use the Export to Zip option in each collection instead.
  • Images: Can use "image": "imageBlur" factory rules
  • Galleries: Can use factory rules to generate sample gallery items

💡 Tip: You may want to review and clean up the exported objects before creating your final JumpStart definition. Consider moving repetitive objects to the factory array for easier maintenance.

The factory array allows you to generate multiple objects with fake data instead of storing each individual object. This is more efficient and flexible than having dozens of similar objects in the objects array.

{
"factory": [
{
"collection": "blog",
"count": 10,
"data": {
"title": "sentence",
"content": "paragraphs",
"date": "date",
"featured": "boolean"
}
}
]
}
{
"factory": [
{
"collection": "text",
"id": "welcome-message",
"data": {
"text": "Welcome to my site!"
}
}
]
}

Instead of having many similar objects, you can:

  1. Export your data to see the objects array
  2. Identify repetitive objects (like multiple blog posts or products)
  3. Move them to factory configuration
  4. Update the data rules to use Faker generators

Before (objects array):

{
"objects": [
{
"collection": "blog",
"id": "post-1",
"data": {"title": "My First Post", "content": "Lorem ipsum..."}
},
{
"collection": "blog",
"id": "post-2",
"data": {"title": "Another Post", "content": "More content..."}
}
// ...more similar posts
]
}

After (factory array):

{
"factory": [
{
"collection": "blog",
"count": 5,
"data": {
"title": "sentence",
"content": "paragraphs",
"featured": "boolean"
}
}
]
}

Common Faker rules you can use in factory data:

  • Text: "word", "sentence", "paragraph", "paragraphs"
  • Numbers: "randomFloat(2, 10, 100)", "numberBetween(1, 100)"
  • Dates: "date", "dateTimeBetween('-1 year', 'now')"
  • Names: "name", "firstName", "lastName"
  • Contact: "email", "phoneNumber", "address"
  • Web: "url", "domainName"
  • Images: "imageBlur" (for filtered image generation)
  • Lists: "tags(1, 5)" (generates 1-5 tag items)

During import, certain field types are automatically filtered:

  • Image fields are skipped during factory generation to avoid file dependencies
  • File fields are skipped for the same reason
  • Gallery fields support factory generation but files are filtered

Use the API endpoint to import JumpStart definitions:

Terminal window
POST /import/jumpstart
Content-Type: application/json
{
"version": "1.0.0",
"name": "My Template",
// ... your jumpstart definition
}
  1. Go to Admin Utils → JumpStart
  2. Configure what to include:
    • Also include: Toggle checkboxes for Objects (collection data) and Templates
    • Schemas: Checklist of schemas to export; use the toggle to select/deselect all
    • Collections: Checklist of collections to export; use the toggle to select/deselect all
  3. By default, all schemas and collections are selected, so clicking Export with no changes exports everything (same as before)
  4. Untick items to narrow the export to specific collections and schemas
  5. When a collection is selected with Objects included, both the collection definition and its object data are exported
  6. Review and edit the exported JSON file as needed
  7. Save your customized JumpStart definition

Total CMS includes a demo JumpStart file at resources/jumpstart/demo.json that showcases various collection types and demonstrates best practices for structuring JumpStart data.

  • Start with essential collections and schemas
  • Use factory for repetitive content
  • Keep unique objects in the objects array
  • Document your JumpStart purpose in the description field
  • Remove test or temporary objects before finalizing
  • Convert similar objects to factory rules
  • Update factory data to use appropriate Faker rules
  • Test your JumpStart definition on a fresh install
  • Version your JumpStart definitions
  • Update factory rules as your content structure evolves
  • Test imports regularly to ensure compatibility
  • Document any custom requirements or setup steps

Related Documentation: