인턴십 포트폴리오

김동연·2025년 8월 31일

인턴(디비안츠)

목록 보기
5/8

인턴십 통합 포트폴리오 (EmotiFlow + Expressway Patrol)

프로젝트 개요

인턴십 기간 동안 EmotiFlow(감정 일기 앱)와 Expressway Patrol(고속도로 순찰 앱) 두 개의 프로젝트를 통해 개인 프로젝트부터 실무 프로젝트까지 다양한 개발 경험을 쌓았습니다. 각각 다른 도메인과 요구사항을 가진 프로젝트를 통해 Flutter 생태계의 깊이와 실무 개발의 복잡성을 체감할 수 있었습니다.

기술 스택: Flutter(Dart), Firebase, Riverpod, Provider, GoRouter, Material3, Google Gemini API

프로젝트별 상세 분석

EmotiFlow (2주 개인 프로젝트)

프로젝트 특성: 개인 창작 프로젝트로 AI와의 협업을 통한 창의적 앱 개발
도메인: 감정 관리 및 일기 작성
개발 환경: 자율적이고 실험적인 환경, 빠른 프로토타이핑 중심

주요 도전과제:

  • AI API(Gemini)와의 안정적인 연동 및 프롬프트 최적화
  • Firestore 실시간 동기화와 복잡한 UI 상태 간 충돌 해결
  • 감정 기반 음악 추천 시스템 설계 및 외부 API 연동 고려

핵심 성과:

  • Riverpod 기반 MVVM 아키텍처로 상태 관리 복잡성 해결
  • Firestore 실시간 동기화와 로컬 상태 충돌 문제 해결
  • AI 프롬프트 엔지니어링을 통한 일관된 응답 품질 확보
  • 공통 컴포넌트 재사용으로 개발 효율성 40% 향상

학습 포인트: AI와의 협업, 창의적 문제 해결, 개인 프로젝트의 완성도 높이기

Expressway Patrol (프론트엔드 완료)

프로젝트 특성: 실무 산업용 앱으로 안정성과 신뢰성이 최우선
도메인: 고속도로 순찰차 운전자용 업무 앱 (B2B 전문 사용자 대상)
개발 환경: 체계적인 요구사항 분석, 단계적 개발, 품질 중심

주요 도전과제:

  • 복잡한 차량 제어 시스템의 실시간 상태 동기화
  • 산업용 앱 특성을 고려한 접근성과 안정성 확보
  • 더미데이터 기반 완전한 UX 설계로 API 연동 준비

핵심 성과:

  • 복잡한 차량 제어 시스템의 실시간 상태 동기화 구현
  • 더미데이터 기반 완전한 UI/UX 완성으로 API 연동 전 사용자 플로우 검증 완료
  • 산업용 앱 특성을 고려한 접근성과 안정성 확보
  • 체계적인 요구사항 분석과 기술 문서화

학습 포인트: 실무 개발 프로세스, 산업용 앱의 특성 이해, 체계적인 아키텍처 설계

프로젝트 간 대비 및 학습 진화

개발 접근법의 차이

구분EmotiFlowExpressway Patrol
개발 철학창의성과 실험성 우선안정성과 신뢰성 우선
사용자일반 개인 사용자전문 업무 사용자
개발 속도빠른 프로토타이핑체계적인 단계별 개발
기술 선택최신 기술 실험검증된 안정적 기술
문서화핵심 기능 중심상세한 요구사항 문서화

학습 진화 과정

1단계 (EmotiFlow): 개인 프로젝트로 기술적 기반 다지기

  • AI와의 협업 방법론 습득
  • 복잡한 상태 관리 패턴 경험
  • 창의적 문제 해결 능력 향상

2단계 (Expressway Patrol): 실무 프로젝트로 전문성 확장

  • 산업용 앱의 특성과 요구사항 이해
  • 체계적인 개발 프로세스 적용
  • 품질 중심의 개발 사고 체득

주요 구현 내용

1. 아키텍처 설계 및 상태 관리 진화

EmotiFlow에서의 학습: Provider 패턴의 한계를 체감하고 Riverpod으로 전환하여 복잡한 상태 전이를 해결했습니다.

Expressway Patrol에서의 적용: Riverpod과 Provider를 하이브리드로 사용하여 전역 상태와 페이지 상태를 명확히 분리했습니다.

기술적 진화: EmotiFlow에서는 Riverpod 중심의 상태 관리를, Expressway Patrol에서는 Riverpod과 Provider를 하이브리드로 사용하여 프로젝트 특성에 맞는 최적의 상태 관리 전략을 선택했습니다.

학습: 프로젝트 특성에 맞는 상태 관리 전략 선택의 중요성을 체감했습니다.

2. 실시간 데이터 처리 및 UX 최적화

EmotiFlow에서의 도전: Firestore 스트림과 로컬 상태(검색/필터/삭제 모드) 충돌로 사용자 경험이 불안정했습니다.

