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건 발견 → 전부 패치)
| 모듈 | 에러 수 | CRITICAL | HIGH | MEDIUM | LOW |
|---|---|---|---|---|---|
| 편집기 (5파일) | 36 | 0 | 8 | 18 | 10 |
| 시트 (5파일) | 43 | 3 | 12 | 18 | 10 |
| 슬라이드 (5파일) | 32 | 0 | 7 | 16 | 9 |
| 협업 (2파일) | 14 | 0 | 4 | 6 | 4 |
| UI (4파일) | 30 | 0 | 6 | 16 | 8 |
| 내보내기 (4파일) | 28 | 3 | 8 | 12 | 5 |
| 기타 | 5 | 0 | 2 | 2 | 1 |
| 합계 | 188 | 6 | 47 | 88 | 47 |
- 수식파서 코드 인젝션 → 화이트리스트 파서 패치
- 시트 내보내기 data 구조 불일치 → 키 기반 순회로 수정
- 가져오기 setCellValue→setCell 이름 불일치 → 별칭 추가
- HTML 가져오기 XSS → sanitize 함수 추가
- 시트도구모음 10개 메서드 미정의 → 전부 스텁 추가
- 순환참조 무한루프 → _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개: 일기, 블로그, 레시피, 여행계획, 편지, 초대장, 예산계획, 건강기록, 목표계획서
- 재무 9개: 가계부, 매출관리, 손익계산서, 급여명세, 경비보고, 투자포트폴리오, 대출상환표, 세금계산기, 재무대시보드
- 프로젝트 9개: 일정표, 작업추적기, KPI, 인벤토리, CRM, 출근부, 성과평가, 회의일정, 리스크관리
- 교육 9개: 시간표, 성적관리, 식단계획, 운동기록, 독서목록, 여행예산, 결혼식예산, 습관추적, 연간캘린더
- 비즈니스 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)