Code Monkey home page Code Monkey logo

ios10-openlist's People

Contributors

klmyoungyun avatar pminsung12 avatar seonghunted avatar wi-seong-cheol avatar yangdongsuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

pminsung12

ios10-openlist's Issues

`AddTabViewController`가 메모리에서 해제되지 않은 버그 수정

요약

AddTabViewController가 메모리에서 해제되지 않는 버그를 수정합니다.

버그 발생 로직

  1. 하단 탭에서 AddTab 버튼을 탭하여 AddTabViewController를 모달 형식으로 화면에 띄웁니다.
  2. AddTabViewController을 dismiss합니다.

버그 발생 원인 분석

  1. TabBarViewController에서 모달로 띄워야할 AddTabViewController를 프로퍼티로 참조하고 있어서 그런것 같습니다.

체크포인트

  • TabViewController가 ViewController가 아닌 Factory를 갖도록 수정

[WE2 - 1] 사용자는 동시편집 화면에서 체크리스트를 추가할 수 있다.

기능성

  • 플레이스 홀더 방식의 회색으로 보여지는 체크리스트를 선택하여 체크리스트를 생성할 수 있다.
  • 사용자는 엔터키를 눌러 체크리스트 편집을 종료하고 체크리스트를 추가할 수 있다.
  • 사용자는 화면 밖 영역을 눌러 체크리스트 편집을 종료하고 체크리스트를 추가할 수 있다.
  • 체크리스트 편집 과정 중 텍스트가 입력되지 않을 경우 플레이스 홀더 방식의 회색 체크리스트로 돌아가야한다.
  • 추가에 실패할 경우 실패 안내 메시지를 보여줘야한다.

사용성

  • 체크리스트 추가에 편의성을 위해 플레이스 홀더 방식의 회색 체크리스트가 보여진다.

효율성

  • 체크리스트의 추가는 1초이내로 반영되어야한다.

사용자 그룹

  • 회원

[AI1 - 1] 사용자는 대 > 중 > 소 카테고리를 선택하며 AI 추천을 받을 수 있다

기능성

카테고리

  • 카테고리는 대 / 중 / 소 하나씩만 선택이 가능하다.
  • 여러 개 클릭시 이전 선택된 카테고리는 언셀렉트 된다.
  • 카테고리를 선택한 경우 모든 대, 중, 소 카테고리가 정상적으로 선택이 되었는지 확인한다.

사용성

카테고리

  • 버튼 클릭 여부를 색상을 나타낸다
  • 버튼을 다시 클릭했을 때 해제가 된다
  • 카테고리 선택 진행도
  • 모든 버튼이 클릭 되었을 때 다음 버튼을 보여준다.
  • 어느 곳에서든지 건너뛰기가 가능해야한다
  • 네트워크가 연결되어 있지 않더라도 체크리스트를 작성할 수 있어야한다

효율성

네트워크

  • 연결이 확인되지 않을 때는 사용자에게 알리고 체크리스트 작성화면으로 바로 진입한다
  • AI 요청은 API 설계 이후 설정한 시간 이내로 생성되거나, 대화형으로 보여줄 수 있어야한다

사용자 그룹

  • 회원

iOS 프로젝트 추가 설정

요약

  • iOS 프로젝트 추가 설정합니다.

체크포인트

  • 프로젝트 린트 설정
  • 프로젝트 템플릿 추가

[Server] server 기본세팅

요약

  • node와 db를 docker-compose로 관리

체크포인트

  • docker - nodejs 서버 컨테이너화
  • docker - postgresql 서버 컨테이너화
  • typeorm + config .env 세팅

네트워크 모듈 구현

요약

프로젝트에 쓰이는 네트워크 모듈 구현

체크포인트

  • NetworkService 정의
  • NetworkError 정의
  • URLRequestBuilder 정의
  • RequestInterceptor 정의
  • RequestRetrier 정의
  • CustomSession 정의
  • Unit Test

[CL1 - 3] 사용자는 체크리스트의 항목을 수정 할 수 있다.

기능성

  • 체크리스트를 클릭하면 입력이 활성화된다.

신뢰성

  • 글자수는 공백 포함 30글자다.

사용성

  • 30글자를 넘을시 입력 제한
  • 입력이 활성화 되면 키보다가 자동으로 올라온다.
  • 다른 곳을 터치하거나 키보드 완료 버튼을 누르면 입력이 비활성화된다.
  • 비활성시, 입력된 글자가 없는 경우 해당 체크리스트는 삭제된다.

효율성

사용자 그룹

  • 회원

