Post

[OMP_#001] Kick Off ⚽

✏️ Edit
[OMP_#001] Kick Off ⚽

드디어 시작하는 사이드 프로젝트! 프로젝트 명은 OMP이다. Oh My Coupon의 줄임말이다.

평소에 엄마가 가족톡방을 통해 모바일 쿠폰을 종종 보내주는데, 여러 개를 보내주면 내가 쓴건 지 안쓴 건지 기한은 얼마나 남았는지, 아니면 언니가 쓴건지 굉장히 헷갈릴 때가 많다. 사실 몇 년 전부터 굉장히 만들고 싶었는데, 미루고 있다가 드디어 만드는 것이다.

사실 프로젝트를 시작하기 전에 바코드로부터 기한, 금액, 사용처, 사용여부 등의 정보를 추출해올 수 있는 지를 확인해봐야 하는데.. 일단 그걸 첫 번째로 해보겠다. 🤭

그치만 우선 나는 지루한 어느 날 손으로 계획을 세워보기 시작했다.

img1 img1

이제 내 계획에 따라 일정과 상세 태스크를 뽑아야 한다! GPT놈한테 시켰다!

아래와 같이 질문했다. Image

o1이 반복적이고, 검토 후 내게 답변을 줄 것 같아 o1에게 물어봤다.

이하 GPT의 답변이다.

아래는 6주 동안 혼자 진행하는 사이드 프로젝트를 위한 제안 일정과 주요 태스크(Task) 목록, 그리고 프로젝트 진행 전 고려해야 할 사항들에 대한 정리입니다.

주제: “모바일 쿠폰을 보관하고, 사용여부와 기한 등을 확인할 수 있는 어플리케이션”

  • 프론트엔드: Flutter
  • 백엔드: FastAPI
  • 개발 프로세스: BDD(Behavior-Driven Development) + Agile
  • Discovery Workshop: 멀티에이전트(crewai 등) 활용 예정 → 질문과 답변을 통해 User Story 보완
  • 테스트: Cucumber 기반 테스트 시나리오 작성

프로젝트 진행 전에 정해야 할 것들

  1. 프로젝트 범위(Scope) 확정
    • 어떤 기능부터 MVP(Minimum Viable Product)로 구현할 것인지 결정
    • 기초적인 쿠폰 보관(등록, 삭제, 수정), 사용 여부 체크, 만료일 관리 기능 등을 1차 목표로 설정
  2. 아키텍처 및 주요 기술 스택 확정
    • Flutter (클라이언트) + FastAPI(서버), DB 종류(MySQL/PostgreSQL/SQLite 등) 선정
    • 멀티에이전트를 활용할 때의 구조(어떻게 User Story를 보완할지) 설계
  3. 개발 환경/CI 환경 설정
    • 로컬 개발 환경(Flutter, FastAPI, Python 가상환경, DB 세팅)
    • Git 레포지토리, 브랜치 전략, 기본적인 CI/CD 파이프라인(자동 빌드/테스트) 계획
  4. BDD 수행 전략 수립
    • User Story 작성을 어디까지 세분화할지
    • Cucumber에서 시나리오(Gherkin 문법)를 작성할 템플릿 정하기
    • Discovery Workshop을 어떤 순서로 진행하여 User Story를 확장 및 보완할지
  5. 프로젝트 일정(6주) 중 스프린트 기간 설정
    • 1주 단위의 스프린트 6번 OR 2주 단위의 스프린트 3번 등 본인 상황에 맞게 설정
    • 각 스프린트별 목표와 산출물을 대략적으로 계획

6주 일정 & 주차별 주요 Task 제안

아래는 예시로 6주 동안 주(Week) 단위로 나눈 일정입니다. 프로젝트 특성과 개인 사정에 따라 유연하게 조정하시길 권장합니다.

Week 1: 아이데이션 & 사용자 시나리오 정립

  1. 환경 설정 및 개요 정리
    • Flutter/ FastAPI/ DB 개발 환경 세팅
    • Git 저장소 생성, 브랜치 전략 수립(예: main, develop 등)
  2. User Story 초안 작성
    • “쿠폰 등록하기”, “쿠폰 목록 조회하기”, “쿠폰 사용 표시하기”, “만료기간 알림” 등 최소 기능 중심 스토리
  3. Discovery Workshop 준비
    • crewai(또는 유사 도구)로 멀티에이전트 구성
    • 사용자/관리자 등 가상의 역할(Role) 설정 및 초기 질의사항 목록 정리
  4. 시나리오 기반 BDD 초안 작성
    • Cucumber의 Gherkin 문법으로 기본 시나리오(Feature, Scenario, Given/When/Then) 작성(예: 쿠폰 추가 시나리오)

산출물

  • 프로젝트 구조(폴더, 레포지토리)
  • User Story 리스트 초안
  • Discovery Workshop 질의사항 목록
  • Cucumber Feature 파일 초안

Week 2: Discovery Workshop & 요구사항 확장

  1. Discovery Workshop 진행
    • 멀티에이전트를 통한 Q&A로 User Story 수정/추가
    • 기능 우선순위(Priority) 다시 조정
  2. BDD 시나리오 보강
    • Workshop 결과를 바탕으로 Cucumber 시나리오 구체화
    • 시나리오에 따른 Acceptance Criteria 명시
  3. 와이어프레임(또는 간단한 UI Mockup) 작성
    • Flutter로 구현할 간단한 화면 설계
    • 목록 화면, 상세 화면, 쿠폰 등록 화면, 만료 경고 UI 등
  4. 데이터베이스 설계
    • 쿠폰 테이블 구조(쿠폰 이름, 유효기간, 사용 여부 등)
    • 사용자 테이블(로그인 기능을 고려한다면)
    • ERD(Entity-Relationship Diagram) 초안 작성

산출물

  • 보완된 User Story / 시나리오
  • BDD 시나리오(Feature, Scenario, Steps) 상세 문서
  • UI Mockup/Wireframe
  • DB 스키마 초안

Week 3: 기본 기능 구현 (1차)

  1. 백엔드 FastAPI 기초 구축
    • 프로젝트 구조 설정(app 디렉토리, 라우터, 모델, DB 연결 등)
    • 기본 엔드포인트: 쿠폰 목록 조회, 쿠폰 상세 조회, 등록, 수정, 삭제
  2. Flutter 기초 화면 구현
    • 기본 화면 라우팅(홈 → 쿠폰 목록 → 쿠폰 상세 등)
    • API 연동 전 Mock 데이터로 UI 작업
  3. BDD(Test) → 코드 연동
    • Cucumber 시나리오 기반으로 테스트 케이스 작성
    • 일부 API를 구현 후, 시나리오가 통과되는지 확인(TDD + BDD)
  4. CI/CD 환경(간단히) 설정
    • Git Actions 등을 통해 커밋마다(또는 Pull Request마다) 테스트 수행하도록 설정(선택 사항)

산출물

  • FastAPI 기본 서버 코드(쿠폰 관련 엔드포인트)
  • Flutter 기본 UI(쿠폰 목록/상세)
  • Cucumber 테스트 코드 초기 버전
  • CI/CD 파이프라인(기본 형태)

Week 4: 기능 확장 & 사용자 경험(UX) 개선

  1. 인증/인가(선택 사항)
    • 사용자가 여러 명일 경우, JWT 등 간단한 인증 로직 추가
    • “내 쿠폰” 기능 구현(로그인된 사용자만 쿠폰 조회/등록 가능)
  2. 푸시 알림(선택 사항)
    • 만료 임박 쿠폰에 대한 알림 기능을 추가할 계획이 있다면, 푸시 알림 로직(FCM 등) 고려
  3. UI/UX 개선
    • 사용자 친화적 UX 개선(쿠폰 만료일 카운트다운, 사용 완료 처리 시 확인 메시지 등)
  4. BDD 시나리오 확장
    • 인증/푸시 알림 등 새로 추가된 기능에 대한 시나리오 추가
    • Cucumber 기반 테스트 시나리오 업데이트, 통합 테스트 실행

산출물

  • 인증/인가 로직 및 API(선택 사항)
  • 만료 알림 등 추가 기능 구현 코드
  • 확장된 BDD 시나리오 & 테스트 결과 보고서

Week 5: 테스트 & 리팩토링

  1. 통합 테스트
    • FastAPI 백엔드와 Flutter 앱을 실제 연결하여 테스트
    • BDD(시나리오) 전체 통과 여부 확인
  2. 코드 리팩토링 & 성능 최적화
    • 중복 코드 정리, DB 쿼리 최적화, 캐싱 전략(필요 시) 등
  3. 디스커버리 워크숍(2차 검토)
    • 실제 구현 결과와 사용자 스토리를 다시 비교
    • 추가로 수정/개선해야 할 사항 논의
  4. UI polish(마무리 디자인/버그 수정)
    • 작은 오류, UX/UI 개선 사항 반영

산출물

  • 통합 테스트 보고서
  • 리팩토링 완료된 코드
  • 2차 워크숍 결과 정리

Week 6: 마무리 & 배포

  1. 버그 수정 / 안정화
    • QA를 진행하면서 발견된 이슈 해결
    • BDD 테스트, 통합 테스트를 다시 진행해 최종 품질 확인
  2. 베타 버전(또는 최종 버전) 배포
    • 안드로이드 APK 빌드, iOS TestFlight(선택) 등 배포 전략 결정
    • 서버는 FastAPI를 Docker 컨테이너로 배포하거나, 클라우드에 간단히 올릴 수 있음(AWS, Heroku 등)
  3. 프로젝트 회고(Retrospective)
    • 6주 동안의 프로젝트 진행 피드백(무엇이 잘 됐고, 무엇이 아쉬웠는지)
    • 멀티에이전트 Discovery Workshop의 효과와 개선 방안 논의

산출물

  • 최종 빌드/배포 버전
  • 프로젝트 회고 문서

추가 제안 & 팁

  1. 멀티에이전트 Discovery Workshop
    • User Story가 실제 사용자 시나리오와 얼마나 맞닿아 있는지 계속 질문을 던지세요.
    • 에이전트가 제시하는 새로운 요구사항이나 엣지 케이스를 BDD 시나리오에 빠르게 반영해보세요.
  2. Agile & BDD의 시너지
    • 짧은 스프린트 단위로 계획하고, 매주 혹은 2주마다 데모 형태로 앱을 실행해 보며 개선 사항을 도출하세요.
    • BDD 시나리오는 Acceptance Test이자 문서화 역할을 하므로, 시나리오를 꼼꼼히 업데이트하며 기능 범위를 관리하세요.
  3. 우선순위 관리
    • 혼자 진행할 때에는 모든 기능을 한 번에 완성하기 어려우므로, 핵심 기능부터 빠르게 개발해서 피드백 주기 짧게 가져가는 것이 좋습니다.
  4. 기술 빚(Technical Debt) 관리
    • “나중에 개선할 점”을 따로 문서화(이슈 트래킹) 하면서, 스프린트 후반마다 조금씩 해결해나가세요.
    • 혼자서 진행하다 보면 시간이 부족할 수 있으니, 매주/매 스프린트별로 리팩토링 시간을 미리 확보해두는 것이 좋습니다.
  5. 테스트 자동화
    • Cucumber로 BDD 테스트를 작성했다면, 통합 테스트(Flutter + FastAPI)가 가능한 만큼 자동화하세요.
    • 작은 기능이라도 시나리오별로 테스트 자동화가 되어 있으면, 추후에 새로운 기능을 추가하거나 리팩토링할 때 큰 도움이 됩니다.

아주 훌륭하다! 만족한다! 그치만 이 녀석은 내가 직장인인걸 모르는 것 같다. 그치만 제안해준 Task 중 뺄 수 있어보이는 건 없으니, 6주 내로 하고 싶다면 빡세게 해야겠다.

이번 주 중에 바코드 인식해서 정보 인지하는 방식에 대해 알아봐야겠다!

재밌겠다!! 화이팅!