📖 프로젝트 소개
프로젝트 명: ModuWeb
부제: WAT: Web Accessibility Tools
ModuWeb은 웹 접근성 지원 도구입니다. 다양한 사용자의 접근성 요구사항을 충족시키기 위해 설계된 모듈형 플러그인 시스템입니다.
이 프로젝트는 웹 표준을 준수하며, 사용자 친화적인 인터페이스를 제공합니다.
웹 접근성 기능을 적용해 콘텐츠를 보다 쉽게 이용할 수 있게 돕습니다.
프로젝트 목표
- 웹 접근성 환경 개선
- 평등한 웹 경험 제공
- 웹 접근성 준수
- 모듈형 도구로 사용자 맞춤화
🔧 핵심 특징
- TTS/STT 음성 인터페이스
- 다양한 접근성 도구
- 반응형 UI 디자인
- 실시간 설정 저장
- 키보드 네비게이션
📊 프로젝트 현황
📋 버전 정보
- 현재 버전2.0.1
- 마지막 업데이트2025-08-19
- 라이선스Apache 2.0
- 개발 팀DAEGU CYBER UNIVERSITY
- 언어 지원6개국
🛠️ 개발환경 및 기술 스택
💻 개발 도구
에디터
IDE
Visual Studio Code
버전 관리
Git
Git 기반 소스코드 관리
빌드 도구
Webpack
모듈 번들링 및 최적화
테스팅
Jest
단위 테스트 및 통합 테스트
🌐 브라우저 지원
데스크톱 브라우저
- Chrome90+
- Firefox88+
- Safari14+
- Edge90+
모바일 브라우저
- iOS Safari14+
- Android Chrome90+
- Samsung Internet14+
🔧 핵심 기술
Web Speech API
Native
TTS/STT 음성 인터페이스
Dictionary API
API
외부 사전 API 활용
HTML5
Semantic
접근성 중심 마크업
JavaScript
ES6+
모던 JavaScript 문법 활용
CSS3
Modern
Flexbox, Grid, Custom Properties
🏗️ 시스템 아키텍처
📐 전체 아키텍처 개요
🏛️ WAT Core Framework
WAT
StateManager
EventHandler
🔧 Core Modules
TTSManager
STTManager
FocusTTS
⚡ Feature Modules
MediaController
DictionaryManager
ConfigManager
📡 Events System
wat:initialized
wat:tts:*
wat:stt:*
wat:media:*
wat:dict:*
wat:settings:*
🔄 초기화 플로우
1
WAT 인스턴스 생성
사용자 정의 옵션과 함께 WAT 클래스 인스턴스를 생성합니다.
2
StateManager 초기화
중앙집중식 상태 관리 시스템을 초기화하고 기본 설정을 로드합니다.
3
모듈 초기화
TTS, STT, MediaController 등 핵심 모듈들을 순차적으로 초기화합니다.
4
이벤트 시스템 활성화
모듈 간 통신을 위한 이벤트 기반 시스템을 활성화합니다.
5
초기화 완료
wat:initialized 이벤트를 발송하여 초기화 완료를 알립니다.
🔗 모듈 간 통신
User Interface
WAT Framework
StateManager
TTSManager
Event System
1
User Interface → WAT Framework
사용자 액션
사용자 액션
2
WAT Framework → StateManager
상태 업데이트
상태 업데이트
3
StateManager → StateManager
상태 변경 처리
상태 변경 처리
4
StateManager → TTSManager
모듈 호출
모듈 호출
5
TTSManager → Event System
이벤트 발송
이벤트 발송
6
Event System → User Interface
UI 업데이트
UI 업데이트
반응형 상태 기반 아키텍처
⚡ 주요 기능
🎨 접근성 도구
👁️ 시각적 지원
시인성 및 가독성 향상
- 폰트 크기 및 종류 조절
- 텍스트 정렬 및 간격 조정
- 화면 확대/축소
🎨 색상 인식 지원
색상 대비 및 인식 개선
- 웹페이지 색상 모드 변경
- 채도 및 명암 조절
집중력 지원
집중력 향상을 위한 시각적 도구
- 마우스 위치 강조
- 마우스 가이드 표시
- 미디어 콘텐츠 및 애니메이션 제어
🔊 청각적 지원
청각 정보 제공 및 제어
- 음성 피드백 안내
- 오디오 설명 추가
- 미디어 볼륨 조절
🎵 음성 인터페이스
🗣️ TTS (Text-to-Speech)
텍스트를 음성으로 변환하는 기능
- 자동 TTS - 페이지 요소 순차 읽기
- 포커스 TTS - 포커스된 요소 읽기
- 키보드 TTS - 단축키 기반 읽기
- 다국어 음성 지원
- 읽기 속도 조절
🎤 STT (Speech-to-Text)
음성을 텍스트로 변환하는 기능
- 음성 인식
- 명령어 인식
- 텍스트 필드 자동 입력
📚 보조 기능
📖 사전 기능
단어 의미 검색
- 더블클릭 검색
- 팝업 사전
⚙️ 설정 관리
개인화 설정
- 장애 프로필 기능
- 설정 내보내기/가져오기
- 초기화 기능
🔧 개발자 기능
API 및 확장성
// WAT 인스턴스 생성 및 초기화
const wat = new WAT({
containerSelector: '#content',
language: 'ko'
});
await wat.init();
// 이벤트 리스너 등록
document.addEventListener('wat:initialized', () => {
console.log('WAT 초기화 완료');
});
// TTS 기능 사용
wat.ttsManager.toggleAutoTTS();
wat.ttsManager.setSpeechRate(1.2);
// STT 기능 사용
wat.sttManager.toggleVoiceCommand();
📁 프로젝트 구조도
📂 디렉토리 구조
WAT-Project/ ├── 📁 docs/ # 문서화 │ ├── 📄 architecture-diagram.html │ ├── 📄 project-overview.html │ └── 📄 API-GUIDE.md │ ├── 📁 examples/ # 예제 파일 │ ├── 📄 index.html # 메인 예제 페이지 │ ├── 📄 basic.html # 기본 사용 예제 │ ├── 📄 custom-examples.html # 커스텀 설정 예제 │ ├── 📄 api-examples.html # API 사용 예제 │ └── 📁 assets/ # 예제용 리소스 │ ├── 📁 dist/ # 배포용 파일 │ ├── 📄 webAccTools.js # 메인 스크립트 │ └── � assets/ # 정적 리소스 │ ├── 📁 css/ # 스타일시트 │ ├── 📁 fonts/ # 웹폰트 │ ├── 📁 images/ # 이미지 │ ├── 📁 js/ # 자바스크립트 │ │ └── 📄 webAccTools.js # 메인 스크립트 │ └── 📁 locales/ # 언어팩 │ └── 📄 LICENSE # 라이선스
🏗️ 모듈 구조
🏛️ WAT Framework Core
WAT.js
→
StateManager
→
EventHandler
→
ConfigManager
🎵 TTS Modules
TTSManager
→
AutoTTS
→
FocusTTS
→
KeyboardTTS
🎤 STT Modules
STTManager
→
SpeechRecognition
→
CommandProcessor
🖥️ UI Components
UIManager
→
ControlPanel
→
SettingsPanel
→
StatusIndicator
🔧 Utility Modules
DictionaryManager
MediaController
AccessibilityTools
📊 클래스 다이어그램
WAT
+ options: Object
+ state: StateManager
+ ttsManager: TTSManager
+ sttManager: STTManager
+ init(): Promise
+ destroy(): void
StateManager
- _state: Object
- _observers: Map
+ setState(path, value): void
+ getState(path): any
+ subscribe(path, callback): Function
TTSManager
+ autoTTS: AutoTTS
+ focusTTS: FocusTTS
+ keyboardTTS: KeyboardTTS
+ toggleAutoTTS(): void
+ toggleFocusTTS(): void
+ setSpeechRate(rate): void
STTManager
+ recognition: SpeechRecognition
+ isListening: boolean
+ toggleVoiceCommand(): void
+ setLanguage(language): void
+ getStatus(): Object
WAT
→
StateManager
WAT
→
TTSManager
WAT
→
STTManager
🔄 데이터 플로우
1
사용자 입력
UI 상호작용, 키보드 이벤트, 음성 명령 등
2
이벤트 처리
EventHandler가 입력을 받아 적절한 모듈로 라우팅
3
상태 업데이트
StateManager가 애플리케이션 상태를 중앙집중식으로 관리
4
모듈 실행
해당 기능 모듈이 작업을 수행하고 결과를 반환
5
UI 업데이트
상태 변경에 따라 UI가 자동으로 업데이트됨