Stack이란?
Stack은 정적인 소프트웨어 아키텍처와 기술 스택 다이어그램을 위한 작은 선언형 언어입니다. UTF-8 .stack 파일에 컴포넌트, 경계, 관계를 작성하고 좌표, 간격, 경로, 타이포그래피, 시각 표현은 렌더러가 결정합니다.
이 분리는 소스를 간결하고 리뷰하기 쉽게 만들며 버전 관리에도 적합하게 합니다. 같은 문서를 드로잉 명령으로 바꾸지 않고 호환 도구에서 포맷, 검사, 렌더링할 수 있습니다.
기본 모델
모든 문서는 언어 버전과 정확히 하나의 다이어그램을 포함합니다. 다이어그램에는 노드와 선택적인 그룹, 엣지, 테마, 레이아웃 의도가 들어갑니다.
stack 1.0
diagram "Service architecture" {
node client "Web app" {
kind client
}
node api "API" {
kind service
detail "Order orchestration"
}
edge client -> api "HTTPS" {
kind request
}
}이 소스는 클라이언트가 서비스를 호출한다는 의미를 나타냅니다. 박스 위치나 화살표 경로는 지정하지 않습니다.
Stack의 설계 목표
- 간결한 작성: 이름이 있는 노드와 엣지만으로 유용한 다이어그램을 만듭니다.
- 예측 가능한 생성: 사람과 언어 모델이 같은 개념을 하나의 제한된 방식으로 안정적으로 표현합니다.
- 의미 기반 소스: 픽셀이 아니라 토폴로지와 의도를 기록합니다.
- 정돈된 출력: 렌더러가 일관된 시각 시스템을 소유합니다.
- 실행 가능한 오류: 진단은 소스 범위, 예상 값, 수정 도움말, 관련 선언을 제공할 수 있습니다.
- 안전한 임베딩: 소스는 코드를 실행하거나 임의 에셋을 가져오거나 HTML/SVG를 삽입할 수 없습니다.
Stack이 아닌 것
Stack 1.0은 범용 그래프 언어, 픽셀 단위 캔버스, 인프라 정의, 실행 가능한 프로그래밍 언어가 아닙니다. 변수, import, macro, 조건문, CSS, 좌표, 임의 URL, 내장 HTML이 없으며 sequence, state-machine, class, ER, 전체 UML 표기법도 아닙니다.
큰 시스템은 하나에 압축하지 말고 여러 개의 집중된 다이어그램으로 설명하세요. Stack에는 가독성을 위한 요소 제한이 있습니다.
처리 모델
도구는 문서 디코딩과 파싱, 식별자와 기본값 해결, 의미 검증, 테마와 아이콘 해결, 레이아웃, 렌더링 순서로 처리합니다. 소스 오류는 렌더링을 중단합니다. 선택적 테마나 아이콘 누락, 만족할 수 없는 레이아웃 힌트는 경고가 되어 fallback 다이어그램을 반환할 수 있습니다.