Stocker
Seeds 팀 프로젝트 우수상
주식투자를 배우는 핀테크 교육 앱 · 팀 돔황촤 코스피
배경
Stocker는 주식 투자를 처음 시작하는 사람을 위한 금융 교육 앱입니다. 이론 학습, O/X 퀴즈와 해설, 오답노트, 출석 체크, 투자 성향 분석을 한 앱에서 제공합니다.
팀 돔황촤 코스피로 진행했고, 저는 Flutter 앱 프론트엔드 리드를 맡았습니다. 팀원과 브랜치를 나눠 개발한 뒤 하나로 합쳤고, 백엔드는 Node.js REST API입니다.
맡은 역할
- 앱 프론트엔드 리드 — 앱 구조, 브랜치 통합, 상태관리 전환을 주도
- 앱 구조 설계 — 기능별
data / domain / presentation구조와 라우팅 뼈대 - 학습 기능 화면 — 이론 학습, 퀴즈, 오답노트, 마이페이지, 다크/라이트 테마
- 브랜치 통합 — 팀원 브랜치(로그인, 성향 분석, 노트, 출석)와 제 브랜치를 통합
- 상태관리 전환 — Provider에서 Riverpod으로 단계적 마이그레이션
- 실서버 연동과 마감 — 퀴즈 API 호출 축소, 인증 가드, 릴리스 빌드 수정
과정
백엔드보다 먼저 화면을 만들었습니다. 2025년 7월 26일 저장소를 구성하고, 이론 학습 화면을 Mock 데이터로 먼저 만들었습니다. Repository를 두어 나중에 실제 API로 바꿀 수 있게 했습니다.
두 갈래로 개발한 기능을 하나로 합쳤습니다. 8월 26일 제 브랜치를 기준으로 팀원 브랜치를 통합했습니다. 통합 직후 홈 화면 dispose()에서 난 오류는 Provider 참조를 미리 저장해 고쳤습니다.
실서버에 붙이자 새로운 문제가 나왔습니다. 9월에는 통신·인증·퀴즈·무한 루프 문제를 차례로 고쳤습니다. 11월에는 API 요청·응답을 그대로 찍는 로깅부터 만들고 필드명과 라우팅을 맞췄습니다.
마지막 버그는 릴리스 빌드에서 나왔습니다. 릴리스 APK에서만 네트워크가 막혔고, Android 매니페스트에 INTERNET 권한이 빠져 있었습니다. 15초여야 할 Dio 타임아웃이 15000초로 계산되던 버그도 함께 고쳤습니다.
기술적 결정
Mock 우선 개발과 실행 설정으로 Mock·Real 전환
- 상황백엔드 API가 완성되기 전에도 화면 개발을 진행해야 했습니다.
- 결정데이터 소스를 Repository 뒤로 숨기고,
--dart-define과 VS Code 실행 설정으로 Mock과 Real을 전환했습니다. - 결과코드를 고치지 않고 실행 환경을 바꿀 수 있어, 잘못된 설정을 커밋할 위험이 없어졌습니다.
Provider에서 Riverpod으로 단계적 전환
- 상황처음 팀 가이드는 "상태 관리는 Provider만 사용"이었습니다.
- 문제Provider는 BuildContext가 있어야 접근할 수 있고, 등록 누락은 실행해 봐야 에러가 났습니다.
- 결정기존 Provider를 Riverpod과 공존시킨 뒤, 테마 → Repository → Notifier → UI 순서로 옮겼습니다.
- 결과2025년 11월 8일 Provider 의존성을 완전히 제거했습니다.
퀴즈 API 호출을 시작·종료 두 번으로 축소
- 상황시작·종료 외에 답을 고를 때마다 API를 호출해, N문제 퀴즈 한 번에 N + 2회를 호출했습니다.
- 문제문제 수만큼 서버 부하가 늘고, 답을 고를 때마다 응답을 기다려야 했습니다.
- 결정듀오링고 방식을 참고해, 시작할 때 문제·정답·해설을 받아 두고 답안은 끝날 때 한 번에 제출하게 했습니다.
- 결과퀴즈 1회당 API 호출이 "문항 수 + 2"회에서 시작·종료 2회로 줄었습니다.
결과
- Seeds 팀 프로젝트 우수상



