클래시파이
담임교사가 학생 심리검사 결과를 바탕으로 분반·자리배치·상담을 하는 학급관리 서비스입니다. 교사·학생이 쓰는 서비스 웹과 운영자용 관리자 웹을 만들었습니다.
- 참여 기간
- 2025.12 – 2026.06
- 소속
- 한다글다글
- 담당
- 교사·학생 웹 · 관리자 웹
- 스택
- TypeScriptNext.jsReactTailwind CSSTanStack Query
어떤 서비스인가
교사가 학급을 만들고 학생에게 심리검사를 보내면, 그 결과로 분반과 자리배치를 짜고 상담 기록을 남기는 서비스입니다. 교사·학생·관리자가 각각 다른 주소로 들어옵니다.
성격 유형, 학급 내 관계, 강점 같은 여러 검사가 있고 결과는 그래프와 인쇄물로 나갑니다.
주요 기능
- 학급 준비 — 학급 생성, 엑셀로 학생 명단 올리기, 초대코드·QR 공유
- 검사 4종 — 성격 유형, 학급 내 관계, 강점, 생활점검을 회차로 관리
- 결과 — 학급 점수표와 학생별 결과지, 위험군 표시, 차트로 보는 분석
- 관계 시각화 — 학급 안의 관계를 네트워크 그림으로 펼쳐 보기
- 분반·자리배치 — 성향을 근거로 자동 편성, 교사가 손보고 인쇄까지
- 상담·일지·학급우체통, 생활점검 회차별 비교
- 결제 — 유료 플랜 구독과 결제 내역, 쿠폰
- 커뮤니티 — 교사 게시판과 글쓰기 에디터, 공지·뉴스
맡은 범위
- 교사·학생 서비스 웹 — 학급 준비부터 검사 결과·분반·자리배치까지
- 관리자 웹 — 회원·결제·검사·콘텐츠 운영
- 디자인 시스템 — 색·타이포·버튼·입력 필드 등 공통 컴포넌트를 처음 세움
- 인증과 결제, 결과지 인쇄·내려받기
화면을 그대로 종이에 옮기는 일
교사가 결과지를 인쇄해 상담에 쓰기 때문에 결과 화면을 그대로 문서로 뽑아야 했는데, 이 기능이 가장 오래 애를 먹였습니다. 화면을 이미지로 떠서 문서에 붙이는 방식이라 차트가 빈 칸으로 찍히거나, 여러 장을 한 번에 만들면 메모리가 터졌습니다.
차트 애니메이션을 끄고 그려질 때까지 기다린 뒤 캡처하도록 순서를 바꿨고, 그래도 비어 있으면 다시 그려 재시도하고 끝내 실패하면 내보내기를 막아 빈 문서가 나가지 않게 했습니다.
교사와 학생이 같은 규칙을 쓸 수 없던 이유
교사는 로그인해서 들어오고 학생은 초대코드로 들어오는데, 로그인 만료 처리를 한 갈래로 두다 보니 학생이 검사 도중 교사용 로그인 창을 만나는 일이 생겼습니다.
두 사용자의 만료 처리를 갈라내고, 개발 환경과 운영 환경이 같은 브라우저에서 서로의 로그인을 덮어쓰지 않도록 쿠키 이름도 분리했습니다.
고쳤는데 화면은 그대로인 문제
검사를 추가하거나 분반을 다시 짜도 목록이 이전 상태로 남아 있는 일이 잦았습니다. TanStack Query 가 들고 있는 캐시를 언제 버려야 하는지가 화면마다 흩어져 있어서, 새로 만든 화면마다 같은 누락이 반복됐습니다.
무엇을 바꾸면 무엇을 다시 받아와야 하는지 정리했고, 계정을 바꿔 들어왔을 때 이전 사용자의 데이터가 남지 않도록 캐시 기준도 손봤습니다.