[CL1 - 4] 사용자는 체크리스트의 항목을 삭제 할 수 있다.

기능성

  • 체크리스트를 왼쪽 방향으로 밀면 오른쪽에 빨간색 삭제버튼이 나온다.
  • 삭제 버튼을 누르면 체크리스트가 삭제된다.

신뢰성

사용성

  • 삭제 버튼이 아닌 다른 곳을 누르면 삭제 버튼이 사라진다.

효율성

사용자 그룹

  • 회원

초대 링크 구현

요약

초대 링크를 만들어 동시 체크리스트 화면으로 이동합니다.

체크포인트

  • 딥링크 구현

[CL1 - 2] 사용자는 체크리스트의 항목을 추가 할 수 있다.

기능성

  • ‘선택됨’ 섹션의 마지막 요소는 ‘체크리스트를 작성해주세요.’ placeholder가 들어가 있다.
  • ‘선택됨’ 섹션의 마지막 요소에 입력을 하면 자동으로 선택되고, 하단에 새로 입력 가능한 요소가 추가된다.

신뢰성

  • 글자수는 공백 포함 30글자다.

사용성

  • 30글자를 넘을시 입력 제한
  • 입력이 활성화 되면 키보드가 자동으로 올라온다.
  • 다른 곳을 터치하거나 키보드 완료 버튼을 누르면 입력이 비활성화된다.(키보드가 내려간다)
  • 비활성시, 입력된 글자가 있는 경우 체크리스트가 추가되고 아래에 “체크리스트 추가” 회색 입력창이 생성된다.
  • 비활성시, 입력된 글자가 없는 경우 처음 상태(회색 input placeholder)로 다시 돌아간다.

효율성

사용자 그룹

  • 회원

[AI1 - 3] 사용자는 제목을 입력하여 체크리스트를 생성할 수 있다.

기능성

  • 빈 입력을 제외한 모든 입력을 가능하게 한다.
  • 빈 입력은 버튼이 비활성화 된다.
  • 제목은 최대 30자 이내(공백 포함, 글자 수, 이모지는 한 글자)에서 제한한다.
  • 제목 정보를 다음 화면으로 넘긴다.
  • 버튼을 누르면 다음 화면으로 넘어간다.
  • 버튼은 한번만 클릭이 된다.
  • 이전 화면으로 다시 돌아오면 제목 정보는 유지된다.

신뢰성

  • 빈 입력은 버튼이 비활성화 된다.
  • 글자수를 체크한다.

사용성

  • 키보드가 올라오면 제목 필드와 버튼의 위치를 조정한다.
  • 키보드가 올라갈 때 배경을 클릭하면 키보드가 내려간다.
  • return키와 버튼 모두 동일한 동작으로 진행되어야 한다.

사용자 그룹

  • 회원

[AI1 - 2] 사용자는 AI 추천을 더 받을 수 있고, 내 체크리스트로 선택해서 넣는다

기능성

추가요청

  • 체크리스트를 추가로 요청하여 받는다
  • 기존에 추천된 체크리스트는 중복으로 추천되면 안된다.

선택

  • 선택이 안 된 체크리스트는 글자색이 회색이다.
  • 사용자가 [+] 버튼을 누르면 [+] → [-]
  • 사용자가 [+] 버튼을 누르면 글자색이 검은색으로 변한다.
  • 사용자가 [+] 버튼을 누르면 [추천] → [선택됨] 섹션으로 이동한다. |

사용성

  • [추가 요구사항] 그 후 “새로 추천 받겠습니까? 크래딧 1개를 소비합니다” 알림창을 띄운다.

효율성

  • [성능 개선 필요] 정보를 가져오는 시간은 30초 이내여야 한다.

사용자 그룹

  • 회원

로그인 구현

요약

무엇에 대한 이슈인가요?

체크포인트

  • 체크포인트1
  • 체크포인트2

iOS 프로젝트 설계

요약

iOS 프로젝트 설계를 합니다.

체크포인트

  • 프로젝트 생성
  • 탭 바 설계
  • 네트워크, 소켓 라이브러리화

CRDT 구현 및 라이브러리 구현

요약

  • CRDT 알고리즘을 구현합니다.
  • 라이브러리로 만들어서 프로젝트에 붙입니다.

체크포인트

  • CRDT 알고리즘
  • 라이브러리

서버 개발환경 세팅

요약

NestJS 서버 개발환경 세팅

체크포인트

  • nest new server 명령어를 통한 개발환경 세팅
  • package manager: yarn
  • 필수 패키지 설치 : @nestjs/config class-validator class-transformer

[Server] JWT accessToken, refreshToken 구현

