TDC Studio

Authoring · GPLv3 · DSL v2

TDC Studio

Two ways to write a .tdc course: the TDC Studio app, or the VS Code extension in the tdc-sdk repo. Self-study, school, workshop, association — not trainers-only.

tdc-sdk on GitLab VS Code extension Play a sample course

For yourself. Document what you learn (networking, Linux, security) as .tdc, replay it in T2DECODE offline.

In a group. Lab tomorrow: modules, Markdown, quiz, tdc check, signature. Ghost Link: P2P talk on the same network, the .tdc reaches the desks — classroom with no internet.

Two ways to write

Same .tdc file, same grammar. Use the app, or stay in VS Code / Cursor / VSCodium. Anyone can write a course: for yourself, a friend, a class, a club.

1. The TDC Studio app

Standalone IDE (macOS, Windows, Linux). Home: new course, open a .tdc / .json, templates (Linux, networking, security, cloud, crypto, dev). Three tabs: form, .TDC code, learner preview (T2DECODE rendering). Ed25519 signatures, .tdc export. Flutter source: TDC-Studio-IDE-App in the repo. Screenshots: v1.7.

App source

2. The VS Code extension

If you already write in an editor. Highlighting, diagnostics, snippets, open a .tdc in Studio. Not on the Marketplace: VSIX in the vscode-tdc folder of the same repo. Current file: vscode-tdc-language-1.1.0.vsix. ID: tutodecode.vscode-tdc-language.

Download the VSIX

App screenshots

TDC Studio IDE. Click to enlarge.

Extension screenshots

Official extension in the repo — not a Marketplace listing. VS Code, Cursor, VSCodium.

code --install-extension vscode-tdc/vscode-tdc-language-1.1.0.vsix
cursor --install-extension vscode-tdc/vscode-tdc-language-1.1.0.vsix

Snippets: tdc-course, tdc-module, tdc-quiz, tdc-question, tdc-codeblock. Offline: install from the VSIX file (Extensions menu → Install from VSIX).

Why a .tdc language, not JSON

The association did not invent a language for sport. It defined T2DECODE’s native course format: a file you read as a lesson plan, not as an API payload.

Example

Native .tdc on the left. The same course as .json on the right (parser fallback).

course.tdc

course "intro-linux" {
  title: "My course"
  category: linux
  level: beginner
  module "module-1" {
    title: "Chapter 1"
    content """
## Introduction
Markdown lesson
    """
  }
}

course.json

{
  "id": "intro-linux",
  "title": "My course",
  "category": "linux",
  "level": "beginner",
  "content": [
    {
      "id": "module-1",
      "title": "Chapter 1",
      "content": "## Introduction\nMarkdown lesson"
    }
  ]
}

tdc CLI

Same repo, next to the app and the extension: lint, inspect, convert.

./tdc check my_course.tdc
./tdc info my_course.tdc
./tdc convert-json old.json -o my_course.tdc

Signatures

Ed25519 before distribution. T2DECODE verifies. Ghost Link: P2P talk on the LAN, the .tdc stays in the room — not a cloud.

Play a course in T2DECODE