Giter VIP home page Giter VIP logo

20th-ios-team-1-fe's People

Contributors

hani-levenshtein avatar hj56775 avatar k-nh avatar toastmeister1 avatar

Stargazers

 avatar  avatar

Forkers

junsubenkim k-nh

20th-ios-team-1-fe's Issues

[Feature] Auth - 견주 프로필 사진 가져오기

요약 💽

견주 프로필 사진을 가져오기

배경 🌴

x

목표 ⭕️

  • 인증 파이프라인에서 견주의 프로필 사진을 가져올 수 있다
  • 가져온 사진을 유저 정보에 저장하기
  • 사진을 동그랗게 보여주기

목표 ❌

사진 수정 기능
카메라로 찍어서 올리는 기능

계획 ✈️

UIPickerViewController를 통해 사진 가져오기
사진 접근 권한 허용
프로필 이미지의 masksToBounds, ClipsToBounds 등을 이용하여 동그랗게 만들기

[Feature] Gather - 모임 탭 첫 화면 UI 구성

요약 💽

모임 탭의 첫 화면인 모임 리스트 구성 및 Cell에 들어갈 View 생성

배경 🌴

찾기 탭에서 모임 리스트 Cell 안의 View 재사용을 위해 View 따로 구성

목표 ⭕️

  • 모임 리스트 UI 생성
  • 모임 리스트 Cell에 들어갈 View UI 생성

목표 ❌

모임 리스트 관련 네트워크 요청 및 처리

계획 ✈️

  • 모임 리스트에 들어갈 데이터 구조체 생성

[Feature] 나이, 성별 체크 화면 추가

요약 💽

닉네임 입력 후 나이를 입력하고 성별을 선택하는 화면으로 이동

배경 🌴

x

목표 ⭕️

나이, 성별 화면 추가

목표 ❌

나이 범위 제한하기
활동 지역 화면으로 넘어가기

계획 ✈️

Profile에서 닉네임 중복 검사 통과하면 다음 버튼 활성화
다음 버튼 누르면 나이 화면 이동
나이와 성별 입력하면 다음 버튼 활성화

[Feature] MyPage - UI 수정

요약 💽

삭제, 수정, 추가된 UI 반영

배경 🌴

UI 변경

목표 ⭕️

  • 로그아웃, 탈퇴 AlertSheet 구현
  • 사용자 자기소개 페이지 화면 전환 구현
  • 반려견이 존재하지 않을 때의 빈화면 구현

목표 ❌

  • 로그아웃, 탈퇴 API 연동

계획 ✈️

[Feature] 모임 리스트 - 데이터 연동

요약 💽

모임 리스트 API 연동

배경 🌴

유저의 참여중, 내가 만든, 종료된 모임 리스트 정보 필요

목표 ⭕️

모임 리스트 도메인 및 DTO 모델 생성
네트워킹 처리
구현한 UI에 데이터 바인딩

목표 ❌

x

계획 ✈️

Rx로 데이터 처리

[Feature] Auth - 애플 로그인 구현

요약 💽

서버를 고려하여 애플 로그인을 구현

배경 🌴

서버에게

목표 ⭕️

  • 애플 로그인 구현
  • 키체인에 Token을 저장

목표 ❌

로그아웃 구현
자동로그인 구현
edge-case 대응하기

계획 ✈️

애플 버튼을 눌러 identityToken을 얻어오기
소셜 로그인 API에 회원가입 요청하기

[Feature] Auth - 유저 인증 파이프라인 완성

요약 💽

애플로그인부터 서버에 유저 정보를 보내는 것 까지 구현

배경 🌴

현재 구현을 위해 애플로그인 전후로 bool값을 이용하여 구별

목표 ⭕️

애플로그인부터 투개더 시작하기 화면까지 연결
투개더 시작하기를 누르면 서버에 유저 정보를 전송

목표 ❌

발생하는 모든 엣지케이스
약관 확인 화면 구현, 연결

계획 ✈️

