주짓수 도장에서 사용할 출결 관리 시스템을 만들고 있다.

출석 여부만 기록하는 데서 끝내지 않고, 회원·사범님·입구 태블릿이 각자 필요한 정보를 빠르게 확인할 수 있도록 구성하는 것이 목표다.

시작한 이유

기존 출석 관리는 기록을 남기는 일 자체보다, 누가 왔는지 확인하고 수정하며 회원이 자신의 출석을 확인하는 과정이 더 번거로웠다.

특히 도장에서는 입구에서 빠르게 출석해야 하고, 운동 전후에는 작은 버튼이나 복잡한 화면을 오래 볼 여유가 없다. 회원은 오늘 출석이 제대로 저장됐는지 바로 알고 싶고, 사범님은 오늘 출석 현황과 특정 회원의 기록을 빠르게 확인할 수 있어야 한다.

그래서 출석 흐름을 아래 세 가지 사용 환경으로 나눠서 설계했다.

사용 환경 필요한 정보 중심 기능
회원 휴대폰 오늘 출석 여부와 내 기록 내 출석 QR, 오늘 상태, 출석 시간
입구 태블릿 지금 바로 출석 가능한지 QR 스캔, PIN 대체 출석, 완료 피드백
관리자 화면 누가 왔고 무엇을 수정해야 하는지 오늘 요약, 검색·필터, 날짜별 조회

현재 구현한 기능

QR과 PIN으로 출석

회원은 로그인 후 자신의 QR을 열어 입구 태블릿에 보여줄 수 있다. 태블릿 카메라가 QR을 읽으면 출석을 저장하고, 이름·체크 표시·출석 시간·소리·진동으로 결과를 보여준다.

카메라를 사용할 수 없는 상황을 대비해 PIN 출석도 함께 제공한다. 카메라 권한이나 기기 문제로 출석이 막히지 않도록 다시 시도와 PIN 진입 경로를 분리했다.

회원 화면

회원 화면에서는 큰 QR만 보여주는 대신, 오늘 출석 상태와 출석 시간을 함께 확인할 수 있게 했다. QR을 열었다는 것과 출석이 저장됐다는 것은 다른 일이기 때문에, 저장 성공 여부가 먼저 읽히도록 구성했다.

관리자 출석 관리

관리자 화면에는 날짜별 출석 현황, 회원 검색, 전체 / 출석 / 출석 전 필터, 일별·월간 조회를 넣었다. 긴 명단을 계속 훑지 않아도 필요한 회원과 기록을 찾을 수 있도록 하는 데 초점을 맞췄다.

출석 처리 버튼도 터치하기 쉬운 크기로 조정하고, 저장 중·완료·실패·취소 상태를 구분해서 표시한다. 기본 용어는 아직 도착하지 않은 상태를 뜻하는 출석 전으로 통일했다.

태블릿과 모바일을 고려한 화면

입구 태블릿에서는 스캔 화면이 핵심이고, 휴대폰에서는 내 QR과 오늘 상태가 핵심이다. 같은 기능을 한 화면에 모두 넣기보다 각 환경에서 필요한 행동을 먼저 할 수 있도록 화면 흐름을 나눴다.

PWA로 설치해 사용할 수 있게 만들고, 스캔 화면에서도 홈과 관리자 메뉴로 이동할 수 있게 했다. 앱을 처음 열 때는 TEAM PASSION 로고 애니메이션을 한 번만 보여주도록 적용했다.

출석 처리에서 중요하게 본 점

출석 시스템은 기록을 저장하는 것보다 사용자가 결과를 확신하게 하는 일이 중요하다고 생각한다.

QR을 인식한 뒤 서버 저장이 끝나기 전에 성공으로 보이면 실제 기록과 화면이 달라질 수 있다. 그래서 출석 성공 표시는 저장이 확인된 뒤에만 보여주고, 실패했을 때는 다음 행동을 바로 선택할 수 있게 했다.

또한 출석 화면에서는 한 번의 처리에 오래 머물지 않게 했다. 입구에서 여러 명이 연달아 출석할 수 있으므로, 효과나 안내가 다음 사람의 출석을 막으면 안 된다.

다음 단계

다음에는 NFC 키링 출석을 추가하려고 한다. 회원은 키링을 태블릿 근처에 태그하고, 키링을 놓고 온 날에는 기존 QR이나 PIN으로 출석할 수 있게 하는 방식이다.

출석 기록을 조금 더 재미있게 볼 수 있도록 주간 목표와 뱃지도 검토 중이다. 매일 출석하지 못하면 기록이 초기화되는 방식보다, 회원이 선택한 주간 목표를 달성한 주차를 이어 가는 방식이 도장 수련 패턴에 더 맞을 것 같다.

예를 들어 주 2회·3회·4회 중 목표를 선택하고, 목표를 채우면 연속 달성 주차가 늘어난다. 누적 출석, 특정 시간대 수련, 복귀 같은 조건은 뱃지로 기록할 수 있다.

아직 진행 중인 프로젝트지만, 실제 도장에서 계속 사용하면서 불편한 부분을 수정해 나갈 예정이다.