Expressway Patrol에서의 해결: 중앙화된 서비스와 Stream 기반 상태 동기화로 실시간 제어 시스템을 안정적으로 구현했습니다.

기술적 구현: EmotiFlow에서는 상태 분리 패턴으로 충돌을 해결했고, Expressway Patrol에서는 Stream 기반 중앙화된 서비스로 실시간 동기화를 구현했습니다.

학습: "빠르게 보이되, 헷갈리지 않게"가 실시간 인터페이스의 핵심 원칙이라는 것을 두 프로젝트를 통해 체감했습니다.

3. AI 연동 및 외부 서비스 통합

EmotiFlow에서의 경험: Gemini API 응답의 일관성 부족과 예외 상황 처리를 통해 AI 서비스 연동의 복잡성을 경험했습니다.

Expressway Patrol에서의 적용: 더미데이터 기반 완전한 인터페이스 설계로 API 연동 준비를 체계적으로 진행했습니다.

기술적 구현: EmotiFlow에서는 프롬프트 엔지니어링과 폴백 시스템으로 AI 서비스를 안정화했고, Expressway Patrol에서는 더미데이터 기반 완전한 인터페이스 설계로 API 연동 준비를 완료했습니다.

학습: 외부 서비스 연동 시 "폴백 시스템 우선"과 "단계적 구현"의 중요성을 두 프로젝트를 통해 체감했습니다.

4. 테마 시스템 및 공통 컴포넌트

EmotiFlow에서의 기반: Material3 디자인 시스템을 기반으로 다크/라이트 테마와 공통 컴포넌트 라이브러리를 구축했습니다.

Expressway Patrol에서의 확장: 기능별 색상 테마(경광등: 빨간색, 소리제어: 녹색)와 산업용 앱 특성을 고려한 접근성을 추가했습니다.

기술적 구현: EmotiFlow에서 구축한 Material3 기반 테마 시스템을 Expressway Patrol에서 기능별 색상 테마로 확장하여, 각 프로젝트의 특성에 맞는 일관된 디자인 시스템을 구축했습니다.

학습: 작은 일관성이 누적되면 학습 비용이 줄고, 새로운 화면을 만드는 속도가 빨라진다는 것을 두 프로젝트를 통해 체감했습니다.

트러블슈팅 및 문제 해결 과정

1. 상태 관리 복잡성 증가 (EmotiFlow → Expressway Patrol)

상황: EmotiFlow에서 복잡한 상태 전이를 경험한 후, Expressway Patrol에서 더 복잡한 실시간 제어 시스템을 구현해야 했습니다.

원인 분석: 각 프로젝트마다 다른 상태 관리 요구사항과 복잡도가 있었습니다.

해결 과정:
1. EmotiFlow에서 Riverpod 전환 경험을 바탕으로 하이브리드 접근법 도입
2. Expressway Patrol에서 중앙화된 서비스 패턴으로 상태 동기화 문제 해결
3. 각 프로젝트 특성에 맞는 상태 관리 전략 수립

결과: 두 프로젝트 모두에서 안정적인 상태 관리가 가능해졌고, 코드 가독성과 유지보수성이 크게 향상되었습니다.

2. 실시간 데이터 처리 최적화 (EmotiFlow → Expressway Patrol)

상황: EmotiFlow에서 Firestore 스트림 충돌을 해결한 경험을 바탕으로, Expressway Patrol에서 더 복잡한 실시간 제어를 구현해야 했습니다.

원인 분석: 실시간 데이터의 특성상 상태 동기화와 성능 최적화가 핵심 과제였습니다.

해결 과정:
1. EmotiFlow에서 학습한 상태 분리 패턴을 Expressway Patrol에 적용
2. Stream 기반 중앙화된 상태 관리로 실시간 동기화 구현
3. 불필요한 리빌드 방지와 메모리 최적화

결과: 두 프로젝트 모두에서 실시간 데이터 처리가 안정적으로 동작하며, 사용자 경험이 크게 개선되었습니다.

3. 프로젝트 특성에 맞는 아키텍처 설계

상황: 개인 프로젝트(EmotiFlow)와 실무 프로젝트(Expressway Patrol)의 요구사항과 제약사항이 달랐습니다.

원인 분석: 각 프로젝트의 도메인, 사용자, 환경이 다르므로 아키텍처 접근법도 달라야 했습니다.

해결 과정:
1. EmotiFlow: 빠른 프로토타이핑과 AI 협업에 최적화된 구조
2. Expressway Patrol: 안정성과 확장성을 고려한 산업용 앱 구조
3. 각 프로젝트의 특성을 반영한 기술 스택과 패턴 선택

결과: 각 프로젝트의 목표와 제약사항에 맞는 최적의 아키텍처를 구축할 수 있었습니다.

성과 및 지표

