- 📜 프로젝트 소개
- 🌊 PADO 팀소개
- ✨ 앱 필요성
- 💾 개발환경 및 라이브러리
- 💡 핵심경험
- 🕰 타임라인
- 📱 구현 화면
- ✅ 구현 List
- ☠️ 트러블 슈팅 - Step 1
- 📎 커밋 규칙
앱스쿨 3기 마지막 프로젝트인 "PADO" 는 친구들이 사용자를 촬영한 사진, 사용자와의 일상을 공유했던 추억 사진을 통해 내 피드를 꾸며주고 소통하는 소셜 미디어 앱입니다.
강치우 | 김명현 | 최동호 | 황민채 | 황성진 | |
---|---|---|---|---|---|
사진 | |||||
한줄 소개 | 그거 그렇게 하는거 맞아요? | 숟가락 노년 | 무례하긴 순애야 | 판숙이 | 건실한 청년 |
깃허브 | Github | Github | Github | Github | Github |
현재의 소셜 미디어 환경에서 나르시시즘과 같은 심리적 특성은 거짓 정보의 신뢰와 공유에 영향을 미칠 수 있습니다.
[1] 소셜 미디어 사용자들은 종종 정보 과부하, 사생활 침해, 사이버불링 등으로 인해 감정적 소진과 소셜 미디어 피로감(Social Media Fatigue)을 경험합니다.
[2] 이러한 문제들은 건강하지 못한 소셜 미디어 사용을 조장하고, 사용자들의 심리적 건강에 부정적인 영향을 미칠 수 있습니다.
"PADO" 는 이러한 문제를 해결하고자, 사용자들이 소셜 미디어를 보다 진정성 있고 건강하게 사용할 수 있도록 돕습니다.
이 앱은 사용자들이 자신의 모습을 보다 자연스럽게 표현하고 친구들과의 유대를 강화할 수 있는 새로운 방식의 소셜 미디어 경험을 제공합니다.
이를 통해 사용자들은 소셜 미디어의 긍정적인 측면을 더욱 부각시키고, 피로감을 줄일 수 있습니다.
Swift
Kingfisher
,Firebase
, Lottie
MVVM
- FireStore를 활용한 이미지 업데이트, 불러오기
- Firebase Auth를 이용한 로그인, 로그아웃, 회원가입, 회원탈퇴 활용
- View를 만들때 다양한 기기에서 사용려면 고려해야 하는 요소
- 사용자 친화적인 UI/UX 구현 (적절한 입력 컴포넌트 사용, 알맞은 키보드 타입 지정)
- HIG를 이용한 디자인 구성
- CoreGraphics의 이해
2024년 1월 15일 ~ 2월 28일 예정
총 45일 소요 예정
첫째 주
둘째 주
다섯째 주
세부기능 제작중
- Splash Image UI 구현
- StartView UI 구현
- LoginView UI 구현
- SearchView UI 구현
- SurfingView UI 구현
- 오늘파도 UI 구현
- ProfileView UI
- SettingView UI 구현
- 둘러보기를 통한 제한적인 기능 수행
- Firebase Auth 를 통한 로그인, 로그아웃, 회원가입 기능
- Firebase Auth 에서 이미 가입된 회원의 정보는 데이터 받아오기
- FireStore 를 통해 유저 정보 저장
- FireStore 를 통해 메인 게시물 불러오기
- FCM을 통한 조건에 따른 알림 발송
- 게시물 신고 내용 메일 발송
- FireStore 를 통해 댓글, 좋아요, 페이스모지 저장, 불러오기
- 제스터를 통한 메인 피드 인터렉션
- 유저 정보 검색 기능
- 사용자의 카메라, 앨범에 접근해 게시물 작성
- 오늘 파도 게시물 불러오기, 정렬 기능
- 오늘 파도 애니메이션
- 내 프로필 정보 표시, 저장
- 서퍼 지정
- 팔로잉, 팔로워 수 불러오기
- 캐시 지우기 기능
- 회원 탈퇴 기능
- FCM 알림 받기 설정
- 문의 내용 FireStore 저장
- APNs FireStore에 등록
- 서퍼 지정 알림
- 개시물 댓글, 하트 알림
- 팔로우 알림
- 서퍼가 내 게시물 작성시 알림
우리 팀은 아이키텍처에 대한 선택의 고민이 가장 컸어요.
대중적이고 검증된 MVVM과 최근 시장에서 주목받고 있는 TCA 사이에서 말이죠. 이는 단순한 기술적 선택이 아니라, 우리의 성장 방향과 프로젝트의 목표 사이에서의 균형을 찾는 과정이었습니다.
TCA를 배우고 싶은 열망이 있었지만, 우리는 먼저 팀원들과 함께 깊이 있는 학습과 논의의 시간을 가졌어요. 이 과정에서 우리는 서로의 의견을 나누고, 각자의 관점을 이해하는 중요한 경험을 했습니다.
멘토의 조언에 따르면 우리가 프로젝트의 완성도를 우선시한다면 MVVM을, 배움을 추구한다면 TCA를 선택해야 한다는 결론에 도달했죠.
특히, TCA를 적용할 때 우리 앞에 놓인 가장 큰 도전은 애니메이션 구현이었습니다. SNS 앱의 특성상 다양하고 매력적인 애니메이션은 필수적인 요소였지만, TCA 아키텍처 하에서 이를 구현하는 것은 시간적인 제약으로 인해 어려움이 있었어요.
결국, 우리는 팀의 의견을 모아 MVVM을 선택했습니다. 이 결정은 단지 기술적인 선택을 넘어서, 우리 팀이 어떻게 함께 성장하고, 어떻게 프로젝트를 성공적으로 이끌어갈 것인지에 대한 근본적인 질문에 답하는 과정이었어요.
MVVM을 통해, 우리는 안정적이면서도 유연한 애니메이션 구현이 가능해졌고, 팀원 간의 협력과 의사소통을 강화하는 계기가 되었습니다.
이 경험은 우리에게 단순한 기술 선택 이상의 것을 가르쳐주었어요.
서로 다른 의견을 조율하고, 각자의 성장과 팀의 목표를 조화롭게 이끌어가는 법을 말이이에요.
이 경험은 우리가 앞으로 나아갈 길에 있어서 소중한 경험이 될 것입니다.
타입 리스트 | 설명 |
---|---|
🐞 Fix | 올바르지 않은 동작(버그)을 고친 경우 |
🌊 Feat | 새로운 기능을 추가한 경우 |
✨ Add | feat 이외의 부수적인 코드, 라이브러리 등을 추가한 경우, 새로운 파일(Component나 Activity 등)을 생성한 경우도 포함 |
🩹 Refactor | 내부 로직은 변경하지 않고 기존의 코드를 개선한 경우, 클래스명 수정&가독성을 위해 변수명을 변경한 경우도 포함 |
🗑️ Remove | 코드, 파일을 삭제한 경우, 필요 없는 주석 삭제도 포함 |
🚚 Move | fix, refactor 등과 관계 없이 코드, 파일 등의 위치를 이동하는 작업만 수행한 경우 |
🎨 Style | 내부 로직은 변경하지 않고 코드 스타일, 포맷 등을 수정한 경우, 줄 바꿈, 누락된 세미콜론 추가 등의 작업도 포함 |
💄 Design | CSS 등 사용자 UI 디자인을 추가, 수정한 경우 |
📝 Comment | 필요한 주석을 추가, 수정한 경우(❗ 필요 없는 주석을 삭제한 경우는 remove) |
📚 Docs | 문서를 추가, 수정한 경우 |
🔧 Test | 테스트 코드를 추가, 수정, 삭제한 경우 |
🎸 Chore | 위 경우에 포함되지 않는 기타 변경 사항 |
🙈 gitignore | ignore파일 추가 및 수정 |