← Dev Projects
NFC 출결 시현
ClassManager의 출결은 카드를 대면 끝나지만, 그 뒤에는 브라우저가 USB 리더기에 접근할 수 없다는 제약을 우회하기 위한 경로가 하나 더 있습니다. 이 페이지는 그 전체 경로를 공개하고, 지금 이 자리에서 작동시켜 봅니다.
지금 작동시켜 보기
설치 없이 지금 바로 — Web NFC
이 페이지가 직접 카드를 읽습니다. 앱을 깔지 않아도 됩니다.
브라우저 지원 확인 중…
작동 구조
단말은 카드의 UID만 서버로 올립니다. 출결 판정과 학생 조회는 전부 서버에 있어서, 단말이 늘어나도 서버는 바뀌지 않습니다. 학원 환경이 태블릿뿐인 곳과 데스크톱뿐인 곳으로 갈리기 때문에 경로를 두 개 만들었습니다.
경로 A · 데스크톱 + USB 리더기
- NFC 카드
- ACR1252U 리더기
- WinSCard.dll (PC/SC)
- relay.py
- FastAPI
브라우저는 USB 리더기에 접근할 수 없어서, 윈도우가 이미 갖고 있는 PC/SC API를 ctypes로 직접 호출하는 중계 프로그램을 만들었습니다. 외부 라이브러리가 없어 단일 exe로 빌드됩니다.
경로 B · 안드로이드 키오스크
- NFC 카드
- 기기 내장 NFC
- NfcAdapter → JS 브리지
- WebView
- FastAPI
화면은 웹 한 벌만 유지하려고 키오스크 앱을 WebView로 만들고, NFC만 네이티브에서 읽어 AndroidNfc 브리지로 웹에 넘깁니다. UI를 두 번 만들지 않아도 됩니다.
직접 실행해 보기
카드에는 무엇이 들어 있나
카드에서 읽는 값은 제조 시 부여된 고유 식별자(UID)뿐입니다. 이름·연락처 같은 정보는 카드에 쓰지 않고 서버에만 두고, UID를 학생과 연결하는 등록 과정을 따로 뒀습니다. 카드를 잃어버리면 그 UID의 연결만 끊으면 되고, 카드 자체에서는 누구의 것인지 알 수 없습니다.