Skip to content

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:

ElementDescription
ComponentsThe infrastructure to deploy (databases, services, etc.)
ConnectionsVisual links showing data flow between components
InstructionsStep-by-step guidance for participants
ResourcesCPU 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:

  1. SnapBench creates an isolated Kubernetes namespace
  2. Components are deployed based on the scenario definition
  3. The participant accesses terminals and web UIs
  4. 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

Released under the MIT License.