"카메라 너머 수강생들은 지금 제 수업을 잘 따라오고 있을까요?"
1. 비대면 교육의 확산과 도구의 한계
실시간 비대면 교육은 급격히 증가하고 있지만, 정작 교육 현장에서는 교육 특화 도구가 부족하여 일반 회의용 솔루션(Zoom, Google Meet 등)에 의존하고 있습니다. 이러한 범용 도구들은 화상회의 기능에는 충실하지만, 교육에 필수적인 상호작용 레이어는 부족한 실정입니다.
2. 소통의 단절: "듣고 있나요?"라는 질문의 반복
한국교육학술정보원(KERIS)의 조사에 따르면, 온라인 교육 환경에서 강의자와 학습자 간의 가장 큰 장벽은 상호작용의 부재입니다.
-
학습자의 수동화: 채팅이나 음성 답변에 대한 심리적 부담감으로 인해 참여율이 저하됩니다.
-
강의자의 피드백 부재: 청중의 반응을 파악할 시각적·비언어적 채널이 없어, 강의자는 벽을 보고 이야기하는 듯한 단방향 강의를 지속하게 됩니다.
Interactivity (상호작용)
-
단방향 강의를 벗어나 청중이 능동적으로 참여하는 수업 경험을 제공합니다.
-
제스처 인식, 실시간 투표, 인터랙티브 질문 시스템을 통해 모든 수강생은 관객이 아닌 주인공이 됩니다.
Visibility (가시성)
-
강의자는 수강생의 제스처와 참여도 데이터를 대시보드를 통해 실시간으로 확인할 수 있습니다.
-
보이지 않던 비언어적 반응을 시각화하여, 흐름에 맞는 즉각적인 대응과 공감 기반의 강의 진행을 돕습니다.
Insight (통찰)
-
강의 종료 후 LLM 기반 자동 요약과 참여 분석 리포트를 제공합니다.
-
수업 중 발생한 유의미한 데이터를 분석하여 강의의 질을 개선하고 더 나은 학습 커리큘럼을 설계할 수 있는 기반을 마련합니다.
강의 시작 전에 투표와 Q&A를 미리 구성하고 발표 자료를 업로드하여 체계적인 강의 준비가 가능합니다.
카메라를 통해 손가락 제스처를 인식하여 말 없이도 의견을 표현할 수 있으며, 투표 참여도 손가락으로 간편하게 가능합니다.
강의 중 즉석에서 투표를 생성하고 청중의 의견을 실시간으로 수집할 수 있으며, 제스처로도 참여할 수 있습니다.
강의 중 질문을 던지고 청중의 답변을 실시간으로 받아볼 수 있습니다. 익명 답변 수집 기능을 통해 답변에 대한 심리적 부담감을 덜어줍니다.
강의 중 텍스트 기반 채팅으로 자유롭게 소통하고 질문을 주고받을 수 있습니다.
제스처, 투표, Q&A 참여 등을 기반으로 실시간 참여도 점수와 순위를 확인할 수 있어 수강생의 능동적 참여를 유도합니다.
프로젝트를 클론한 후, 다음 명령어를 순서대로 실행하여 개발 환경을 설정하고 애플리케이션을 실행합니다.
# 의존성 설치
pnpm install
# 환경 변수 파일 생성
cp apps/backend/.env.local.example apps/backend/.env
cp apps/frontend/.env.local.example apps/frontend/.env
# 로컬 인프라 (Redis, Prometheus 등) 실행
docker-compose -f docker-compose.local.yml up -d
# 공통 패키지 빌드 (백엔드/프론트엔드에서 사용)
pnpm --filter @plum/shared-interfaces build
# ffmpeg 설치
## macOS
brew install ffmpeg
## Windows (PowerShell 관리자 권한)
winget install Gyan.FFmpeg
## Linux (Debian/Ubuntu)
sudo apt update && sudo apt install ffmpeg
# 백엔드 및 프론트엔드 애플리케이션 실행
pnpm dev- 서비스 접속하기:
http://localhost:5173 - Grafana 대시보드 접속:
http://localhost:3001(ID / PW: admin / admin)
- Runtime
- Node.js 18.0.0+
- Python 3.9+ (for AI Worker)
- pnpm 9.15.0+
- Media Processing
- FFmpeg:
segment뮤서 및concat필터 지원 버전 (시스템 PATH 등록 필수)
- FFmpeg:
- Infrastructure
- Docker & Docker Compose (for local infrastructure)
- Build Tools
- Windows: Visual Studio Build Tools (C++ Desktop development)
- macOS: Xcode Command Line Tools (xcode-select --install)
- Linux: build-essential, make, g++
├── apps/
│ ├── ai-worker/
│ │ └── main.py # STT 용 FastApi Application
│ ├── backend/
│ │ └── src/
│ │ ├── chat/ # 채팅 관리 모듈
│ │ ├── common/ # 공통 모듈 (Filter, Interceptor 등)
│ │ ├── interaction/ # 인터랙션 (제스처, 질문, 투표) 관리 모듈
│ │ ├── mediasoup/ # MediaSoup SFU 설정 및 로직
│ │ ├── redis/ # Redis 상태 관리 (Adapter)
│ │ ├── records/ # 강의실 음성 녹음 관리 및 STT 요청
│ │ ├── room/ # 강의실 관리
│ │ └── summarize/ # AI 요약 관리
│ ├── frontend/
│ │ └── src/
│ │ ├── app/ # 앱 설정 (라우팅, 스타일)
│ │ ├── assets/ # 이미지, 폰트 등 정적 자산
│ │ ├── feature/ # 기능 단위 모듈 (components, hooks, stores, services)
│ │ ├── pages/ # 라우트 페이지
│ │ ├── shared/ # 공용 모듈 (components, hooks, lib, api, socket, mediasoup, stores)
│ │ ├── types/ # TypeScript 타입 정의
│ │ ├── App.tsx # 루트 컴포넌트
│ │ └── main.tsx # 앱 진입점
│ └── load-test/ # 성능 테스트 (K6, Artillery)
├── packages/
│ └── shared-interfaces/ # 공용 타입 및 DTO 정의
├── .github/ # CI/CD Workflows
└── docker-compose.yml # 인프라 설정| Category | Technology |
|---|---|
| Frontend | |
| Backend | |
| Ai Worker | |
| Infra & DevOps | |
| Monitoring | |
| Testing | |
| Monorepo |
TIKI는 탁구의 리듬감 있는 대화인 '티키타카(Tiki-taka)'에서 영감을 얻었습니다..
즐거운 협업을 가장 큰 가치로 두고, 사용자와 개발자 모두가 만족하는 완성도 높은 개발을 지향합니다.
| Dogi | Rocky | Dani | Max |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 곽윤철 | 김동균 | 박다미 | 윤재현 |
저희의 고민과 노력이 담긴 프로젝트입니다. 질문이나 피드백은 언제나 환영합니다.
📖 프로젝트 위키 바로가기 | 🚀 라이브 데모 체험하기
Copyright © 2026 PLUM Team (TIKI). All rights reserved.




























