프로젝트주제및선정배경
- 프로젝트 명 : 금나와라 뚝딱!
- 프로젝트 주제
- 이 프로젝트는 번호교환 없이 다른 사람들에게 여러가지 선물을 주기 위해서 만들어졌습니다. 단순히 선물을 지목한 사람에게 주는 형식이 아니라, ‘랜덤’ 또는 ‘선착순’의 방식을 통해 게임처럼 재미있게 선물을 나눌 수 있는 서비스입니다.
- 프로젝트 선정 배경
- KDT 과정을 진행하면서 특정 이벤트에 당첨된 당첨자에게 커피 쿠폰을 전달하는 상황에서 항상 상대방의 핸드폰 번호를 알아야만 전달을 할 수 있는 문제를 인식함.
- 이러한 불편함을 없애고 선물을 조금 더 편하고, 조금 더 재미있게 전달하면 어떨까? 라는 물음에서 시작하여 해당 프로젝트를 선정함.
프로젝트 개요
- 프로젝트 구현 내용
- 사용자는 소셜로그인을 통해 간단하게 서비스에 가입할 수 있다.
- 이벤트 등록을 통해 선물의 종류, 개수, 이벤트 오픈 및 종료 시간 등을 자유롭게 설정할 수 있다.
- 이벤트가 생성되면 사용자에게는 링크가 주어지고, 링크를 전달받은 사람은 해당 선물을 랜덤 또는 선착순 형식으로 수령하게 된다.
- 수령한 선물은 마이페이지에서 다시 확인할 수 있으며, 선물을 저장하여 개인 소장할 수 있다.
- 모든 선물이 소진되거나 이벤트 종료시간이 경과되어 이벤트가 종료되면 사용자는 해당 이벤트의 당첨자 목록을 확인할 수 있게된다.
- 컨셉
- 크리스마스 컨셉의 이벤트 서비스
- 훈련내용과 관련성
- 백엔드
- Java/Spring을 이용하여 백엔드 API 서버를 만들고 클라우드 환경(AWS EC2)에 배포
- 파일 업로드 및 저장을 위해 AWS S3를 사용
- DB는 테스트 환경에서 h2를 사용하고 배포 환경에서는 MySql을 사용
- Jira를 활용한 이슈, 스프린트 등 프로젝트 관리
- 협업과 버전 관리를 위한 Git&Github을 사용
- Notion을 통한 문서화 작업
- Github Action 와 Docker를 이용한 CI/CD 구현
- Oauth2를 이용한 카카오 로그인 구현
- 프론트엔드
- TypsScript/React를 활용한 서비스 개발
- Netlify 배포
- Next.JS 프레임워크 활용
- Context-API 상태관리 라이브러리 활용
- Jira를 활용한 이슈, 스프린트 등 프로젝트 관리
- 협업과 버전 관리를 위한 Git&Github을 사용
- Notion을 통한 문서화 작업
- 해당 프로젝트는 훈련 과정에서 습득한 지식을 100% 활용하여 개발함.
활용 장비 및 재료
- 공통
- 협업: git, github, jira, notion, slack
- 백엔드
- Java
- Gradle
- Spring
- MySQL
- S3
- OAuth2.0
- Jira
- Github Submodule
- Swagger
- Docker
- AWS
- 프론트엔드
- Node.js
- Typescript
- React
- Next.js
- Emotion
- Eslint
- Prettier
- Storybook
- Netlify
- postman
- figma
프로젝트 구조
- 백엔드

