D2 — это современный инструмент на основе текста для создания четких, легко читаемых диаграмм. D2 означает «Декларативное моделирование». В VPasCode D2 позволяет программистам и архитекторам решений превращать простой текст кода в чистые визуальные модели без необходимости вручную рисовать фигуры.
1. Основные фигуры и соединения
Чтобы создать фигуры, просто введите их имена. Чтобы соединить фигуры, используйте стрелку (-> для одностороннего или <-> для двустороннего).
# Простое соединение
Пользователь -> Веб-сервер: HTTP-запрос
Веб-сервер -> База данных: Получить данные
База данных -> Веб-сервер: Вернуть результаты
Веб-сервер <-> Кэш: Синхронизация чтения/записи 
2. Типы фигур и пользовательские метки
По умолчанию фигуры отображаются как стандартные прямоугольники. Вы можете легко изменить тип иконки фигуры или задать пользовательскую метку, используя свойство shape свойство.
# Определение типов фигур
Клиент: {
shape: person
}
Облачные сервисы: {
shape: cloud
}
Основная БД: {
shape: cylinder
label: "Основная база данных (PostgreSQL)"
}
Клиент -> Облачные сервисы -> Основная БД 
3. Определение классов
D2 нативно поддерживает проектирование объектно-ориентированных структур с использованием фигуры class фигуры.
КлиентскийСчет: {
shape: class
accountId: String
emailAddress: String
isActive(): Boolean
} 
4. Вложенные контейнеры (группировка)
D2 позволяет легко группировать элементы внутри контейнеров с помощью стандартных фигурных скобок (“{}). Вы также можете связывать элементы между разными группами с помощью нотации с точкой.
# Группировка с помощью контейнеров
Приложение с фронтенд-интерфейсом: {
React UI -> Менеджер состояния
}
Бэкенд-инфраструктура: {
Шлюз API -> Микросервис аутентификации
Шлюз API -> Микросервис заказов
}
# Связь между группами
Приложение с фронтенд-интерфейсом.Менеджер состояния -> Бэкенд-инфраструктура.Шлюз API: Вызов REST 
5. Стили и цвета
Пользовательские цвета фона, цвета линий и стили шрифтов можно настроить непосредственно внутри блока с помощью ключевого словаstyleключевое слово.
Сервис A: {
style: {
fill: "#e0e7ff"
stroke: "#4338ca"
border-radius: 8
}
}
Сервис B: {
style: {
fill: "#fef3c7"
stroke: "#d97706"
}
}
Сервис A -> Сервис B: Отправить сообщение 
6. Краткая справочная таблица синтаксиса
| Понятие | Пример кода | Что делает |
|---|---|---|
| Направленное соединение | A -> B |
Рисует стрелку, указывающую от A к B. |
| Метка линии | A -> B: Отправить данные |
Добавляет текст поверх стрелки соединения. |
| Двунаправленная стрелка | A <-> B |
Рисует стрелку, указывающую в обе стороны. |
| Контейнеры / Группы | Сервер: { ... } |
Группирует несколько фигур в одну коробку. |
| Выбор фигуры | форма: цилиндр |
Преобразует стандартную коробку в значок базы данных, человека, облака, класса и т.д. |
| Комментарии | # Мой комментарий |
Однострочные комментарии игнорируются при рендеринге. |