코디네이터 패턴을 선 구현
투개더 시작하기에서 서버에 유저 정보를 보내서 성공하면 탭바로 이동하기

[Feature] 공통 - 런치스크린 만들기

요약 💽

런치스크린에 개사진 보여주기

배경 🌴

x

목표 ⭕️

  • 런치스크린 투개더 로고와 로그인 화면 투개더 로고를 일치시킨다

목표 ❌

자동로그인

계획 ✈️

피그마에 노란색 개사진이 에셋으로 쓰기 적당해보임

[Feature] Auth - 개인정보취급방침, 서비스이용약관 화면 생성

요약 💽

개인정보취급방침, 서비스이용약관 화면 생성

배경 🌴

x

목표 ⭕️

  • 개인정보취급방침 화면
  • 서비스이용약관 화면
  • 화면 연결하기

목표 ❌

x

계획 ✈️

약관동의 체크 화면에서 하이퍼링크로 연결
UIScrollView로 작은 화면 대응하기
UITextView로 줄글 보여주기
NavigationItem 타이틀 보여주기

[Feature] MyPage - 마이페이지 메인 Scene 구성

요약 💽

마이페이지 UI 구현

배경 🌴

마이페이지를 통해 사용자의 정보 설정

목표 ⭕️

  • 마이페이지 메인 Scene UI 구성
  • 사용자 상태별 다른 UI 구성

목표 ❌

네트워크 처리

계획 ✈️

스웨거를 참고하여 네트워크 모델 생성

[Feature] MyPage - 자기소개 페이지 구현

요약 💽

자기소개 등록 페이지 구현

배경 🌴

사용자의 자기소개 등록을 위함

목표 ⭕️

  • 자기소개 페이지 화면 구현
  • API 연동

목표 ❌

x

계획 ✈️

[Feature] KeyChain Persistence 객체 생성

요약 💽

KeyChain에 접근할 수 있는 객체 생성하기

배경 🌴

애플/카카오 로그인의 AccessToken과 RefreshToken을 디바이스에 저장해야 할 필요가 있음
Token의 탈취를 예방하기 위해 보안이 강조된 Persistence에 저장할 필요가 있음

목표 ⭕️

  • KeyChain에 접근할 수 있는 객체 생성
  • Persistence에 영향을 주지 않는 테스트 코드 작성

목표 ❌

  • 애플/카카오 로그인의 AccessToken, RefreshToken 연동
  • 도메인에서의 에러 핸들링

계획 ✈️

KeyChain의 CRUD 메서드를 위한 Wrapper 클래스 생성
외부에서 KeyChain Persistence 모듈을 사용하기 위한 프로토콜 도입

[Feature] Auth - 유저 등록하기

요약 💽

투개더 시작하기 버튼 눌렀을 때 서버에 유저를 등록하기

배경 🌴

x

목표 ⭕️

버튼을 눌렀을 때 200 응답을 받는다

목표 ❌

자동 로그인

계획 ✈️

multipart/form-data에 대한 학습이 선행되어야 함.
버튼을 누르면 유저 등록에 성공했을 때만 탭바로 이동하기

[Feature] Search - MapKit과 CoreLocation을 이용한 SearchScene 구성

요약 💽

MapKit과 CoreLocation을 이용하여 Search Scene의 첫 화면인 지도화면 구성하기

배경 🌴

MapKit을 이용하여 모임과 사용자의 위치를 보여줄 필요가 있음
CoreLocation을 이용하여 현재 사용자의 위치를 받아올 필요가 있음

목표 ⭕️

  • 위치 정보 접근 권한 요구
  • MKMapView 초기 상태 설정
  • MKAnnotationView를 이용한 MKMapView에 핀 표시

목표 ❌

  • 서버로의 모임 리스트 요청
  • MKAnnotationView 터치 시 Bottom Sheet 활성화

계획 ✈️

식별자(PK), 좌표(위도, 경도), 모임 종류만을 포함한 MapView에서 사용할 구조체 생성
위치권한 여부에 따라 서울시청 또는 사용자의 현재 위치로 MKMapView 시점 설정

