Skrr Application

10대 학생들의 익명 투표 앱.

Overview

같은 학교 학생끼리 익명 투표를 주고받고, 자신이 받은 투표 결과를 확인할 수 있는 모바일 앱입니다.

Motivation

해외에 Gas라는 비슷한 서비스가 있었는데, 해외에서만 사용할 수 있었기 때문에 국내에서도 사용할 수 있는 서비스를 만들고 싶었습니다.

Screenshots

서비스 화면

Skrr Application screenshot 1
Skrr Application screenshot 2
Skrr Application screenshot 3
Skrr Application screenshot 4
Skrr Application screenshot 5
Skrr Application screenshot 6

Stack

기술 선택 이유

Flutter

빠른 MVP 개발과 추후 유지보수를 용이하게 하기 위해 사용했습니다.

Bloc

투표, 회원가입, 결제처럼 상태 전이가 명확한 기능을 이벤트와 상태로 분리해 관리하기 위해 사용했습니다.

Hive

유저 데이터와 투표 진행 상태를 로컬에 저장해 앱 재실행 후에도 빠르게 복원하기 위해 사용했습니다.

Kakao SDK

복잡한 회원가입 대신 카카오 로그인으로 간편하게 회원가입을 하기 위해 사용했습니다.

In-App Purchase

멤버십 결제와 구매 검증 흐름을 구현하기 위해 사용했습니다.

Key Features

  • 익명 투표 기능
  • 내가 받은 투표에 대한 질문 확인(학년, 성별만 공개)
  • 멤버십 결제 시 투표자 초성 확인

Architecture

  • presentation/application/domain/infrastructure 레이어로 나눠 UI, 비즈니스 로직, 데이터 접근 책임을 분리했습니다.
  • 데이터를 제공하는 부분은 interface로 추상화하여, 테스트 시 빠르게 테스트 데이터로 교체할 수 있도록 하였습니다.
  • Bloc을 사용해 상태 관리를 했습니다.
  • Hive를 사용해 유저 데이터, 스킵한 질문 등의 로컬 데이터를 저장했습니다.
  • Dio Interceptor를 사용해 토큰을 관리하고, 서버로부터 응답을 처리하기 편한 형태로 변경했습니다.

Result

약 34,000명의 사용자, 총 매출 1,000만 원 이상, 총 투표수 240만 건 이상을 기록했습니다.

Troubleshooting

문제와 해결

회원가입 시 본인의 학교를 검색하는 과정에서, 검색이 느린 문제

기존 서버에서 학교를 검색하는 대신 로컬에 데이터를 저장하여 로컬 검색으로 변경했습니다.

앱 시작 시 매번 유저 데이터를 서버에서 불러와 초기 화면이 늦게 로드되는 문제

유저 데이터는 크게 변경되지 않으니 로컬에 캐시해서 캐시된 데이터를 먼저 보여주고, 따로 서버에 유저 데이터를 요청해 캐시를 업데이트했습니다.