← 목록
기타 2026-05-19 8KB 읽기 8분

CrownyDoc Office Suite — MS Office/구글독스 대체 고도화

개요

docs.crowny.org를 MS Office / Google Docs 수준으로 고도화 완료. 100% 한선씨(.한선)로 구현 — 외부 라이브러리 0개.

구현 완료 (29개 한선씨 파일)

서버 (2개)

  • 서버/메인서버.한선 — HTTP 서버 (포트 4100), REST API, 정적 파일 서빙
  • 서버/인증관리.한선 — 쿠키 기반 인증, SHA256, 세션 관리

편집기 - Word 대체 (5개)

  • 편집기/편집기코어.한선 — contenteditable WYSIWYG, 서식/Undo/Redo
  • 편집기/도구모음.한선 — 5탭 리본 (홈/삽입/레이아웃/검토/보기)
  • 편집기/찾기바꾸기.한선 — Ctrl+F/H, 정규식, 대소문자, 단어 단위
  • 편집기/표편집.한선 — 표 삽입/행열 추가삭제/병합/분할/테두리
  • 편집기/댓글추적.한선 — 댓글 스레드, 변경 추적 (삽입/삭제 하이라이트)

시트 - Excel 대체 (5개)

  • 시트/시트엔진.한선 — 그리드 렌더링, 셀 편집, 수식 바, 다중 시트 탭
  • 시트/수식파서.한선80+ 함수 (SUM, VLOOKUP, IF, PMT 등)
  • 시트/셀서식.한선 — 18개 숫자 형식, 조건부 서식, 데이터 바
  • 시트/시트차트.한선 — Canvas 차트 5종 (bar/line/pie/area/scatter)
  • 시트/시트도구모음.한선 — 5탭 리본 (홈/삽입/서식/데이터/보기)

슬라이드 - PowerPoint 대체 (5개)

  • 슬라이드/슬라이드엔진.한선 — 960x540 캔버스, 요소 드래그/리사이즈
  • 슬라이드/발표자모드.한선 — 풀스크린 발표, 발표자뷰, 타이머
  • 슬라이드/슬라이드템플릿.한선 — 7레이아웃 + 5테마 (크라우니/다크/오션/포레스트/미니멀)
  • 슬라이드/전환효과.한선 — 12전환 + 9요소 애니메이션
  • 슬라이드/슬라이드도구모음.한선 — 5탭 리본 (홈/삽입/디자인/전환/쇼)

협업 (3개)

  • 협업/공용유틸.한선 — CrownyOffice 네임스페이스, 테마, 자동저장, 줌
  • 협업/협업서버.한선 — WebSocket 서버 (포트 4101), 룸 기반 협업
  • 협업/협업클라이언트.한선 — 브라우저 WS 클라이언트, 자동 재연결, 원격 커서

UI (4개)

  • UI/스타일생성.한선 — 전체 CSS (다크모드, 리본, 그리드, 발표자)
  • UI/레이아웃생성.한선 — SPA index.html 셸
  • UI/대화상자생성.한선 — 모달 대화상자 (표/이미지/링크/서식/조건부서식)
  • UI/파일탐색기생성.한선 — 홈 파일 관리자 (그리드/리스트 뷰, 검색)

내보내기 (4개)

  • 내보내기/마크다운변환.한선 — HTML↔Markdown 양방향 변환
  • 내보내기/PDF내보내기.한선 — 인쇄 기반 PDF (문서/시트/슬라이드)
  • 내보내기/시트내보내기.한선 — CSV/TSV/HTML/JSON 내보내기
  • 내보내기/가져오기.한선 — MD/TXT/CSV/TSV/HTML/JSON 가져오기

빌드 (1개)

  • 빌드/빌드도구.한선 — 전체 빌드 오케스트레이터

실행 방법

bashcd /Users/ef/CrownyDoc/한선씨
# 각 생성기 실행 (정적 파일 생성)
crowny run UI/스타일생성.한선
crowny run UI/레이아웃생성.한선
crowny run 협업/공용유틸.한선
# ... (각 .한선 파일 실행)

# 서버 실행
crowny run 서버/메인서버.한선
# 접속: http://localhost:4100

기술 스택

  • 언어: 100% 한선씨
  • 외부 의존성: 0개
  • 서버: CrownyTVM HTTP서버 라이브러리
  • 협업: WebSocket v2 라이브러리
  • 인증: SHA256 쿠키 기반
  • 차트: Canvas API 직접 구현
  • 편집기: contenteditable + execCommand

v2 고도화 (2026-05-19 두 번째 세션)

에러체크 시뮬레이션 (188건 발견 → 전부 패치)

