본문으로 건너뛰기
강홍재/ James
← Work
EMBA2026 · PM · 개발· Started(First Commit date)

EMBA E-Members

성균관대 EMBA 원우들을 위한 커뮤니티 앱 - 원우수첩(인명부), 명함 QR 공유, 멘토링, 일정·게시판·식단을 하나로.

  • Flutter
  • Firebase
  • iOS
  • Android
스크린샷
  • 마이페이지 - 학업·동호회·직장 정보를 한 곳에서 관리하고, QR 명함과 프로필을 편집한다

  • 명함 공유 - 내 QR을 상대가 스캔하면 EMBA 앱이 열리고, 미설치 시 모바일 브라우저에 명함이 표시된다

  • 식단 - 주차별로 학교 식당 메뉴를 사진과 함께 본다

Setup

Problem

EMBA 원우 네트워크는 그 자체가 자산인데, 정작 그 자산이 카톡방·엑셀 명단·종이 명함·학교 공지 메일로 흩어져 있다. "저분이 몇 기 누구였더라", "그 공지 어디 있더라", "오늘 학식 뭐지"가 매번 흩어진 채널을 뒤지는 일이 된다. 원우들에게 필요한 건 화려한 기능이 아니라 "한 곳에서 사람을 찾고, 명함을 주고받고, 일정과 소식을 놓치지 않는" 기본기다.

Context

성균관대 EMBA의 공식 원우 커뮤니티 앱. PM 1명·개발 2명의 작은 팀으로 만들었고, 제임스는 PM이자 개발자로 제품 범위·우선순위를 정의하고 인수한 Flutter 코드베이스를 개발·유지보수하며 iOS·Android 양 스토어에 출시·업데이트했다 (현재 v1.1.5, 빌드 21). 원우 한 명이 끝까지 쓸 수 있는 기본기 - 사람 찾기, 명함 교환, 일정·공지 - 를 먼저 단단하게 만드는 데 집중했다.

Users

성균관대 EMBA 재학·졸업 원우, 그리고 기수 운영진.

Hypothesis

흩어진 채널 대신 한 앱에서 사람·명함·일정·소식을 처리하게 하면, EMBA 네트워크가 "필요할 때 실제로 닿는" 자산이 된다.

Build

What I did
  • PM으로 기능 범위·우선순위를 정의하고 iOS·Android 양 스토어 출시·업데이트를 운영
  • 인수한 Flutter 코드베이스를 개발·유지보수 (현재 v1.1.5, 빌드 21)
  • 원우수첩(인명부) - 기수·직군·이름으로 검색·필터하고, 원우 프로필을 휴대폰 연락처로 바로 저장
  • 명함 QR 공유 - 상대가 스캔하면 EMBA 앱이 열리고, 미설치 시 모바일 브라우저에 명함이 표시되는 폴백
  • 멘토링 - 멘토 찾기·신청과 1:1 채팅
  • 일정 캘린더(학사·기수·개인 일정), 게시판·공지(첨부 PDF 뷰어 내장), 학교소식·웹진(웹뷰), 주차별 식단
  • FCM 푸시 알림과 KO/EN 다국어
Product decisions
  • 기본기 우선 - 화려한 소셜 기능보다 사람 찾기·명함·일정·공지를 먼저 단단하게
  • 명함은 QR + 웹 폴백 - 상대가 앱을 안 깔았어도 명함이 전달되도록, 네트워킹 자리에서 설치를 강요하지 않음
  • 연락처는 휴대폰 기본 주소록으로 저장 - 앱을 떠나도 남는 자산
  • iOS·Android 단일 코드베이스(Flutter) - 작은 팀이 두 플랫폼을 한 번에 유지보수하도록 비용 최소화

Outcome

Metrics

성균관대 EMBA 원우 대상 실서비스. iOS·Android 양 스토어에 배포되어 원우들이 사용 중 (현재 v1.1.5, 빌드 21). 상세 사용 지표는 비공개.

Result / Learning

내가 짜지 않은 코드를 인수해 다루는 일의 무게를 확인. 새 기능을 얹는 건 쉽지만, 인수 코드 위에서는 "이걸 고치면 어디가 같이 깨지는지"가 안 보이는 게 진짜 비용이었다. 그래서 기능 요청을 받기 전에 핵심 흐름(로그인·푸시·원우 검색)의 경계부터 파악하는 게 먼저라는 결론. 다음 라운드는 그 경계에 회귀 테스트를 까는 것부터.

Retrospective
  • 인수 직후 기능 요청부터 받기 시작했는데, 코드의 경계를 먼저 지도화한 뒤 받았어야 했다. 모르는 코드 위에 기능을 얹으면 회귀가 어디서 날지 예측이 안 된다.
  • 자동화 테스트가 거의 없는 상태로 인수했다. 핵심 경로부터 회귀 테스트를 깔아두는 걸 더 일찍 했어야 한다.
Tech stack
  • Flutter
  • Dart
  • Firebase Cloud Messaging
  • REST API (dio)
  • Hive
  • get_it
  • easy_localization
  • WebView
  • iOS
  • Android