DSM: Describe Your Data Model

A declarative language to define types, structures, and relationships. Write once, generate everywhere.

What is DSM?

DSM (Digital Substrate Model) is a declarative language for defining your application's data model. Instead of writing repetitive boilerplate code, you describe what your data looks like, and Kibo generates the how.

Five Fundamental Notions

Namespace

Organize your model into logical modules. Maps directly to C++ namespaces and Python packages.

Concept

The core entity in your model. Like a class, but with built-in persistence, versioning, and serialization.

Key

Unique identifier for concept instances. Type-safe references between entities.

Document

Standalone data structures. Perfect for configuration, metadata, or transient data.

Attachment

Properties of concepts. Strongly typed with support for primitives, containers, and references.

Type System

DSM includes a complete type system:

  • Primitives: bool, int8-64, uint8-64, float, double, string, blob
  • Containers: vector, set, map, optional
  • Structures: struct, tuple, enum
  • References: key<Concept> for type-safe foreign keys

IDE Integration

Two IDE extensions support DSM development with syntax highlighting, validation, and code completion.

VS Code

ds-dsm extension
  • Syntax highlighting for keywords, types, UUIDs
  • Snippets for quick structure creation
  • Problem matcher integration
  • Theme customization support

Available Snippets

namespace concept struct enum attachment key optional map
View Documentation

JetBrains

IntelliJ, CLion, PyCharm
  • Context-aware code completion
  • Go to Definition, Find Usages
  • Rename refactoring across files
  • Real-time validation

Key Shortcuts

Cmd+Click Go to Definition
Shift+F6 Rename
Ctrl+Alt+V Validate DSM
View Documentation

Development Workflow

Write DSM Validate Fix Errors Generate Code

Start Modeling

Learn DSM syntax and best practices in the comprehensive manual.