[Feature] 공통 - 화면 전환 로직 정하기

요약 💽

화면 전환 로직을 분리한다

배경 🌴

화면 전환 시 다른 화면에 대한 의존성 존재

목표 ⭕️

뷰컨트롤러 간 의존성 제거

목표 ❌

테스트 측정 대상에서 화면 전환 로직 제외하기
완벽한 Rx 도입

계획 ✈️

RxFlow, Coordinator, Router 등을 고려하여 설계
현재 예시로 구성된 Coordinator를 변경

[Feature] 공통 - 커스텀 폰트 설정

요약 💽

커스텀 폰트 설정

배경 🌴

디자인에서 설정한 커스텀 폰트 적용

목표 ⭕️

  • 리소스에 커스텀 폰트 넣기
  • info.plist 파일에 폰트 파일 등록
  • UIFont Extension 생성

목표 ❌

계획 ✈️

[Feature] Auth - 활동 지역 선택 시 화면 어둡게 만들기

요약 💽

활동 지역 선택 시 화면 어둡게 만들기

배경 🌴

x

목표 ⭕️

  • 대도시 선택 시 화면 어둡게 만들기
  • 소도시 선택 시 화면 어둡게 만들기

목표 ❌

x

계획 ✈️

dim out을 적용하는 방법을 알아봐야함
PickerView가 올라오고 내려오는 시점과 동일하게 bindAction, bindState 적용
(단, 현재 PickerView가 디자인과 다르게 회색이기 때문에 적용하지 않을 수 있음)

[Feature] Search - BottomSheet 터치 시 모임 상세 화면으로 이동

요약 💽

BottomSheet를 선택하면 모임 상세 화면으로 이동한다.

배경 🌴

x

목표 ⭕️

  • 화면 전환 시 모임 정보 주입

목표 ❌

계획 ✈️

  • 모임의 식별자만을 주입해 모임 상세 화면 생성 시 해당 식별자를 통해 서버에 요청할 수 있도록 한다.

[Feature] Auth - 닉네임 등록화면 키보드 띄우기

요약 💽

닉네임 등록화면 텍스트필드 키보드 띄우기

배경 🌴

시뮬레이터에서는 실제 키보드를 이용해서 타이핑할 수 있는데 시뮬레이터 내부에서 키보드가 안뜸

목표 ⭕️

  • 시뮬레이터에서 키보드를 띄우기
  • 키보드 외 다른 부분을 탭했을 때 키보드 내려가기
  • 키보드 완료 버튼 눌렀을 때 키보드 내려가기
  • 키보드가 텍스트필드를 가리지 않게 만들기

목표 ❌

x

계획 ✈️

키보드 잘 모름;; 공부해야됨.. 노티쪽인듯?

[Feature] 공통 - Keychain Token 확인 기능

요약 💽

키체인에 토큰이 없다면 재발급 요청을 하여 토큰을 저장할 수 있다

배경 🌴

네트워크 요청 시 RefreshToken으로

목표 ⭕️

AccessToken와 RefreshToken 분기처리를 통해 항상 AccessToken을 발급받을 수 있도록 한다

목표 ❌

AccessToken의 expire를 고려하기

계획 ✈️

시나리오를 구성하는 UseCase를 구현
accessToken을 먼저 키체인에서 찾고
없으면 refreshToken으로 서버에서 새로 토큰을 발급받아 키체인에 저장
키체인유즈케이스에 accessToken을 요청한 모듈에게 새로 발급받은 accessToken을 돌려주기

[Feature] 공통 - 서버와 통신할 Network 모듈 생성

요약 💽

서버와 통신할 수 있는 모듈을 생성한다

배경 🌴

백엔드에 다른 유저와 소통할 수 있는 데이터가 저장되어 있기 때문에 URLSession 관련 모듈이 요구됨

목표 ⭕️

  • 실제 네트워킹을 하지 않는 테스트 코드 작성
  • 비동기 처리를 RxSwift를 이용
  • 생성된 모듈에 관한 추상화
  • 네트워킹을 위한 Encode/Decode를 해당 모듈에서 지원하지 않기
  • 서버에 요청하기 위한 APIKey 은닉화

