Core Concepts
Metabind is built around an integrated system of concepts that work together to enable flexible content creation and management. This page explains the key building blocks of the platform.Components
Components are the fundamental building blocks of Metabind. They define reusable UI elements that can be rendered across multiple platforms. Components come in two varieties:View Components
Standard UI components for displaying content. Examples:
ProductCard, ArticleParagraph, HeroImageLayout Components
Define the overall structure for entire content types. Examples:
ArticleLayout, ProductPageLayoutKey Characteristics
- Written in BindJS (JavaScript with SwiftUI-inspired API)
- Render as native UI on each platform (SwiftUI, Jetpack Compose, React)
- Maintain draft and published states
- Can have bound assets (images, fonts, etc.)
- Only receive version numbers when included in a Package
Component Collections
Component Collections are organizational units that group related components together. They provide logical grouping in the CMS UI without affecting the final package structure.- Can exist at the root level or within folders
- Help teams organize components by feature, type, or any other criteria
- Collection structure is flattened when creating packages
Packages
Packages create immutable snapshots of all components in a project at a specific point in time.Key Characteristics
- Use semantic versioning (e.g.,
1.0.0,2.1.3) - Immutable once created (cannot be modified)
- Automatically publish all draft/modified components
- Include all component-bound assets
- Snapshot project dependencies at creation time
| Package Actions | Effect on Components |
|---|---|
| Creation | Publishes all draft and modified components with new version numbers |
| Versioning | Uses semantic versioning (MAJOR.MINOR.PATCH) |
| Dependency Management | Snapshots project dependencies at creation time |
| Asset Management | Includes all component-bound assets |
Draft Package Workflow
For development and preview, Metabind provides a draft package: a virtual package composed of the latest draft components. This enables preview and iteration before formal publication.Content Types
Content Types define specific kinds of content (e.g., “Article”, “Product”, “Recipe”).Key Characteristics
- Associated with a layout component that determines structure
- Specify an allowlist of components that can be used within the content
- Reference specific package versions for component stability
- Include template content examples to help users get started
- Support draft and published status with independent versioning
Component Groups
Content Types can organize allowed components into logical groups:Content
Content items are concrete instances of Content Types. They contain the actual data that will be rendered by components.Key Characteristics
- Reference a specific Content Type version
- Derive package version and allowed components from the Content Type
- Can be created from templates or from scratch
- Follow the same status management as other entities (draft, published, etc.)
- Store content as JSON matching the layout component’s schema
Template Content
Template Content provides pre-built content examples that demonstrate how to use a Content Type.- Serve as starting points for creating new content
- Follow the structure defined by the layout component
- Are locked to specific package versions
- Can be published and versioned independently
Assets
Assets represent media files (images, videos, documents, etc.) stored on the CDN.Two Types of Asset Usage
- Component-bound assets: Attached to components (e.g., icons, backgrounds). These are included in packages.
- Content assets: Referenced by content items (e.g., article images). These are managed separately.
Saved Searches
Saved Searches are project-level search configurations for filtering content and assets.- Support user favorites for quick access
- Maintain usage statistics for optimization
- Can be organized in folders
Folders
Folders create hierarchical structures for organizing saved searches.- Support custom ordering
- Use a decimal-based ordering system for easy reordering
Component Collections serve as the folder mechanism for organizing components. The Folders feature is specifically designed for saved search organization.
How It All Fits Together
The typical workflow:- Create Components using BindJS
- Publish a Package to snapshot components
- Create a Content Type referencing the package
- Create Content using the Content Type
- Deliver Content via API to mobile apps
- Render natively using the BindJS runtime