- 프론트엔드
. ├── README.md ├── craco.config.js ├── next-dev.d.ts ├── next-env.d.ts ├── next.config.js ├── package.json ├── pages │ ├── 404.tsx │ ├── _app.tsx │ ├── api │ │ ├── event.ts │ │ ├── gift.ts │ │ ├── hello.ts │ │ ├── post.ts │ │ ├── services │ │ ├── user.ts │ │ └── utils │ ├── event │ ├── fifo │ ├── gift │ ├── index.tsx │ ├── login.tsx │ ├── mypage.tsx │ ├── oauth │ ├── post.tsx │ └── random ├── public │ ├── templates │ └── video ├── src │ ├── assets │ ├── components │ │ ├── Checkbox │ │ ├── Icon │ │ ├── Image │ │ ├── Input │ │ ├── Logo │ │ ├── MUIAvatar │ │ ├── MUIButton │ │ ├── MUISwitch │ │ ├── MUITab │ │ ├── Modal │ │ ├── Spinner │ │ ├── Swalert │ │ ├── Text │ │ ├── Textarea │ │ ├── Timer │ │ └── Upload │ ├── contexts │ ├── domains │ │ ├── CardFlip │ │ ├── CheckboxList │ │ ├── EventComplete │ │ ├── EventDetail │ │ ├── EventList │ │ ├── EventPresent │ │ ├── EventStateChecker │ │ ├── EventTimer │ │ ├── EventTitle │ │ ├── EventType │ │ ├── GiftItem │ │ ├── GiftList.tsx │ │ ├── Header │ │ ├── TextLabel │ │ └── TimerHeader │ ├── hooks │ │ ├── useDebounce.ts │ │ ├── useInfiniteScroll.tsx │ │ ├── useInterval.ts │ │ ├── useIntervalFn.ts │ │ ├── useLocalStorage.tsx │ │ └── useTimeoutFn.ts │ ├── stories │ │ ├── components │ │ └── domain │ ├── types │ │ ├── event.d.ts │ │ └── gift.d.ts │ └── utils │ ├── constants │ └── formatTimeNumber.ts ├── styles ├── tsconfig.extend.json ├── tsconfig.json └── yarn.lock
기대효과
- 한 명의 사용자가 다수의 사용자에게 선물을 전달하는 최소 투입 최대 효율의 이벤트 기획 서비스가 될 것으로 기대함.
- 프로그래머스 KDT 2기~ 중간 중간 이벤트에서 실제로 활용되어 보다 더 간편하고 보다 더 재미있게 선물을 주고 받을 수 있을 것으로 기대함.
- 해당 서비스를 사용하여 설문 참여자들에게 참여를 유도할 수 있을 것으로 기대함.
02 프로젝트 팀 구성 및 역할
팀 공통
- 서비스 기획
백엔드
공통
- 서비스 모델링
- 한맹희
- 팀장
- Jwt 토큰및 oauth2 기반의 소셜 로그인 기능 구현
- QueryDSL을 활용한 이벤트 & 선물 조건 검색 기능 구현
- 선착순 & 랜덤 선물 받기 서비스 구현
- 최영권
- 팀원
- S3와 http Form-data를 활용한 이미지 bulk Insert 기능 구현
- 이벤트 생성 서비스 구현
- Git SubModule을 활용한 설정파일 분리
- 신언주
- 팀원
- 이벤트 & 선물 상세 조회 기능 구현
- 이벤트 당첨자 목록 조회 기능 구현
- 이벤트 Soft delete 기능 구현
프론트엔드
공통
- 서비스 디자인
- 문승희
- 팀장
- 로그인 페이지 구현
- 메인 페이지 구현
- 선착순 선물 받기 페이지 구현
- 랜덤 선물 받기 페이지 구현
- 박민수
- 팀원
- 이벤트 등록 페이지 Step 1 구현
- 이벤트 등록 페이지 Step 2 구현
- 이벤트 등록 페이지 Step 3 구현
- 이벤트 등록 페이지 Step 4 구현
- 도가영
- 팀원
- 마이 페이지 구현
- 내가 받은 선물함 페이지 구현
- 나의 이벤트 페이지 구현
- 내가 받은 선물 디테일 페이지 구현
- 나의 이벤트 디테일 페이지 구현
03. 프로젝트 수행 절차 및 방법
백엔드
서비스 기획및 설계
- 기간 : 11/26(금) ~ 11/29(월)
- 활동 : 프로젝트 기획 회의 및 설계 작업 착수 (ERD 설계, API 스펙정의, 서버 구조 모델링)
- 비고 : 팀 공통
핵심 기능 구현
- 기간 : 11/29(월) ~ 12/05(일)
- 활동 : 금나와라 뚝딱의 핵심 기능인 이벤트 생성 & 조회 및 선물 받기 서비스 구현
- 비고 : 1주차 스프린트 회고
세부 기능 구현 및 CI/CD
- 기간 : 12/06(월) ~ 12/12(일)
- 활동 : 세부 기능 구현 및 CI/CD 적용
- 비고 : 2주차 스프린트 회고
서버 경량화 작업 및 성능 개선
- 기간 : 12/13(월) ~ 12/19(일)
- 활동 : 기존 Code Deploy에서 Docker로 서버 경량화 & Redis 도입
프론트엔드
서비스 기획
- 기간 : 11/26(금) ~ 11/29(월)
- 활동 : 프로젝트 기획 회의 및 디자인 방향 설정
- 비고 : 팀 공통
서비스 디자인
- 기간 : 11/30(화) ~ 12/4(토)
- 활동 : 와이어 프레임 등 전체 서비스 디자인 개발
- 비고 : 1주차 스프린트 회고
페이지 레이아웃 및 컴포넌트 개발
- 기간 : 12/5(일) ~ 12/14(화)
- 활동 : 페이지 기초 레이아웃 및 서비스에 필요한 리액트 컴포넌트 개발
- 비고 : 2주차 스프린트 회고
페이지 API 연동
- 기간 : 12/15(수) ~ 12/17(금)
- 활동 : 백엔드 API 연동 및 QA
서비스 배포
- 기간 : 12월 18(토) ~ 12월 19(일)
- 활동 : 프론트엔드 서버 배포
총 프로젝트 개발 기간 : 11/26(금) ~ 12/ 19(일)(총 3주)
자체 평가 의견
프로젝트 기획 의도와의 부합 정도 : 100%
- 초기 프로젝트 기획 의도에 맞춰 선착순, 랜덤 선물 받기 등 원하는 의도에 부합하는 프로젝트를 완성하였다고 판단.
실무 활용 가능 정도
- 클라이언트 단에서의 컴포넌트 랜더링 최적화가 필요
- 서버 단에서의 API 로직 에러 등이 존재하는 상황으로 현재 에러 픽스 중에 있음
- 위 내용을 고려하였을 때 90% 정도 문제없이 서비스를 이용가능하다고 판단함.
달성도 및 완성도
- 백엔드
- API 개발 및 성능 개선도 진행하였으며 CI/CD 기능도 구현함
- 이에 따라 95% 달성하였다 판단하며, 성능 개선 및 에러 픽스 작업을 마무리하여 100%를 달성할 예정
- 프론트엔드
- 컴포넌트 랜더링 최적화 작업을 진행할 예정
- 목표 기능 구현 95% 달성