목표 ❌

실제 네트워크 요청을 할 객체 생성
네트워크 에러와 HTTP Method의 모든 시나리오 대응

계획 ✈️

테스트를 위해 URLSession을 주입할 수 있는 형태로 만들기
RxSwift 6에 도입된 Single의 Result 타입 지원 활용하기

[Feature] Common - Network 관련 모델, HTTPHeader 추가

요약 💽

네트워킹을 하기 위한 공통 헤더와 공통 모델을 생성하기

배경 🌴

네트워크 요청을 할 때 공통적으로 AccessToken 등의 헤더가 요구됨

목표 ⭕️

새로 생성된 모임 API까지 다룰 수 있는 모델을 포함하여 생성

목표 ❌

URL에 붙을 parameter 지원

계획 ✈️

swagger-ui 링크를 토대로 네트워크 모델을 생성하기
HTTPHeader와 URL 관련하여 Enum을 생성

[Feature] Auth - Token을 통해 자동로그인하기

요약 💽

자동로그인을 지원한다

배경 🌴

회원 가입을 해도 자동로그인을 지원하지 않으면 항상 로그인 화면을 마주하게 됨

목표 ⭕️

  • 앱의 EntryPoint에서 로그인 여부를 확인하고 자동로그인
  • 로그아웃을 했거나 아직 가입한 적이 없다면 로그인 화면 보여주기

목표 ❌

계획 ✈️

Keychain에 저장된 Access Token과 Refresh Token을 Read
Access Token의 Payload를 확인 후, 지나지 않았다면 Access Token을 Header에 넣어 Request
지났다면 Refresh Token의 Payload를 확인 후, 지나지 않았다면 Refresh Token을 Header에 넣어 Request
Refresh Token을 이용하여 Access Token을 재발급 받았다면 Keychain에 Update

위 과정을 UseCase를 만들어 시나리오 작성

[Feature] 모임 생성

요약 💽

모임 생성 페이지 만들기

배경 🌴

x

목표 ⭕️

  • 모임 생성 UI
  • 모임 생성 API 연동

목표 ❌

x

[Feature] 모임상세 - 화면 생성

요약 💽

댓글 기능을 제외한 모임 상세 화면을 생성

배경 🌴

x

목표 ⭕️

  • 모임 제목 및 시간 보여주기
  • 견종, 견주 정보 보여주기
  • 모임 위치 지도로 보여주기
  • 참여 인원 보여주기

목표 ❌

모임 댓글 보여주기

계획 ✈️

모임 상세 화면으로 들어올 때 모임 정보를 주입받기
주입받은 모임 정보를 이용하여 서버에 상세 모임 정보 요청
해당 정보를 통해 UI 반영

[Feature] MyPage - 마이페이지 정보조회 API 연동

요약 💽
마이페이지 정보조회 API 연동

배경 🌴
마이페이지에 유저의 프로필 정보 및 펫 정보 필요

목표 ⭕️

  • 유저 및 펫 Entity 생성
  • 네트워킹 처리
  • 구현한 UI에 데이터 바인딩

목표 ❌
x

계획 ✈️
DataSource 대신 Rx로 데이터 처리할 예정

[Feature] Auth - 활동 지역 선택 화면 생성

요약 💽

활동 지역을 선택할 수 있도록 만들고, 탭바로 넘어가게 만들기

배경 🌴

x

목표 ⭕️

  • 활동 지역(대도시, 소도시)를 선택할 수 있도록 만들기
  • 서버에 유저 정보 보내기
  • 탭바로 이동하기

목표 ❌

  • Coordinator 적용

계획 ✈️

만들어둔 Enum을 통해 유저 정보를 업데이트
대도시와 소도시를 선택할 경우 다음 버튼을 활성화
다음 버튼을 누르면 서버에 데이터를 전송, 탭바로 화면 전환

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.