---
# System prepended metadata

title: "\U0001F30A프로젝트 매니저 -훈트"
tags: [project]

---

# Ground Rules

## 🤖 프로젝트 규칙
- 코드베이스도 같이 공부해보기
- 읽고 참고해야하는 문서 전부 공부한 후에 프로젝트 진행
- 다른 사람이 올린 PR에 휩쓸리지 않기
- 많이 질문하기
- 그때그때 궁금한 점 핵엠디에 정리

## 🚦 팀 규칙
- TIL, 일일 회고 작성 시간(매일 22시부터 1시간 작성 진행)
- 컨디션이 좋지 않을 때는 꼭 말해주기!!
- 주말은 일정 공유를 통해 유동적인 진행
- 에러 캡쳐 많이 하기
- PR 메모 하기


# 일일 스크럼
### 🙌 09/18 월
- 오늘의 컨디션
    - MINT: 조금 졸렸습니다아
    - hoon: 조금 피곤합니다.🤣
- 특이사항
    - MINT: 훈이 주는 생일선물 기대..!
    - hoon: 운동과 음주를 조금...
- 오늘 할 일 
    - [X] STEP 1 계획
    - [ ] 공식문서 읽기

### 🙌 09/19 화
- 오늘의 컨디션
    - MINT: 새벽에 일어나버린 민트...!
    - hoon: 아침부터 웃음이 나옵니다 ㅋㅋㅋㅋㅋㅋ
- 특이사항
    - MINT: 훈 덕분에 저도 웃어요ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    - hoon: 숙취.....😰
- 오늘 할 일 
    - [X] STEP 1 PR
    - [ ] 공식문서 읽기

### 🙌 09/20 수
- 오늘의 컨디션
    - MINT: 호달달
    - hoon: 비도 오고 날씨가 흐리니 힘이 빠져요..🥲
- 특이사항
    - MINT: 비 많이 오는데 밖에 나갔다 와쏘욥..
    - hoon: 외출 금지!!! ㅋㅋㅋㅋ 치킨 먹고 싶어요....🍗
- 오늘 할 일 
    - [X] STEP 2 하위 스텝으로 계획 세우기
    - [ ] CollectionView, Combine 공부
    - [ ] 공식문서 읽기

### 🙌 09/21 목
- 오늘의 컨디션
    - MINT:
    - hoon: 환절기...🤧
- 특이사항
    - MINT:
    - hoon: 여수 여행 계획🤩
- 오늘 할 일 
    - [x] 활동학습 예습
    - [x] 공식문서 읽기
    - [x] CollectionView 실습

### 🙌 09/22 금
- 오늘의 컨디션
    - MINT: 시무룩
    - hoon: 오늘도 코가... 그래도 컨디션은 좋아요.😊
- 특이사항
    - MINT: 아무것도 먹기 싫어여
    - hoon: 시간이 나면 운동을 다녀오겠습니다.🏃🏻
- 오늘 할 일 
    - [ ] Modern Collection Views 공부
    - [ ] STEP 2-1 구현
    - [x] 공식문서 읽기


### 🙌 09/25 월
- 오늘의 컨디션
    - MINT: 감기가 나아가...는 중?
    - hoon: 괜찮습니다.☺️
- 특이사항
    - MINT: 케이크 먹을래요 10시 민트 생파 초대~
    - hoon: 오후에 솜과 야아톤 관련 미팅이있어요 ㅎㅎ
- 오늘 할 일 
    - [x] 미리 민트 생파
    - [x] 활동학습 예습
    - [ ] 공식문서 읽기
    - [ ] STEP 2-1 해보기

### 🙌 09/26 화 : 민트 생일🎂
- 오늘의 컨디션
    - MINT: 코만 훌쩍훌쩍
    - hoon: 머리가 아파요...😩 <- 아프지 마세요ㅜㅜㅜㅜㅜ
- 특이사항
    - MINT: 점심 저녁 외식 킥킥
    - hoon: 민트 생일 선물 고르기 🥳 <- 두근두근😍
- 오늘 할 일 
    - [ ] 민트 많이 놀고오기 ㅎㅎ
    - [ ] STEP 2-1 해보기
    - [ ] Collection View 완전 정복!
    - [ ] 공식문서 읽기

### 🙌 09/27 수
- 오늘의 컨디션
    - MINT:
    - hoon: 헤롱헤롱합니다.😵‍💫
