개요

코로나 19 확산 예방 정책 “학생 건강상태 자가진단”을 자동으로 수행해주는 서비스


배경

매일 아침 수행해야 했던 “학생 건강상태 자가진단”에 번거로움을 느껴 이를 자동화하는 서비스를 만들고자 함.

자가진단 사이트 화면

자가진단 사이트 화면

코로나 19가 유행하던 시절, 중고등학교를 대상으로 코로나 19 전파를 예방하기 위한 여러 정책들이 시행되었습니다. 격주 등교제, 마스크 의무 착용, 원격 수업 등이 그 예입니다. 그 중에는 학생 건강상태 자가진단이라는 것도 있었습니다.

매일 아침 등교하기 전에 자가진단 사이트에 접속해 자신의 코로나 19 관련 증상을 기입하여야 했습니다. 코로나 19 증상을 보이는 학생을 사전에 격리시킨다는 게 이 정책의 골자였습니다.

“자가진단”으로 도배된 공지 대화방

“자가진단”으로 도배된 공지 대화방

하지만 우리 학생들의 입장에서는, 아침에 할 일이 하나 더 늘어난 게 여간 짜증나는 게 아니었습니다. 깜빡 잊어 자가진단을 하지 않고 등교한 날에는 선생님한테 잔소리를 듣는 일도 부지기수였습니다.

당시 고등학교 1학년이었던 저는 이를 해결하기 위해 매일 아침 자가진단을 자동으로 수행해주는 서비스를 만들고자 했습니다. 친구들도 같이 사용하면 좋을 것 같아, 누구나 사용할 수 있는 형태로 만들기로 하였습니다.


과정

node-cron을 이용하여 매일 특정 시각에 HTTP 요청을 보내는 서버를 구현하고, swal2와 bootstrap을 이용하여 사용자 인터페이스를 제작함.

학생들은 자가진단 사이트에 들어가서 이름과 비밀번호를 입력한 뒤, 증상 기입란을 채워야 합니다. 저는 이 정보가 HTTP 요청을 통해 자가진단 서버로 전송됨을 알아냈습니다.

따라서 자가진단을 자동화하려면, 이 정보를 사용자 대신 전송해주면 됩니다. 즉, 매일 아침 자가진단을 자동으로 수행하려면 매일 아침 자가진단 서버로 요청을 보내기만 하면 되는 것입니다.

사용자의 이름과 비밀번호는 데이터베이스에 저장해놓았습니다. 매일 특정 시각에 HTTP 요청을 보내도록 하기 위하여 node.js 라이브러리인 node-cron을 이용하였습니다. 필요한 기능이 많지 않다 보니 서버 로직은 꽤 단순했습니다.

이에 서버 프레임워크를 사용하지는 않았습니다. node.js의 기본 내장 모듈인 http를 이용하여 서버를 구현하였습니다.

swal2 소개 페이지

swal2 소개 페이지

클라이언트에서 역시 사용자의 이름과 비밀번호를 입력받고, 이를 삭제하는 단순한 기능만 구현하면 되었습니다. 제 친구들도 사용할 것을 가정하고 만드는 앱이다 보니, swal2bootstrap 등의 라이브러리 및 프레임워크를 통해 약간의 스타일링도 가미하였습니다.