trak
Registry Architecture & Blueprint Spec

Decoupled Registry Specification

How Trak resolves and streams curriculum blueprints from GitHub without updating the CLI binary.

Decoupled Architecture

The CLI binary is lightweight and communicates with the public trak-registry repository over raw HTTPS endpoints. New templates are immediately available globally upon pushing to GitHub.

Deterministic Stamping

Every initialized workspace receives a stamped trak.json manifest recording the exact template ID, version tag, and UTC timestamp for reproducibility.

Template Schema (JSON AST)

Blueprints are represented as recursive file-system AST nodes with explicit type: "directory" | "file" and encoded UTF-8 contents.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "id": "lang/go",
  "name": "Go (Golang)",
  "version": "1.2.0",
  "description": "Comprehensive Go fundamentals and concurrency",
  "root": {
    "name": "root",
    "type": "directory",
    "children": [
      {
        "name": "go.mod",
        "type": "file",
        "content": "module learn-go\n\ngo 1.22\n"
      },
      {
        "name": "00-setup-and-toolchain",
        "type": "directory",
        "children": [
          {
            "name": "README.md",
            "type": "file",
            "content": "# Module 00: Go Toolchain\n..."
          }
        ]
      }
    ]
  }
}

How to Contribute a New Track

1
Fork & Clone: Fork ndk123-web/trak-registry.
2
Create Blueprint JSON: Add your template under templates/<category>/<tool>.json.
3
Register in Catalog: Update registry.json with the track name, description, and version.
4
Submit Pull Request: Create a PR to the main branch!