- 특이사항
    - MINT:
    - hoon: 병원 다녀와요. 주사도 한방...😱
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 09/28 목
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 09/29 금
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 10/02 월
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 10/03 화
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 10/04 수
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 10/05 목
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

### 🙌 10/06 금
- 오늘의 컨디션
    - MINT:
    - hoon:
- 특이사항
    - MINT:
    - hoon:
- 오늘 할 일 
    - [ ] 
    - [ ] 

# STEP 2 쪼개기
## 2-1 : 9/22 금 
- CoreData X
- collection View 사용해서 cell 띄우기
    - 각 셀에는 [제목 / 설명 / 기한]이 표시됩니다.
    - 제목은 한 줄이며, 길면 잘라서 마지막 부분을 …로 표시합니다.
    - 설명이 세 줄 이상이면 세 줄 까지만 표시합니다.
    - 설명이 세 줄 이하라면, 설명글의 높이에 맞게 셀의 높이가 맞춰집니다.

![](https://hackmd.io/_uploads/ry19WX_1p.png)


## 2-2 : 9/25 월
- TODO, DOING, DONE 섹션 분리
- TODO와 DOING의 기한에 지난 날짜가 있으면 빨간색으로 표시합니다.
- 기한 날짜는 사용자의 지역 포멧에 맞게 표현해야 합니다.

## 2-3 : 9/26 민트 생일 
- 오른쪽 위의 + 버튼을 선택하면 새로운 할일을 추가하는 작성양식이 표시됩니다.
    - 작성한 할일은 [할일(TODO)] 영역에 추가합니다.
![](https://hackmd.io/_uploads/BJWIZmd16.png)


## 2-4 : 9/26 민트 생일
- 할일을 터치하면 상세내용을 표시합니다.
    - Edit 버튼을 선택하면 수정할 수 있습니다.
![](https://hackmd.io/_uploads/BJF8b7ukp.png)


## 2-5 : 9/27 수
- 할일을 길게 터치하여 팝오버 메뉴를 표시합니다.
- 팝오버에 표시하는 메뉴는 상황에 따라 달라집니다.
    - TODO의 할일 : Move to DOING / Move to DONE
    - DOING의 할일 : Move to TODO / Move to DONE
    - DONE의 할일 : Move to TODO / Move to DOING
- 본인의 판단에 따라 팝오버는 액션시트로 대체할 수 있습니다.

![](https://hackmd.io/_uploads/S1zDZ7_ya.png)


## 2-6 : 10/03 화 -> PR
- 셀을 왼쪽으로 스와이프하여 삭제 메뉴를 표시하고, 끝까지 스와이프하거나 삭제 메뉴를 선택하면 해당 할일을 삭제합니다.

![](https://hackmd.io/_uploads/HyEOZmuJT.png)

## EXTRA
- UICollectionViewDiffableDataSource 사용

# 🌊프로젝트 매니저

![](https://hackmd.io/_uploads/H1DzJCBJa.png)
> 프로젝트 기간: 23.09.18 ~ 23.10.06

## 📖 목차
1. [🍀 소개](#소개)
2. [💻 실행 화면](#실행-화면)
3. [🧨 트러블 슈팅](#트러블-슈팅)
4. [📚 참고 링크](#참고-링크)
5. [👥 팀](#팀)

</br>

<a id="소개"></a>

## 🍀 소개


</br>

<a id="실행-화면"></a>

## 💻 실행 화면

| 일기 목록 스크롤 | 일기 내용 보기 |
|:--------:|:--------:|
|<img src="" alt="diary_scroll" width="250">|<img src="" alt="diary_detail" width="250">|



</br>

<a id="트러블-슈팅"></a>

## 🧨 트러블 슈팅
###### 핵심 트러블 슈팅위주로 작성하였습니다.
1️⃣ **** <br>
-
🔒 **문제점** <br>


🔑 **해결방법** <br>


<br>


2️⃣ **** <br>
-
🔒 **문제점** <br>


🔑 **해결방법** <br>


<br>

3️⃣ **** <br>
-
🔒 **문제점** <br>


🔑 **해결방법** <br>

<br>

4️⃣ **** <br>
-
🔒 **문제점** <br>

🔑 **해결방법** <br>


<br>


5️⃣ **** <br>
-
🔒 **문제점** <br>


🔑 **해결방법** <br>


<br>


<br>

<a id="참고-링크"></a>

## 📚 참고 링크
- [🍎Apple Docs: ]()
- <Img src = "https://github.com/mint3382/ios-calculator-app/assets/124643545/56986ab4-dc23-4e29-bdda-f00ec1db809b" width="20"/> [야곰닷넷: ]()
- <Img src = "https://hackmd.io/_uploads/ByTEsGUv3.png" width="20"/> [blog: ]()


</br>

<a id="팀"></a>

## 👥 팀

### 👨‍💻 팀원
| 🐝hoon🐝 | 😈MINT😈 |
| :--------: | :--------: |
| <img src="" width="200" height="200"> | <img src=""  width="200" height="200"> |
|[Github Profile]() |[Github Profile](https://github.com/mint3382) |

</br>

- [팀 회고 링크]()


-----------------------

# STEP 1 PR

## 기술 선택
| Framework | Architectrue | Concurrency | Local DB | Remote DB | Dependecy Manager |
| --------- | ------------ | ----------- | -------- | --------- | ----------------- |
| UIKit | MVVM | Combine | CoreData | Firebase | SPM |

## 선택 사유
### 1. UIKit
- UIKit에 대해 좀 더 깊게 공부해보는 시간을 갖기 위해 선택하였습니다.

### 2. MVVM 
- Controller의 역할이 과한 MVC의 단점을 보완하고 있는 MVVM을 선택하였습니다.

### 3. Combine
- Apple에서 제공하는 Framework로써 안정적이고 코드의 가독성을 높일 수 있어 선택하였습니다.

### 4. CoreData
- Apple에서 제공하는 Framework로 iCloud와의 연동 등을 생각하였을 때를 생각하여 선택하였습니다.

### 5. Firebase
- iCloud의 경우 개발자 계정을 등록해야한다는 제한이 있었습니다.
- 초심자가 콘솔을 사용하기 편리하며 인증 시스템을 제공해 주어서 로그인 관련된 부분을 조금 더 쉽게 구현할 수 있어서 선택하였습니다. 

### 6. SPM
- 현재 사용하고자 하는 외부 라이브러리는 SPM을 통해서 관리가 가능하며 Apple에서 지원한다는 장점이 있어 선택하였습니다.

### 사용해보고 싶은 외부 라이브러리
- [Then](https://github.com/devxoul/Then)
- [SnapKit](https://github.com/SnapKit/SnapKit)


## STEP 1 PR 코멘트
1. Combine이 어떤 측면에서 안정적이고 코드의 가독성을 높힌다고 생각하시나요~?
    `apple`에서 제공해 주는 프레임워크이기 때문에 안정적이고, `Combine`과 같은 선언형이 명령형에 비해 들여 쓰기도 적고, 일관된 형태를 가지고 있기에 더 가독성을 높인다고 생각했습니다.
    
2. CoreData를 선택하신 사유로 "iCloud와의 연동 등"을 생각하셨는데 그 밑에는 결국 iCloud의 제약 때문에 FireBase를 사용하신다고 적어주셨는데요. 그럼 굳이 CoreData를 사용하지 않아도 되지 않나요? CoreData를 선택하신 따른 이유가 더 있으신지 궁금해요!
    `apple`에서 제공하는 프레임워크인 만큼 안정적이며 데이터를 `object` 형태로 관리한다는 장점이 있습니다. 또한 저번 프로젝트에서 처음으로 `CoreData`를 사용해 보았는데 조금 더 능숙하게 사용해 보고 싶어서 선택하게 되었습니다.
    
3. Then과 SnapKit을 사용하고 싶으신 특별한 이유가 있으신지 궁금해요
    1. `Then`: `View`를 생성하는 기존 방법에 비해 반복적인 코드를 줄여 생산성을 높일 수 있습니다.
    2. `SnapKit`: 간결하게 코드를 작성할 수 있으며 오토레이아웃을 위한 `translatesAutoresizingMaskIntoConstraints` 설정을 라이브러리 내부에서 설정해줍니다.
    -> 처음으로 외부 라이브러리를 사용할 수 있는 프로젝트인 만큼 위의 라이브러리를 통해 프로젝트 내 코드의 간결성 및 생산성을 높여보고 싶었습니다. 간결한 코드를 작성한다는 것은 생산성을 높일 수 있는 방법이라고 생각하였습니다. 외부 라이브러리 사용에 대한 제임스의 의견이 궁금합니다.
