Sign119
소방서의 훈련·출동·교육 시 종이로 받던 서명 명부를 웹으로 대체한 전자서명 수집 플랫폼.
링크·QR로 공유하면 참가자가 모바일에서 자필 서명을 남기고, 무결성 해시가 박힌 PDF로 즉시 출력된다.
공인 전자서명(PKI)이 아닌 자필 서명 이미지 수집. 참석 확인·동의 명부 용도.
이 시스템이 해결하는 문제
BEFORE
종이 명부 수기 취합·보관
교육·훈련·출동마다 종이에 서명받고 관리자가 수기로 취합·보관했다. 잃어버리면 증빙이 없고, 보관에도 공간이 필요했다.
AFTER
링크·QR 접속 → 모바일 자필 서명 제출. 완전 비대면·무지화(無紙化). 제출 즉시 관리자 화면에 실시간 반영된다.
BEFORE
증빙 문서의 사후 위변조
출력된 명부가 나중에 수정됐는지 확인할 방법이 없었다. 법적 증빙이 필요한 상황에서 원본성 보장이 어려웠다.
AFTER
sha256 해시 16자를 PDF 푸터에 박아 사후 변조 여부를 검증 가능하게 한다. 감사로그는 DB 레벨에서 UPDATE/DELETE를 차단한 append-only 설계다.
BEFORE
대리 서명·중복 제출
누군가가 다른 사람 이름으로 서명하거나, 같은 사람이 여러 번 제출하는 것을 종이 명부 방식으로는 막기 어려웠다.
AFTER
기기 핑거프린트(SHA-256 해시만 저장) + localStorage UUID 기반 디바이스 키와 DB unique 제약으로 애플리케이션·DB 양쪽에서 차단한다.
단일 프로세스 풀스택
Next.js 15 App Router가 관리자 화면, 서명자 화면, REST API, PDF 렌더링을 하나의 프로세스에서 처리한다. 앞단 Nginx가 TLS 종단·정적 서빙·네트워크 레벨 rate limit을 맡는다.
SIGNATURE PIPELINE
PDF PIPELINE
기술적으로 내세울 것들
개발자 관점에서 설계가 까다로웠던 지점들.
지금, 현장에서 쓰이고 있습니다
경기소방재난본부 성남소방서가 훈련·출동·교육의 참가자 명부를 Sign119로 수집·증빙하고 있습니다.
문서 목록
서명부
다기관 서명부
경기소방재난본부 성남소방서 — 훈련·출동·교육의 참가자 명부를 Sign119로 수집·증빙하고 있습니다.
* 문서 제목·소속 편성·개인 성명·서명은 비식별 처리되었습니다.
* 본 서비스는 공인 전자서명이 아닌 자필 서명 수집(참석 확인·동의 명부) 용도입니다.