모듈에러 수CRITICALHIGHMEDIUMLOW
편집기 (5파일)36081810
시트 (5파일)433121810
슬라이드 (5파일)3207169
협업 (2파일)140464
UI (4파일)3006168
내보내기 (4파일)2838125
기타50221
합계1886478847
CRITICAL 수정 6건:
  1. 수식파서 코드 인젝션 → 화이트리스트 파서 패치
  2. 시트 내보내기 data 구조 불일치 → 키 기반 순회로 수정
  3. 가져오기 setCellValue→setCell 이름 불일치 → 별칭 추가
  4. HTML 가져오기 XSS → sanitize 함수 추가
  5. 시트도구모음 10개 메서드 미정의 → 전부 스텁 추가
  6. 순환참조 무한루프 → _recalcStack 감지 추가

에러수정 패치 (error-fixes.js — 887줄, 34KB)

  • Null safety: $()/$$ 헬퍼, querySelector 래핑
  • XSS sanitize: CrownyOffice.sanitize(), script/iframe/on 제거
  • Error boundary: 수식/JSON/WebSocket 전부 try-catch
  • 누락 메서드 17개 스텁 추가
  • Memory leak 수정: WS disconnect cleanup, beforeunload
  • 무한재귀 방지: 순환참조 감지 → #CIRC!
  • 성능: _renderDebounced(30ms), content-visibility
  • 브라우저 호환: closest/requestFullscreen/clipPath 폴리필
  • 입력 검증: URL 유효성, 파일명 경로순회 차단
  • localStorage 불가 시 메모리 폴백

반응형/멀티디바이스 (crowny-responsive.css — 477줄, 24KB)

  • Mobile (≤480px): 스택 레이아웃, 44px 터치, 바텀시트 사이드바
  • Tablet (481-1024px): 컴팩트 리본, 90% 에디터
  • Ultra-wide (1441px+): 중앙 정렬, 3단 파일매니저
  • 인쇄: UI 전부 숨김, 페이지브레이크
  • 다크모드: OLED 최적화, 대비 조정
  • 접근성: focus-visible, reduced-motion, high-contrast
  • Safe area: notch/island env() 지원
  • 터치: 탭 하이라이트 제거, 16px 입력 (auto-zoom 방지)

프리미엄 템플릿 81개 (27×3)

문서 템플릿 27개 (doc-templates.js):

  • 비즈니스 9개: 사업계획서, 회의록, 제안서, 보고서, 이력서, 계약서, 인보이스, 뉴스레터, 프레스릴리즈
  • 교육 9개: 논문, 강의계획서, 연구노트, 독서감상문, 에세이, 프로젝트보고서, 학회발표, 수업계획안, 포트폴리오
  • 개인 9개: 일기, 블로그, 레시피, 여행계획, 편지, 초대장, 예산계획, 건강기록, 목표계획서
시트 템플릿 27개 (sheet-templates.js — 595줄):
  • 재무 9개: 가계부, 매출관리, 손익계산서, 급여명세, 경비보고, 투자포트폴리오, 대출상환표, 세금계산기, 재무대시보드
  • 프로젝트 9개: 일정표, 작업추적기, KPI, 인벤토리, CRM, 출근부, 성과평가, 회의일정, 리스크관리
  • 교육 9개: 시간표, 성적관리, 식단계획, 운동기록, 독서목록, 여행예산, 결혼식예산, 습관추적, 연간캘린더
슬라이드 템플릿 27개 (slide-pres-templates.js — 639줄):
  • 비즈니스 9개: 회사소개, 사업제안, 분기보고, 마케팅전략, 제품출시, 투자유치, 영업프레젠테이션, 팀소개, 프로젝트킥오프
  • 교육 9개: 강의자료, 워크숍, 연구발표, 학생발표, 세미나, 교육훈련, 졸업논문, 과학실험, 독서토론
  • 크리에이티브 9개: 포트폴리오, 사진갤러리, 이벤트기획, 여행발표, 요리레시피, 자기소개, 동기부여, 타임라인, 인포그래픽

추가된 한선씨 파일 (5개, 총 34개)

  • 편집기/문서템플릿.한선 — 문서 27 프리미엄 템플릿
  • 시트/시트템플릿.한선 — 시트 27 프리미엄 템플릿
  • 슬라이드/프레젠테이션템플릿.한선 — 슬라이드 27 프리미엄 템플릿
  • UI/반응형스타일.한선 — 10개 반응형 섹션 CSS
  • 빌드/에러수정.한선 — 188건 에러 패치

관련 파일

  • 소스: /Users/ef/CrownyDoc/한선씨/ (34개 .한선 파일, 896KB)
  • 정적 출력: /Users/ef/CrownyDoc/한선씨/정적/ (31개 JS/CSS/HTML/ICO, 364KB)
  • 크라우니코드 학습: 34개 패턴 등록 (crownydoc_ 접두사)
  • 데이터: /Users/ef/CrownyDoc/.data/
  • 서버 포트: 4100 (HTTP), 4101 (WebSocket)