교회 출석·심방 관리 앱 — 중등부에서 청년부까지
중등부 교사용으로 만든 출석·심방 PWA가 청년부(출석 300여 명, 셀리더 50명)로 확산된 사례. 수기 출석부 → 사진 전달 → 엑셀 집계 흐름을 "앱에서 체크 = 바로 집계"로 바꿨다.
교사들이 매주 출석을 체크하고, 심방 기록을 남기고, 새가족을 등록하는 일을 종이 대장 없이 폰에서 바로 처리하도록 만든 웹앱이다. 중등부에서 시작했고, 지금은 다른 부서가 가져가서 쓰고 있다.
한눈에
| 시작 | 2026년 8월, 중등부 |
| 운영 중 | 중등부, 청년부 |
| 도입 준비 | 고등부, 초등부 (앱 전달 완료) |
| 청년부 규모 | 재적 약 600명 · 주일 출석 310~320명 · 셀리더 약 50명 |
왜 만들었나
출석부와 심방 기록이 여러 장의 종이와 개인 메모장에 흩어져 있었다. 교사가 바뀌거나 학기가 넘어가면 이전 기록을 찾기 어려웠고, 담당 학생이 몇 주째 결석 중인지 한눈에 볼 방법이 없었다.
무엇을 만들었나
- 반·셀 단위 출석 체크, 입구 QR 체크인, 이름 + PIN 로그인
- 학생별 심방 기록 누적, 연속 결석 학생을 알려 주는 “확인이 필요해요” 카드
- 새가족 셀프 등록과 담당 교사 지정
- 주간 출석 합계·비교 통계, 관리자용 CSV 내보내기
- 달란트(포상) 적립과 QR 결제
- 권한 3단계(교사 / 관리자 / 교역자): 교사는 자기 반 학생만 볼 수 있다
데이터는 이렇게 쌓이고 관리된다
교사가 폰에서 누르는 버튼 하나가 곧 시트 한 줄이다. 앱은 입력을 받아 Google Sheets에 시트별로 나눠 저장하고, 집계와 점검 화면은 그 원본에서 바로 계산한다.
| 시트 | 한 줄 = | 주요 칸 |
|---|---|---|
| 반목록 | 반 하나 | 학년, 반, 담당교사, 새가족반 여부 |
| 학생명단 | 학생 한 명 | 반, 학교, 영접기도·구원의 확신, 장기결석, 새가족 구분 |
| 출석기록 | 학생 × 주일 | 날짜, 출석/지각/결석, 메모 |
| 심방기록 | 심방 한 번 | 작성교사, 방식·시간, 네 가지 질문 답, 종합소견, 교역자 전달, 교역자 확인 |
| 양육기록 | 양육 한 회차 | 주차, 작성교사, 메모 |
| 변경이력 | 수정 한 건 | 누가 언제 무엇을 바꿨는지 |
- 입력: 교사가 반 화면에서 출석을 탭하면 그 자리에서 출석기록 시트에 저장된다. 심방은 학생 화면에서 정해진 질문 양식대로 남긴다.
- 점검: 관리자는 “출석 입력 점검”에서 어느 반이 입력을 끝냈는지, 반별 출석·지각·결석 수와 결석자를 한 화면에서 본다.
- 후속 조치: 연속 결석이 쌓인 학생은 “확인이 필요해요” 목록에 자동으로 올라오고, 심방 기록의 “교역자 전달”은 교역자 화면에 미확인 건으로 모인다. 교역자가 확인하면 표시가 바뀐다.
- 보관: 원본이 시트에 있으니 담당 교사가 바뀌어도 기록이 그대로 남고, 필요하면 CSV로 내보낸다.




실제 학생 정보 대신 가짜 데이터를 넣어 찍은 화면. 이름은 모두 ○○로 표시했다.
청년부로 확산된 과정
청년부의 기존 출석 흐름은 이랬다.
- 셀리더 약 50명이 주일마다 종이 출석부에 손으로 체크
- 각자 출석부를 사진으로 찍어 담당자 한 명에게 전송
- 담당자가 사진 50장을 보며 300여 명의 출석을 엑셀에 다시 입력
같은 정보를 세 번 옮겨 적는 구조라 시간이 오래 걸렸고, 옮기는 과정에서 누락이 생겼다. 그날 출석 현황은 다음 날이 되어서야 알 수 있었다.
중등부 앱을 본 청년부가 필요성을 느껴 앱을 받아 갔고, 흐름이 이렇게 바뀌었다.
- 셀리더가 앱에서 자기 셀 출석을 체크
- 체크하는 순간 데이터베이스(시트)에 저장
- 관리자는 예배가 끝나면 그날 전체 출석을 바로 확인
사진 전달과 엑셀 재입력 단계가 통째로 사라졌다.


청년부 실제 화면. 이름은 모두 가렸다.
- 실명·연락처는 코드에 넣지 않고 교회 시트에만 둔다.
- 교사는 자기 반 학생만 본다. 전체는 관리자·교역자만.
- 집계용 API는 이름 없이 숫자만 내보낸다.
- 누가 언제 무엇을 바꿨는지 변경이력에 남긴다.
기술적으로 신경 쓴 부분
- 운영비 0원: 프론트는 Cloudflare Pages에 정적으로 배포하고, 데이터는 Google Sheets를 Apps Script로 API처럼 연결했다. 별도 서버가 없다.
- 앱스토어 없이 설치: PWA라 심사 없이 홈 화면에 설치되고, 오프라인에서도 최근 데이터는 캐시로 볼 수 있다.
- 부서별 독립 배포: 부서마다 시트·백엔드·주소를 따로 둔다. 한 부서의 데이터가 다른 부서에 섞이지 않고, 다른 부서로 옮겨 줄 때는 연결 주소만 바꾸면 된다.
- 개인정보 분리: 실명과 전화번호는 코드에 넣지 않고 시트 데이터로만 다룬다.
다음 단계: 교구와 담임목사가 보는 통합 현황
각 부서 앱에 이름 없이 숫자만 돌려주는 요약 API(재적·출석·결석·새가족)를 이미 넣어 두었다. 이 값을 모으면 교구와 담임목사가 개인정보를 보지 않고도 전 부서의 주간 출석 흐름을 한 화면에서 볼 수 있다. 부서별 기반은 마련됐고, 이를 모아 보여 줄 통합 대시보드가 다음 작업이다.