도장에 들어서는 순간을 기록하는 법

주짓수 도장에서 사용할 출결 관리 시스템을 만들고 있다. 하지만 이 글은 무엇을 어떻게 만들었는지보다, 매일 도장에 들어서는 관원의 입장에서 어떤 출석 경험이 편한지를 고민한 기록에 가깝다.
출석 여부만 기록하는 데서 끝내지 않고, 회원·사범님·입구 태블릿이 각자 필요한 정보를 빠르게 확인할 수 있도록 구성하는 것이 목표다.
시작한 이유
기존 출석 관리는 기록을 남기는 일 자체보다, 누가 왔는지 확인하고 수정하며 회원이 자신의 출석을 확인하는 과정이 더 번거로웠다.
특히 도장에서는 입구에서 빠르게 출석해야 하고, 운동 전후에는 작은 버튼이나 복잡한 화면을 오래 볼 여유가 없다. 회원은 오늘 출석이 제대로 저장됐는지 바로 알고 싶고, 사범님은 오늘 출석 현황과 특정 회원의 기록을 빠르게 확인할 수 있어야 한다.
그래서 출석 흐름을 아래 세 가지 사용 환경으로 나눠서 설계했다.
| 사용 환경 | 필요한 정보 | 중심 기능 |
|---|---|---|
| 회원 휴대폰 | 오늘 출석 여부와 내 기록 | 내 출석 QR, 오늘 상태, 출석 시간 |
| 입구 태블릿 | 지금 바로 출석 가능한지 | QR 스캔, PIN 대체 출석, 완료 피드백 |
| 관리자 화면 | 누가 왔고 무엇을 수정해야 하는지 | 오늘 요약, 검색·필터, 날짜별 조회 |
관원으로서 먼저 떠올린 장면
도장에 오면 먼저 하고 싶은 일은 출석부를 찾는 것이 아니다. 도복을 갈아입고, 매트를 밟으며, 함께 수련할 사람들과 인사하는 것이 먼저다. 출석은 그 사이에서 가볍게 끝나야 한다.
수련 직전에는 손에 휴대폰과 물통, 도복이 함께 들려 있기도 하고, 뒤에 다른 관원이 기다릴 수도 있다. QR이 바로 인식되지 않거나 내 이름이 등록됐는지 알 수 없으면, 그 짧은 멈춤도 의외로 길게 느껴진다. 그래서 스캔 성공을 화면, 소리, 진동으로 확인하고 바로 다음 사람에게 순서를 넘길 수 있는 것을 중요하게 봤다.
또 항상 휴대폰을 꺼낼 수 있는 것도 아니다. 배터리가 없거나, QR을 미리 열지 못했거나, 단순히 손이 바쁜 날도 있다. PIN을 남겨 둔 이유는 QR을 대체하기 위해서가 아니라, 어떤 날에도 출석이 수련을 시작하는 데 방해가 되지 않게 하기 위해서였다.
출석은 평가표가 아니라 수련의 흔적
관원으로서 출석 기록이 경쟁표처럼 느껴지는 것은 원하지 않았다. 일이나 부상, 가족 일정으로 도장에 오지 못하는 날은 누구에게나 있다. 숫자가 높은 사람이 더 성실하거나 더 잘한다는 뜻으로 읽혀서는 안 된다.
내가 바란 것은 “이번 달에 몇 번 갔지?”를 확인하고, 오랜만에 돌아왔을 때 다시 매트를 밟은 날을 기억하며, 내 생활 속에서 수련이 어떻게 이어지고 있는지 보는 것이다. 그래서 주간 목표와 뱃지도 압박보다는 작은 동기가 되어야 한다고 생각했다.
예를 들어 주 3회를 목표로 정했다면, 그 목표는 다른 사람에게 보여주기 위한 순위가 아니라 이번 주의 나와 한 약속에 가깝다. 매일 출석하지 못했다고 모든 기록이 끊기는 방식보다, 각자의 주기로 다시 이어 갈 수 있는 방식이 주짓수의 긴 수련과 더 잘 어울린다.
현재 구현한 기능
QR과 PIN으로 출석
회원은 로그인 후 자신의 QR을 열어 입구 태블릿에 보여줄 수 있다. 태블릿 카메라가 QR을 읽으면 출석을 저장하고, 이름·체크 표시·출석 시간·소리·진동으로 결과를 보여준다.
카메라를 사용할 수 없는 상황을 대비해 PIN 출석도 함께 제공한다. 카메라 권한이나 기기 문제로 출석이 막히지 않도록 다시 시도와 PIN 진입 경로를 분리했다.
회원 화면
회원 화면에서는 큰 QR만 보여주는 대신, 오늘 출석 상태와 출석 시간을 함께 확인할 수 있게 했다. QR을 열었다는 것과 출석이 저장됐다는 것은 다른 일이기 때문에, 저장 성공 여부가 먼저 읽히도록 구성했다.
관리자 출석 관리
관리자 화면에는 날짜별 출석 현황, 회원 검색, 전체 / 출석 / 출석 전 필터, 일별·월간 조회를 넣었다. 긴 명단을 계속 훑지 않아도 필요한 회원과 기록을 찾을 수 있도록 하는 데 초점을 맞췄다.
출석 처리 버튼도 터치하기 쉬운 크기로 조정하고, 저장 중·완료·실패·취소 상태를 구분해서 표시한다. 기본 용어는 아직 도착하지 않은 상태를 뜻하는 출석 전으로 통일했다.
태블릿과 모바일을 고려한 화면
입구 태블릿에서는 스캔 화면이 핵심이고, 휴대폰에서는 내 QR과 오늘 상태가 핵심이다. 같은 기능을 한 화면에 모두 넣기보다 각 환경에서 필요한 행동을 먼저 할 수 있도록 화면 흐름을 나눴다.
PWA로 설치해 사용할 수 있게 만들고, 스캔 화면에서도 홈과 관리자 메뉴로 이동할 수 있게 했다. 앱을 처음 열 때는 TEAM PASSION 로고 애니메이션을 한 번만 보여주도록 적용했다.
출석 처리에서 중요하게 본 점
출석 시스템은 기록을 저장하는 것보다 사용자가 결과를 확신하게 하는 일이 중요하다고 생각한다.
QR을 인식한 뒤 서버 저장이 끝나기 전에 성공으로 보이면 실제 기록과 화면이 달라질 수 있다. 그래서 출석 성공 표시는 저장이 확인된 뒤에만 보여주고, 실패했을 때는 다음 행동을 바로 선택할 수 있게 했다.
또한 출석 화면에서는 한 번의 처리에 오래 머물지 않게 했다. 입구에서 여러 명이 연달아 출석할 수 있으므로, 효과나 안내가 다음 사람의 출석을 막으면 안 된다.
다음 단계
다음에는 NFC 키링 출석을 추가하려고 한다. 회원은 키링을 태블릿 근처에 태그하고, 키링을 놓고 온 날에는 기존 QR이나 PIN으로 출석할 수 있게 하는 방식이다.
출석 기록을 조금 더 재미있게 볼 수 있도록 주간 목표와 뱃지도 검토 중이다. 매일 출석하지 못하면 기록이 초기화되는 방식보다, 회원이 선택한 주간 목표를 달성한 주차를 이어 가는 방식이 도장 수련 패턴에 더 맞을 것 같다.
예를 들어 주 2회·3회·4회 중 목표를 선택하고, 목표를 채우면 연속 달성 주차가 늘어난다. 누적 출석, 특정 시간대 수련, 복귀 같은 조건은 뱃지로 기록할 수 있다.
아직 진행 중인 프로젝트지만, 실제 도장에서 계속 사용하면서 불편한 부분을 수정해 나갈 예정이다.