요약

  • POST /auth/token/access 액세스 토큰 재발급 구현
  • POST /auth/register/apple apple 회원가입 임시 구현
  • POST /auth/login/apple 애플 로그인 임시 구현

[CL1 - 6] 사용자는 체크리스트를 저장할 때 폴더를 선택한 뒤에 저장을 한다.

기능성

처음 완료 버튼 클릭시

  • 완료 버튼을 누르면 폴더 선택화면이 바텀 시트 형태로 보여진다.
  • 폴더를 선택할 수 있다.

폴더 선택 후 완료 버튼 클릭시

  • 저장 후 디테일 화면으로 이동한다.

신뢰성

폴더 선택 후 완료 버튼 클릭시

  • 체크리스트 정보를 로컬에 저장한다.
  • 로컬 저장에 상공하면 서버에 저장을 요청한다.
  • 로컬 저장이 실패하면 실패 응답을 보여준다.
  • 실패응답 ‘#실패 원인으로 인해 저장에 실패하였습니다. 잠시후 다시 시도해주세요.’

사용성

처음 완료 버튼 클릭시

  • 절반 정도 올라오고, 당기면 전체 화면
  • 완료 버튼은 한번만 눌려야 한다.

폴더 선택 후 완료 버튼 클릭시

  • 디테일 화면에서 뒤로 가면 홈으로 이동

효율성

폴더 선택 후 완료 버튼 클릭시

  • 서버에서의 응답에 상관없이 모달이 내려가고 디테일 화면으로 이동한다.

사용자 그룹

  • 회원

[WE1 - 1] 사용자는 동시편집 화면에서 체크리스트를 수정할 수 있다.

기능성

  • 체크리스트가 선택 가능해야한다.
  • 체크리스트의 텍스트를 수정할 수 있다.
  • 수정에 성공하면 체크리스트 리스트를 갱신한다.
  • 수정에 실패하면 실패 안내를 표시한다.

사용성

  • 체크리스트를 선택하면 선택한 유저가 표시되어야한다.

효율성

  • 체크리스트의 수정은 1초이내로 반영되어야한다.

사용자 그룹

  • 회원

[FD1 - 1] 사용자가 만든 폴더들을 격자 형태로 보여준다.

기능성

  • 폴더를 격자 형태로 보여준다.
  • 폴더명 / 폴더 이미지 / 체크리스트 갯수를 보여준다.
  • 폴더 이미지는 체크리스트 첫 번째의 대분류의 대표 이미지를 보여준다.
  • 체크리스트가 하나도 없으면 대체 이미지를 보여준다.
  • 폴더의 Type에 따라 개인 / 함께 / 공유로 구분한다.
  • 개인 / 함께 / 공유를 선택함에 따라 텍스트 아래의 ‘__’가 이동한다.(애니메이션)
  • 개인 / 함께 / 공유를 선택함에 따라 데이터를 리로드 한다.
  • 폴더를 누르면 체크리스트를 보여주는 화면으로 이동한다.

신뢰성

사용성

  • 사용자가 마지막으로 편집한 화면을 보여준다.

효율성

  • 체크리스트 정보를 다음 페이지에 넘긴다.

사용자 그룹

  • 회원

[Server] 테스트용 유저 API 구현

요약

  • 테스트 및 나머지 API 설계를 위한 테스트용 유저 API 구현

체크포인트

  • UsersModel 구현
  • UsersController 구현
  • UsersService 구현

[WE3 - 1] 사용자는 동시편집 화면에서 체크리스트를 삭제할 수 있다.

기능성

  • 사용자는 체크리스트를 왼쪽 방향으로 스크롤하여 체크리스트를 삭제할 수 있다.
  • 삭제에 실패할 경우 실패 안내 메시지를 보여줘야한다.

신뢰성

  • 왼쪽 방향으로 스크롤하여 체크리스트를 삭제 버튼을 제공해야한다.

효율성

  • 체크리스트의 삭제는 1초이내로 반영되어야한다.

사용자 그룹

  • 회원

[Server] winston으로 log 관리

요약

  • winston을 이용해 로깅 시스템 구현

체크포인트

  • nest-winston, winston, winston-daily-rotate-file 설치
  • winston 설정 파일 작성
  • middleware에서 모든 들어오는 요청을 로깅하고, 요청이 시작된 시간을 winston으로 파일에 기록
  • interceptor에서 요청이 완료된 후 응답을 로깅하고, 요청 시작 시간과 응답 시간의 차이를 계산하여 요청 처리 시간을 winston으로 파일에 기록
  • 결과 테스트

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.