ClassManager
운영 중저장소·이력서 표기명 academy-manager — 같은 프로젝트입니다.
학원 올인원 관리 시스템. 학생·수업 관리에 NFC 카드와 QR 두 경로의 출결을 붙였고, 웹·안드로이드 키오스크·윈도우 설치본까지 4개 런타임으로 구성했다.
- 기간
- 2026.03 – 2026.04
- 역할
- 요구사항 수집 · 전체 개발 · 배포 · 설치본 빌드
풀려고 한 문제
학원 출결을 종이와 엑셀로 관리하면 원장이 매일 옮겨 적는다. 그런데 학원 현장에는 태블릿만 있는 곳도, 데스크톱만 있는 곳도 있어서 한 가지 방식으로는 안 됐다.
규모
- 커밋 60개
- 런타임 4개 — API · 관리자 웹 · 안드로이드 키오스크 · 윈도우 NFC 중계 프로그램
- 출결 경로 2개 — NFC 카드 태그, QR 스캔
- 설치 파일 2종 빌드 완료 (APK · 윈도우 Setup)
기술 결정
상황
웹 브라우저는 USB NFC 리더기에 접근할 수 없다
선택
PC/SC(WinSCard.dll)를 ctypes로 직접 호출하는 중계 프로그램을 만들어 리더기와 웹을 연결
이유
브라우저 제약을 우회하려고 별도 라이브러리를 깔게 하는 대신, 윈도우가 이미 갖고 있는 PC/SC API를 직접 불렀습니다. 의존성이 없으니 PyInstaller로 단일 exe가 되고, 원장님은 설치 파일 하나만 실행하면 됩니다.
상황
태블릿만 있는 학원과 데스크톱만 있는 학원
선택
안드로이드 키오스크는 폰 내장 NFC로, 데스크톱은 USB 리더기로 — 같은 API를 두 경로가 함께 호출
이유
출결 로직을 서버에 두고 단말은 UID만 올리게 나눴습니다. 그래서 단말이 늘어도 서버는 안 바뀝니다. 키오스크 앱은 WebView + JS 브리지로 만들어, 화면은 웹 한 벌만 유지합니다.
상황
학생 이름이 정확히 입력되지 않는 현장 문제
선택
rapidfuzz · kiwipiepy · scikit-learn으로 오타·띄어쓰기를 감당하는 검색
이유
원장님은 '김민준'을 '김민중'으로도 칩니다. 정확 일치만 되면 현장에서 안 쓰입니다. 한국어 형태소까지 보는 게 과해 보일 수 있지만, 이름 검색이 안 되면 시스템 전체를 안 쓰게 됩니다.
직접 실행해 보기
설치 없이 보려면 시현 페이지에서 작동 화면을 확인할 수 있습니다.
시현 가능한 것
USB 리더기에 카드를 태그해 UID가 읽히고 출결이 기록되는 과정까지