Skip to content

Latest commit

 

History

History
65 lines (50 loc) · 2.14 KB

File metadata and controls

65 lines (50 loc) · 2.14 KB

PosterScript

LLM이 포스터를 생성·수정하고, 브라우저에서 시각화하며, PNG로 내보낼 수 있는 오픈 텍스트 포맷과 렌더러.

프로젝트 구조

posterscript/
├── docs/
│   └── SPEC.md              # 언어 스펙 (source of truth)
├── packages/
│   ├── parser/              # .poster 파싱 → AST (TypeScript, zero deps)
│   ├── renderer/            # AST → 브라우저 렌더링 (Vanilla JS)
│   └── cli/                 # CLI 도구
├── playground/              # 웹 데모 (Vite + Vanilla JS)
├── examples/                # 예시 .poster 파일들
├── CLAUDE.md
└── package.json             # pnpm workspace

핵심 설계 원칙

  1. LLM이 content만 수정@editable 블록의 content 값만 바꾸고, 레이아웃/스타일은 건드리지 않음
  2. 결정론적 렌더링 — 같은 .poster 파일 = 항상 같은 결과
  3. 단순한 스펙 — AI가 프롬프트 하나로 즉시 사용 가능한 수준의 단순함 유지
  4. Zero-dep 파서 — @posterscript/parser는 외부 의존성 없음

기술 스택

  • 패키지 매니저: pnpm workspaces
  • 언어: TypeScript (strict)
  • 렌더러: Vanilla JS (프레임워크 없음)
  • 플레이그라운드: Vite + Vanilla JS
  • 테스트: Vitest
  • 빌드: tsup

명령어

pnpm install          # 의존성 설치
pnpm dev              # playground 개발 서버
pnpm build            # 전체 빌드
pnpm test             # 전체 테스트
pnpm test:parser      # parser만 테스트

코드 스타일

  • ES modules (import/export), CommonJS 금지
  • Named exports 선호, default export 최소화
  • 2스페이스 들여쓰기
  • 타입 명시 (any 금지)
  • 에러는 throw 대신 Result 타입 반환 (파서에서)

개발 순서 (단계별)

  1. packages/parser — 파서 + 타입 + 테스트
  2. packages/renderer — 렌더러 (단일 HTML 파일로 먼저)
  3. playground — 에디터 + 미리보기 연결
  4. packages/cli — CLI 마지막

참고 문서

  • 언어 스펙: @docs/SPEC.md
  • 예시 파일들: @examples/