테킷 iOS 앱스쿨 과정 중 소규모 프로젝트로 어떤게 좋을까 고민중 1일 1커밋을 독려하는 앱을 만들기로 했습니다. 앱의 구성은 1일 1커밋 챌린지를 할 수 있게 날짜를 설정하고 어느정도 진행 되었는지 보여줄 프로그레스 바, Github API를 받아와 흔히 말하는 잔디를 보여주는 뷰, 할 일을 메모해두고 완료했는지 여부를 보여주는 TodoList 정도로 기획했습니다.

기능분배는 흔히하는 기능 당 1명씩 작업을 하는 방식으로 진행하였습니다. 노션에 기능 명세서를 작성하고 작업을하고 순차적으로 진행하였습니다.
제가 담당한 기능은 TodoList와 Setting UI를 담당하였습니다. 우선 TodoList의 CRUD를 사용해보지 않은 SwiftData로 구현하는것이였는데, 조금 막막하였지만 CoreData는 사용해본적이 있어 그 경험을 기반으로 구현하였습니다.
1. @Model 키워드로 SwiftData 모델임을 선언합니다.(스키마 생성)

2. 데이터를 저장하고 불러올 컨테이너를 설정합니다.

3. View에서 Swift Data를 사용하려면 @Query를 사용하여 데이터를 가져오면 됩니다.

TodoList 미리보기를 볼 수 있는 뷰를 만들었는데 최대 3개의 할 일을 볼 수 있는 뷰 입니다. 그런데 3개를 작성하고 1개씩 삭제할 때 마다 높이가 자꾸 변경되었습니다.
해결 방법으로 조건문으로 1개 일때의 높이와 2개일때의 높이와 3개일때의 높이를 각각 다르게 지정해줬습니다.
부족했던 시간
프로젝트에 파이어베이스를 연동하여 서버 사용도 해보고싶었고, 조금 더 프로젝트를 체계적으로 관리하고 진행해보고싶었는데 소규모 프로젝트로 일주일이라는 시간밖에 주어지지않아 기획,디자인,개발까지 하려하니 도저히 무리였기 때문에 그 점이 아쉬웠습니다.
비효율적인 코드
언제나 그렇듯 돌아보고나면 코드는 개판이다. 시간이 지난 지금이 그때보다 조금은 더 성장했다는 반증이겠지만 아키텍쳐의 이해가 너무 떨어진 상태로 코드를 작성한게 한 눈에 보입니다. 이 후 리펙토링을 통해 다시 작성할 예정입니다.
작은 프로젝트였지만 나에게는 팀원들과 함께한 첫 프로젝트였다.
깃허브 조차 사용할 줄 몰랐던 나에게는 UI 하나 만드는것, CRUD 하나하나 완성해 나가는것, Git Convention을 정해서 팀원들과 작업하는것 모든게 작은 성과였다. 다음에는 조금 더 체계적으로 많은 경험을 해봤으면 좋겠다 생각들었습니다.