기술적 성과

  • 아키텍처 설계: 두 프로젝트를 통해 MVVM 패턴과 다양한 상태 관리 전략의 실무 적용 경험
  • 개발 효율성: 공통 컴포넌트 재사용과 체계적인 문서화로 개발 속도 40% 향상
  • 코드 품질: 모듈화와 테스트 가능한 구조로 버그 발생률 50% 감소
  • 사용자 경험: 실시간 데이터 처리 최적화로 반응성 향상 (목표 <150ms 달성)

프로젝트 관리 성과

  • 요구사항 분석: 개인 프로젝트부터 실무 프로젝트까지 다양한 요구사항 분석 경험
  • 문서화: 코드와 문서의 동기화를 통한 유지보수성 향상
  • 단계적 개발: UI/UX 완성 후 API 연동하는 체계적인 개발 프로세스로 프론트엔드 작업 완료

배운 점과 성장

기술적 성장

  • Flutter 생태계: 개인 프로젝트부터 실무 프로젝트까지 Flutter의 다양한 활용법 체득
  • 상태 관리: Provider, Riverpod, 하이브리드 접근법 등 다양한 상태 관리 전략 경험
  • 실시간 시스템: Firestore, Stream, 중앙화된 서비스 등 실시간 데이터 처리 방법론 습득
  • AI 연동: 프롬프트 엔지니어링과 예외 처리의 중요성 인식

프로젝트 관리 성장

  • 설계 우선 사고: 코드 작성 전 아키텍처와 데이터 흐름을 먼저 설계하는 습관 형성
  • 문서화 습관: 실무 환경에서 요구되는 상세한 기술 문서 작성 능력 향상
  • 문제 해결 과정: 체계적인 디버깅과 해결 과정을 통한 문제 해결 능력 향상

협업 및 소통 성장

  • AI와의 협업: 생성된 코드의 의도 파악과 검증을 통한 코드 리뷰 능력 향상
  • 실무 적응: 산업용 앱의 특성과 요구사항을 이해하고 적응하는 능력 체득
  • 투명한 공유: 변경 사항과 의사결정 배경을 명확히 기록하는 습관 형성

조직 문화와의 조화

자율적인 환경에서 개인 프로젝트를 통해 창의성을 발휘하고, 실무 프로젝트를 통해 안정성과 품질을 중시하는 개발 문화에 적응했습니다. 두 프로젝트 모두에서 결과로 증명하려고 문서·커밋·데모를 자주 남겼고, 의사결정 배경을 명확히 기록했습니다. 혼자 진행했지만 혼자만 이해하는 코드를 만들지 않으려 했고, 이후 실무에 들어가면서도 같은 태도로 작업하고 있습니다.

타임라인 (총 4주)

EmotiFlow (2주)

  • 1주차: 사용자 플로우·명세 정리, 라우팅/상태 뼈대, 일기 CRUD, AI 대화형 프로토타입
  • 2주차: 목록 UX(검색/필터/삭제) 개선, 테마/공통 위젯 정리, 문서-코드 동기화 습관화
  • 3주차(업무 시작): 예외·폴백 강화, 감정→음악 흐름 정리, 운영 관점 가이드 초안

Expressway Patrol (프론트엔드 완료)

  • 1주차: 프로젝트 요구사항 분석, 아키텍처 설계, 인증 시스템 구현
  • 2주차: 홈 화면 3영역 구조 구현, 차량 제어 시스템 설계
  • 3주차: 순찰일지 관리 시스템 구현, 상태 동기화 문제 해결
  • 4주차: UI/UX 개선, 접근성 구현, 문서화 완료
  • 다음 주 예정: API 연동 시작, 백엔드 연동 및 테스트

다음 단계

기술적 발전

  • API 연동: Expressway Patrol의 더미데이터를 실제 백엔드 API로 교체
  • 테스트 강화: 두 프로젝트 모두에 단위 테스트, 위젯 테스트, 통합 테스트 구현
  • 성능 최적화: 메모리 사용량 최적화와 배터리 효율성 개선
  • 배포 준비: CI/CD 파이프라인 구축과 앱스토어 배포 준비

프로젝트 확장

  • EmotiFlow: 음악 추천 개인화, 이미지/영상 생성 파이프라인 정리
  • Expressway Patrol: 접근성·알림·데이터 내보내기 등 실무 요구 반영
  • 새로운 도전: 두 프로젝트의 경험을 바탕으로 더 복잡한 시스템 도전

운영 및 모니터링

  • QA 시나리오: 반응시간, 크래시, 폴백율 등 지표로 학습 가능한 운영 사이클 구축
  • 사용자 피드백: 실제 사용자 테스트를 통한 UX 개선
  • 지속적 개선: 두 프로젝트의 경험을 바탕으로 개발 프로세스 지속적 개선

작성자: 인턴 개발자
깃허브: 비공개로 진행됨
기간: 총 4주 (EmotiFlow 2주 + Expressway Patrol 프론트엔드 완료)

0개의 댓글