Giter Club home page Giter Club logo

perfectday's Introduction

Perfect Day

왜 내가 원하는 완벽한 일정관리 앱은 없을까? Jira처럼 칸반으로 Task를 한눈에 보고 이슈를 하나씩 처리 해나가는 멋있는 일정관리앱이 필요해!

perfectday's People

Contributors

brandnew-one avatar

Watchers

 avatar

perfectday's Issues

기획 및 와이어 프레임 생성

컨셉

  • JIRA 스타일의 플래너 제작
  • 월단위, 주단위 백로그 생성 및 관리
  • Daily 칸반 보드 생성 및 관리
  • 위치 기반, 시간 기반의 이슈 알림 생성
  • 월,주,일 별 성취도 평가 및 주 단위 스프린트에 대한 회고 작성 -> (개인적인 평가, 정량적 평가)

차후 로그인 기능을 통해 유저별 일정 및 점수 확인(검토 필요)

TODO

  • 1차 기획안 작성 -> Wiki 작성
  • 와이어 프레임 생성
    이후 공수산정 필요 (6월 이내 1차 작업 및 배포완료)

고려사항

  • 디자인
  • 다국어 처리

다국어 처리 String Resource

  • 구글 시트를 이용한 다국어 처리 관리
  • 스크립트를 이용해 구글 시트 앱 스크립트 실행 후 구글 드라이브에 생성된 .String 파일 불러오기
  • 해당 내용을 기반으로 Extension swift파일 생성

와이어 프레임

Perfect Day

왜 내가 원하는 완벽한 일정관리 앱은 없을까? Jira처럼 칸반으로 Task를 한눈에 보고 이슈를 하나씩 처리 해나가는 멋있는 일정관리앱이 필요해!

Brainstorming

  • 주요 기능
    • TODO, IN PROGRESS, DONE, SUSPEND 구분을 통한 이슈 추적 및 관리 [ v ]
    • Custom tag를 이용한 이슈 구분 기능 [ v ]
    • 일단위 보드 주단위 보드 반영되도록 설정 (주단위 <- 일단위) [ 추후 ]
    • 백로그를 이용해 이슈 생성 [ v ]
    • 이슈별 설정한 위치, 시간 기반 알림 [ v ]
    • 주단위 회고 작성 및 아카이빙 + 주단위 점수 [ 추후 ]
  • 부가기능
    • 다국어 지원 (한국어, 영어)
    • 다크모드 지원(=다크 모드 defalut)
    • 위젯 - (보드 형태 일정)

적용하고 싶은 기술

  • SwiftUI + CleanArchitecture → TCA
  • Tuist 공부 및 적용
  • Github Action, Fastlane

와이어 프레임 #2

PerfectDay 와이어 프레임-1

PerfectDay 와이어 프레임-2

Calendar 기반 Local Notification Setting

  • Notification 권한 설정
  • Noti 권한에 따른 이슈 생성 마감일 설정 기능

Notification 권한 설정을 하지 않으면 마감일 활성활 시킬 수 없도록 막는 방향으로 구현 예정

백로그

  • 이슈 생성 템플릿 정의
  • 이슈 Entity, DTO 정의
  • 이슈 생성 뷰
  • 생성된 백로그 리스트 뷰

이슈 생성 시 현재 위치, 날짜는 추후에 다른 에픽으로 생성해서 처리하기

앱 디자인

  • 앱 컬러 설정하기 - 다크모드
  • 앱 컬러 설정하기 - 라이트모드
  • 앱 아이콘 설정하기
  • 앱 이미지 에셋 설정하기

Tuist + SPM Realm 에러

Tuist + SPM 에러

Realm을 Tuist에서 제공하는 SPM으로 디펜던시를 추가해서 사용하면 Realm을 사용하는데 에러가 발생했다.

Tuist는 Swift 패키지를 패키지 형태로 가져오는게 아닌 별도의 프로젝트로 만들어서 사용하는데 이때 object-c로 구현된 모듈들을
만들어 주지 못하는 문제점이 있다고 한다.

Carthage를 사용해서 문제를 해결했다는 글이 있어 시도 했으나 실패하고 우선은 Xcode에서 지원하는 SPM 그대로 사용해서 급한대로 해결했다.

Tuist 공식문서에서는 Xcode SPM을 사용할 시 프로젝트 생성 시 캐싱 및 패키지 해결과 같은 중요한 기능에 대한 지원이 손실된다고 하는데 추가적으로 해결 방법을 찾긴해야할것 같다.

Pacakge.resolved

기존의 협업이나 회사에서는 Cocoapod을 이용해 외부 디펜던시를 관리했었는데 Xcode SPM을 통해서 외부 라이브러리를 추가하니 .Pacakge.resolved 라는 파일이 생겼는데 이 파일 역시 형상관리를 해야하는가? 에 대한 의문이 생겼다.

해당 파일은 Podfile.lock과 유사하게 외부 라이브러리들의 버전 정보를 담고 있기 때문에 협업 시 버전통일을 위해서 필요하다고 생각해서 .git에 추가했다.

프로젝트 파일안에 숨겨져 있는 것을 확인했다.

칸반 보드

  • 이슈 상태 정의
  • 이슈 상태 별 칸반 보드 구현 (탭뷰)
  • 이슈 상태 변화

Locaiton Auth 설정 관련 Tuist issue

image

현재 위와 같이 프로젝트의 info.plist 파일에 직접 위치 관련 권한을 설정하면 정상적으로 동작하지만 Tuist를 이용해서 info.plist을 만들면 정상적으로 동작하지 않는 문제점이 있다.

var infoPlist: [String: InfoPlist.Value] = [
      "CFBundleShortVersionString": "1.0",
      "CFBundleVersion": "1",
//      "UIMainStoryboardFile": "",
      "UILaunchStoryboardName": "LaunchScreen",
      "Fonts provided by application": [
        "LINESeedKR-Rg.otf", "LINESeedKR-Th.otf"
      ]
    ]

    let locationAuth: [String: InfoPlist.Value] = [
      "Privacy - Location Always and When In Use Usage Description":
        "위치 알림 서비스를 위해서는 위치 정보 동의가 필요해요",
      "Privacy - Location When In Use Usage Description":
        "현재 위치를 알기 위해서는 위치 정보 동의가 필요해요"
    ]

    locationAuth.forEach { infoPlist[$0] = $1 }

현재 위와 같이 코드를 작성하고 앱 타켓에 tuist에서 제공하는 default plist 파일에 추가해서 info.plist 파일을 생성해서 사용하도록 설정하고 있다.

info.plist파일로 정상적으로 생성되는 것 까지는 확인했으나 위치 권한이 필요한 화면에서 관련 값들이 설정되지 않았다는 오류가 발생한다.
(오타 문제는 아닙니다.ㅠㅠ)

Location 기반 Local Notificaiton

  • 위치 권한이 없는 경우, 위치 기능 비활성화
  • 초기에 현재 사용자 위치 기반 지도 활성화, 탭시 sheet로 지도 설정 기능
  • center marker를 통한 주소 표시
  • 주소 입력을 통한 위치 이동 기능

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.