피드로 돌아가기
Building a Privacy-First Resume Editor with Typst WASM and React
Dev.toDev.to
Frontend

Typst WASM 기반 Client-side PDF 생성으로 데이터 유출 제로 구현

Building a Privacy-First Resume Editor with Typst WASM and React

Kakuti XYZ2026년 5월 23일9intermediate

Context

기존 Resume Builder는 서버 기반 PDF 생성으로 인한 개인정보 유출 위험과 로컬 Toolchain 설치의 높은 진입장벽이라는 상충 관계 존재. 프라이버시 보호와 전문적인 Typesetting 품질을 동시에 충족하는 브라우저 기반 아키텍처 요구.

Technical Solution

  • Typst Compiler 및 Renderer를 WASM으로 포팅하여 서버 없이 브라우저 내 PDF 생성 환경 구축
  • 메인 스레드 블로킹 방지를 위해 Web Worker 내 WASM 바이너리를 배치하여 200~400ms의 컴파일 지연 시간 격리
  • Monotonically Incrementing ID 기반의 메시지 프로토콜을 설계하여 비동기 컴파일 결과의 Stale-result 거부 로직 구현
  • File System 접근 불가 제약을 극복하기 위해 Import 문을 제거하고 Mock 구현체를 주입하는 가상 파일 시스템 전략 채택
  • contentEditable의 Selection 유지 이슈를 해결하기 위해 TreeWalker 기반의 좌표 저장 및 복구 유틸리티 개발
  • Rich Text 에디터의 엣지 케이스 대응을 위해 Markdown 모드를 병행하는 Pragmatic Escape Hatch 구조 설계

1. Web Worker 도입 시 메인 스레드와 워커 간 메시지 순서 보장을 위한 시퀀스 ID 도입 검토

2. contentEditable 기반 에디터 설계 시 IME 및 선택 영역 복구 전략을 위한 DOM TreeWalker 활용 고려

3. WASM 바이너리 크기로 인한 초기 로딩 지연 해결을 위해 Service Worker 캐싱 전략 수립

4. 외부 라이브러리의 File System 의존성을 제거하기 위한 Mock Injection 레이어 설계

원문 읽기