코로나19 자가진단 서비스

코로나19 시절 매일 아침에 해야 했던 자가진단을 자동으로 해주는 서비스

Overview

코로나19 시절 매일 아침에 해야 했던 자가진단을 자동으로 해주는 서비스입니다. 본인의 인적사항을 입력하여 사용할 수 있으며 원하는 시간대에 맞춰 자가진단이 진행되게 할 수 있습니다.

Motivation

학생들이 매일 반복적으로 동일한 응답을 입력해야 하는 과정이 번거로워, 정해진 시간에 자가진단을 자동으로 수행하는 서비스를 만들었습니다.

Screenshots

서비스 화면

코로나19 자가진단 서비스 screenshot 1
코로나19 자가진단 서비스 screenshot 2
코로나19 자가진단 서비스 screenshot 3
코로나19 자가진단 서비스 screenshot 4
코로나19 자가진단 서비스 screenshot 5

Stack

기술 선택 이유

Flutter

Android, Web 두 플랫폼에 모두 서비스를 출시하기 위해 사용했습니다.

Spring Boot

유저 데이터를 관리하고 예약을 안정적으로 서버에서 관리하기 위해 사용했습니다.

Firebase

사용자 인증과 알림을 편하게 관리하기 위해 사용했습니다.

PostgreSQL

사용자 데이터와 예약 데이터 등을 저장하기 위해 사용했습니다.

Key Features

  • 학생 인적사항을 통한 사용자 추가
  • 구글 로그인 연동을 통한 다중 기기 지원
  • 원하는 시간을 설정해 자가진단을 자동으로 진행

Architecture

  • Flutter 앱을 Android/Web에서 동작하도록 구성하고, Bloc으로 화면 상태를 관리했습니다.
  • UseCase/Port/Adapter 구조로 비즈니스 로직과 서버 통신을 분리했습니다.
  • Firebase Auth로 익명 로그인과 Google 계정 연동을 지원하고, 서버 요청에는 Firebase ID Token을 사용했습니다.
  • 자가진단 등록, 제출, 예약 관리는 REST API로 처리하고, 앱은 예약 상태와 사용자 목록을 동기화했습니다.
  • FCM과 로컬 알림을 활용해 서버에서 처리된 예약 자가진단 결과를 사용자에게 전달했습니다.

Result

사용자 약 1,000명 이상을 달성했습니다.

Troubleshooting

문제와 해결

Web에서는 CORS 때문에 자가진단 API를 직접적으로 사용하지 못하는 문제가 있었습니다.

이를 위해 따로 백엔드 서버를 두어 일종의 브릿지 역할을 하게 했습니다.