개발 인원 6명
개발 기간 2026.07.06 ~ 2026.08.10 (6주)
플랫폼 교수자 Web · 아동 Windows Electron App
프로젝트 자료 발표 자료 · 소개 영상

iRead는 읽기에 어려움을 겪는 난독증 아동을 위한 시선·발음 데이터 기반 맞춤형 읽기 훈련 서비스입니다.
기존의 읽기 학습은 정답과 점수 같은 결과를 중심으로 평가하기 때문에, 아동이 어디에서 머뭇거리고 어떤 단어나 문장을 어려워하는지와 같은 읽기 과정까지 파악하기 어렵습니다.
iRead는 아동이 글을 읽는 동안의 시선과 발음 데이터를 분석해 읽기 특성을 파악하고, 이를 바탕으로 개인의 수준과 특성에 맞는 읽기 훈련을 제공합니다. 또한 학습 과정에서 축적된 데이터를 통해 교수자는 아동이 어려움을 겪는 지점과 학습 변화를 확인하고 맞춤형 커리큘럼을 관리할 수 있습니다.
아동은 이야기와 놀이 중심의 콘텐츠를 통해 부담 없이 읽기 훈련을 이어갈 수 있으며, 교수자와 보호자는 시선·발음·학습 데이터를 기반으로 제공되는 리포트를 통해 아동의 읽기 과정과 성장 변화를 지속적으로 확인할 수 있습니다.
정답과 점수뿐만 아니라 시선과 발음을 함께 분석해 아동이 어디에서 어려움을 겪는지 구체적으로 확인할 수 있습니다.
아동의 읽기 특성과 학습 진행 상황을 바탕으로 개인별 맞춤형 훈련을 제공합니다.
훈련 결과와 검사 데이터, 학습 변화 추이를 한눈에 보여주어 교수자가 아동의 성장 과정과 필요한 학습을 판단할 수 있도록 돕습니다.
이야기와 놀이, 상호작용 중심의 콘텐츠를 통해 아동이 읽기 훈련을 부담이 아닌 즐거운 경험으로 지속할 수 있도록 합니다.
|
윤정
PM · 백엔드 dbswjd0191a
|
김지훈 교수자 웹 백엔드 2hnK
|
정의찬
아동 앱 백엔드 · 인프라 uichan01
|
|
담당 기능 프로젝트 관리 · 커리큘럼 및 훈련 백엔드 주요 구현 내용
|
담당 기능 교수자 웹 API · 학습 및 이야기 관리 주요 구현 내용
|
담당 기능 아동 앱 API · 훈련 및 이야기 실행 · 배포 인프라 주요 구현 내용
|
|
김민재
프론트엔드 minjaekim1122
|
이승환 아이트래커 wanderingperson
|
송승우
AI themancalledsong
|
|
담당 기능 교수자 웹 프론트엔드 주요 구현 내용
|
담당 기능 Tobii 아이트래커 연동 · 시선 데이터 처리 및 분석 주요 구현 내용
|
담당 기능 개인화 학습 · 생성형 AI · 발음 평가 주요 구현 내용
|
| 기능 | 설명 |
|---|---|
| 개인화 읽기 훈련 | 아동 앱에서 배정된 커리큘럼을 열고 글자 따라 읽기, 첫소리 찾기, 소리 합치기, 문장 만들기 등의 훈련을 진행합니다. |
| 시선 기반 읽기 분석 | Tobii Eye Tracker로 훈련 중 시선을 수집하고 화면의 단어·문장 영역과 연결해 머문 시간, 건너뜀, 되읽기 정보를 기록합니다. |
| 단어별 발음 평가 | 마이크로 수집한 읽기 음성을 Azure Speech로 분석해 단어별 정확도와 오류 유형을 표시합니다. |
| AI 이야기 학습 | 아동의 학습 진행과 선택을 반영해 이야기와 장면 이미지를 생성하고, 이야기 화면에서 읽기와 선택 활동을 진행합니다. |
| 교수자 학습 관리 | 교수자 웹에서 커리큘럼을 생성·편집하고 아동별 학습 현황, 학습 이력, 분석 보고서와 이야기 기록을 조회합니다. |
|
그림에 맞는 문장 찾기 그림의 내용을 확인하고 세 개의 보기에서 알맞은 문장을 선택합니다. 훈련 중 Tobii Eye Tracker가 수집한 시선 좌표를 화면의 그림과 문장 영역에 연결해 머문 시간, 건너뜀과 되읽기 정보를 기록합니다. |
|
낱말 읽기와 발음 평가 화면에 제시된 낱말을 마이크로 읽고 단어별 발음 평가를 진행합니다. Azure Speech의 한국어 발음 평가가 읽기 음성을 분석하고 단어별 정확도와 오류 유형을 제공합니다. |
|
이야기 선택 이야기를 읽은 뒤 질문에 답하며 다음 장면의 흐름을 선택합니다. 아동의 학습 진행을 반영해 생성된 이야기와 장면 이미지를 읽고 화면의 선택지에서 다음 내용을 고릅니다. |
|
새 이야기 생성 학습을 마친 뒤 새로운 이야기 생성을 요청합니다. 아동의 학습 진행을 반영한 이야기 본문과 장면 이미지를 생성합니다. |
|
학습 분석 보고서 아동별 학습 참여, 발음 정확도, 읽기 속도와 기간별 변화 추이를 확인합니다. 보고서 화면에는 학습 참여 일수, 총 학습 시간과 총 학습 횟수가 함께 표시됩니다. |
| 분류 | 기술 |
|---|---|
| Frontend Web |
|
| Frontend App |
|
| Backend |
|
| AI Server |
|
| Data |
|
| Infrastructure |
|
| Eye Tracking |
|
Tobii Eye Tracker는 브라우저에서 직접 제어할 수 없으므로, 아동용 Windows 앱과 함께 실행되는 로컬 브리지가 장치의 시선 좌표를 수집합니다. 수집된 좌표는 Electron IPC를 통해 앱으로 전달되고, 화면의 단어·문장 위치와 대조해 단어별 머문 시간, 고정 횟수, 건너뜀과 되읽기 지표로 변환됩니다. 계산 결과는 Backend에 저장되어 교수자 리포트와 이후 훈련 구성에 사용됩니다.
아동이 읽은 음성은 아동 앱에서 Backend를 거쳐 AI server로 전달됩니다. AI server는 Azure Speech의 한국어 단어 단위 발음 평가를 이용해 단어별 정확도, 오류 유형과 발음 구간을 분석합니다. Backend는 분석된 단어가 기준 문장과 같은 순서로 정렬되는지 확인하고, 일치하는 결과만 학습 기록에 저장합니다.
Backend는 완료된 학습에서 정답 여부, 발음 정확도, 평균 읽기 시간과 시선 지표를 모아 아동의 읽기 특성별 프로필을 구성합니다. AI server는 어려움이 크게 나타난 특성과 데이터의 신뢰도를 바탕으로 핵심 훈련 3개, 보완 훈련 1개, 확장 훈련 1개를 조합해 다음 커리큘럼을 추천합니다. 생성된 문항은 문제 형식, 정답과 필수 입력값을 확인한 뒤 조건을 충족한 경우에만 커리큘럼에 반영됩니다.
AI server는 아동의 학습 진행 상황, 읽기 특성과 이전 선택을 반영해 다음 이야기와 장면 이미지를 생성합니다. 이야기 텍스트와 이미지는 OpenAI, Gemini, GMS 중 서로 다른 공급자를 선택할 수 있으며, 공급자가 달라도 Backend에는 같은 형식으로 전달됩니다. 생성된 내용은 페이지 구성, 이야기 분기, 어휘와 데이터 형식을 확인하고, 오류가 있으면 정해진 횟수만큼 다시 생성한 뒤 최종 조건을 충족한 결과만 저장합니다.
아동 앱과 교수자 Web은 서로 직접 연결하지 않고 Backend를 통해 학습 상태를 공유합니다. Backend는 서버 전송 이벤트(SSE)로 훈련 시작·완료와 학습 정보 변경 사실을 알리고, 각 화면은 관련 API를 다시 조회해 최신 내용을 표시합니다. 연결이 끊어졌을 때는 하트비트와 자동 재연결을 이용해 실시간 동기화를 복구합니다.
🚀 개발자 가이드 (빌드·실행)
| 도구 | 용도 |
|---|---|
| Git | 루트 저장소와 submodule 내려받기 |
| Docker Desktop | 통합 데모 환경 실행 |
| Node.js·pnpm | 교수자 Web과 아동 App 개발·검증 |
| Java 21 | Spring Boot Backend 실행·검증 |
| Python 3.12·uv | AI server 실행·검증 |
| Windows·Tobii SDK | 실제 Eye Tracker를 사용하는 경우에만 필요 |
git clone --recurse-submodules https://github.com/iRead-B105/iRead.git
cd iRead이미 루트 저장소만 clone했다면 submodule을 초기화합니다.
git submodule update --init --recursiveDocker Compose로 전체 서비스를 실행합니다.
cp .env.example .env
docker compose up -dWindows에서 각 서비스를 로컬 프로세스로 실행하려면 .env.example을 .env로 복사한 뒤 다음 스크립트를 사용할 수 있습니다.
.\start-all-local.bat| 서비스 | 주소 |
|---|---|
| 교수자 Web | http://localhost:5173 |
| 아동 App | http://localhost:5174 |
| Backend API | http://localhost:8080 |
| AI server | http://localhost:8081 |
| Mailpit | http://localhost:8025 |
아래 명령은 저장소 루트에서 각 서비스 디렉터리로 이동해 실행합니다.
# Frontend Web
cd services/frontend-web
pnpm install
pnpm build
pnpm test
cd ../..
# Frontend App
cd services/frontend-app
pnpm install
pnpm build
pnpm test
cd ../..# Backend
cd services\backend
.\gradlew.bat test
cd ..\..
# AI server
cd services\ai
uv sync --extra dev
uv run pytest
cd ..\..Tobii Eye Tracker를 사용할 때는 Windows에서 시선 추적 bridge를 먼저 실행합니다.
cd services\eyetracking
.\run_server.bat
cd ..\..📁 디렉터리 구조
iRead/
├─ services/
│ ├─ backend/ # Spring Boot API와 데이터 처리
│ ├─ frontend-web/ # 교수자용 Vue Web
│ ├─ frontend-app/ # 아동용 Vue·Electron App
│ ├─ ai/ # FastAPI 기반 AI 기능
│ └─ eyetracking/ # Tobii 시선 수집·보정 bridge
├─ contracts/
│ ├─ openapi/ # App·Admin·Auth·AI API 계약
│ └─ database/ # MySQL 스키마와 ERD
├─ docs/ # 제품·아키텍처·결정·계획 문서
│ └─ assets/readme/
│ ├─ api/ # Swagger 명세 이미지
│ ├─ architecture/ # 시스템·데이터 흐름도
│ └─ features/
│ ├─ child-app/ # 아동 앱 공통 화면 GIF
│ ├─ training/ # 아동 읽기 훈련 GIF
│ ├─ story/ # AI 이야기 학습 GIF
│ └─ teacher/ # 교수자 관리 화면 GIF
├─ design-resources/ # UI와 콘텐츠 제작 원본
├─ tools/ # 계약·문서·통합 데모 검증 도구
├─ compose.yml # 로컬 통합 실행 구성
├─ .env.example # 환경 변수 예시
└─ README.md
services/*는 각각 독립된 Git 저장소이며 루트 저장소에는 submodule로 연결됩니다.
🌿 브랜치 전략 & 커밋 컨벤션
| 브랜치 | 용도 |
|---|---|
main |
배포 가능한 릴리스 이력 |
develop |
다음 릴리스의 통합 기준 |
feature/* |
기능 개발과 검토가 필요한 변경 |
release/* |
정식 릴리스 안정화 |
hotfix/* |
운영 버전 긴급 수정 |
<type>(<scope>): <한국어 제목>
|
|























