왜 내가 원하는 완벽한 일정관리 앱은 없을까? Jira처럼 칸반으로 Task를 한눈에 보고 이슈를 하나씩 처리 해나가는 멋있는 일정관리앱이 필요해!
perfectday's Introduction
perfectday's People
perfectday's Issues
기획 및 와이어 프레임 생성
컨셉
- JIRA 스타일의 플래너 제작
- 월단위, 주단위 백로그 생성 및 관리
- Daily 칸반 보드 생성 및 관리
- 위치 기반, 시간 기반의 이슈 알림 생성
- 월,주,일 별 성취도 평가 및 주 단위 스프린트에 대한 회고 작성 -> (개인적인 평가, 정량적 평가)
차후 로그인 기능을 통해 유저별 일정 및 점수 확인(검토 필요)
TODO
- 1차 기획안 작성 -> Wiki 작성
- 와이어 프레임 생성
이후 공수산정 필요 (6월 이내 1차 작업 및 배포완료)
고려사항
- 디자인
- 다국어 처리
앱 컬러 설정하기 - 라이트모드
다국어 처리 String Resource
- 구글 시트를 이용한 다국어 처리 관리
- 스크립트를 이용해 구글 시트 앱 스크립트 실행 후 구글 드라이브에 생성된 .String 파일 불러오기
- 해당 내용을 기반으로 Extension swift파일 생성
Tuist Runscript 경로 설정 에러
와이어 프레임
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
앱 아이콘 설정
테스트
Calendar 기반 Local Notification Setting
- Notification 권한 설정
- Noti 권한에 따른 이슈 생성 마감일 설정 기능
Notification 권한 설정을 하지 않으면 마감일 활성활 시킬 수 없도록 막는 방향으로 구현 예정
이미지, 컬러 에셋 및 폰트 설정하기
이미지, 컬러 에셋 설정 #4
- Tuist를 통해서 에셋 설정 테스트 필요
- 라이트 모드, 다크 모드 설정
- 폰트 프로젝트에 테스트 용으로 설정 (추후 fix)
Issue CRUD
백로그
- 이슈 생성 템플릿 정의
- 이슈 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](https://private-user-images.githubusercontent.com/88618825/251608477-99093669-5fbd-4f9c-85b4-241a83295e11.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NzM3MjQsIm5iZiI6MTcyMTg3MzQyNCwicGF0aCI6Ii84ODYxODgyNS8yNTE2MDg0NzctOTkwOTM2NjktNWZiZC00ZjljLTg1YjQtMjQxYTgzMjk1ZTExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI1VDAyMTAyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNlOWZlZDVjNWY5NmUyMDdkNTRjZmM0YWViYTYyN2VjMjQ3OThmYTE3NWNhYzhkOTE5OTNmNmEyMWQ2MTZiZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zRtu74jpTw3X8IKU50V037v5qbq8UkvgMkMxnudy_I8)
현재 위와 같이 프로젝트의 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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.