Core Concepts
Understanding these concepts will help you make the most of SnapBench.
Organization
An organization is the top-level tenant boundary. Each organization has:
- Its own users (admins, authors, participants)
- Its own scenarios and component catalog
- Resource quotas and billing
- Isolated from other organizations
Multi-Organization
Users can belong to multiple organizations with different roles in each. For example, you might be an author in one org and a participant in another.
Scenario
A scenario is a complete lab definition. It contains:
| Element | Description |
|---|---|
| Components | The infrastructure to deploy (databases, services, etc.) |
| Connections | Visual links showing data flow between components |
| Instructions | Step-by-step guidance for participants |
| Resources | CPU and memory requirements |
Scenarios are versioned. When you publish, you create an immutable version that participants can run.
Component
A component is a deployable building block. Components come from two sources:
Common Catalog
Platform-wide components available to all organizations:
- PostgreSQL, MySQL, MongoDB
- Kafka, RabbitMQ, Redis
- Elasticsearch, MinIO
- Custom applications
Organization Catalog
Components created by your organization for internal use.
Component Configuration
Each component can be configured with:
- Resources: CPU and memory limits
- Environment variables: Configuration values
- Secrets: Sensitive data (passwords, keys)
- Helm values: For Helm-based components
- Tabs: Terminal and web UI access
Run
A run is an active instance of a scenario. When a participant starts a lab:
- SnapBench creates an isolated Kubernetes namespace
- Components are deployed based on the scenario definition
- The participant accesses terminals and web UIs
- After completion (or TTL expiry), resources are cleaned up
Run States
┌──────────┐ ┌───────────┐ ┌─────────┐ ┌──────────┐
│ Starting │ ──▶ │ Running │ ──▶ │ Stopping│ ──▶ │ Stopped │
└──────────┘ └───────────┘ └─────────┘ └──────────┘
│
▼
┌───────────┐
│ Failed │
└───────────┘Track
A track is an ordered sequence of scenarios, creating a learning path. Useful for:
- Multi-session courses
- Progressive skill building
- Certification programs
Instruction
Instructions guide participants through a lab. They support:
- Markdown formatting
- Code blocks with copy buttons
- Tab navigation links (click to switch components)
- Images and diagrams
Studio
The Studio is the authoring interface where authors:
- Design scenarios on a visual canvas
- Configure components
- Write instructions
- Preview and publish
Next Steps
- Author Guide - Learn to use the Studio
- Components Catalog - Browse available components
