/20230105-hackathon-lab09

멋쟁이사자처럼 앱스쿨1기 해커톤 - Starcket

Primary LanguageSwiftMIT LicenseMIT

Starcket 🌠

iOS Swift Xcode Firebase KakaoTalk

⚖️ 앱 소개

소개

해 마다 버킷리스트 작성을 돕고 해마다 버킷리스트를 기록하여 나의 버킷리스트 달성율을 보여주는 서비스

필요성

- 새해가 시작되면서 작년을 되돌아보거나 앞으로의 1년을 계획할 기회가 많지 않다.
- 한 해를 보내면서 연초에 계획한 일들을 하나둘씩 실천하고 있는지에 대한 여부도 확인하기 쉽지 않다.
- 시간은 기다려주지 않으므로 '내가 살아가면서 이뤄가고 싶은 것들을 정리하고 기록'해 나갈 필요가 있다.

특징

- 1년 단위로 버킷리스트를 작성하고 기록한다. (1월 1일에 작성)
- 잘 해내고 있는지 분기마다 푸쉬 알림(로컬)을 보내준다.
- 포근하고 귀여운 디자인

기대효과

- 알찬 1년을 보낼 수 있다.
- 매년 성장해나가는 나를 볼 수 있다.
- 기능이 간단하면서도 귀엽고 포근한 디자인으로 접근성을 높일 수 있다.

👨‍👩‍👧‍👦 참여자

팀 목표 : 이력서 프로젝트 개발 쓸만한 본인의 개발을 해보자
김건형 김수현 박민주 박희경 신현준 윤소희 이지연 홍수만
움직이자! 기획대로 생일날 대상 알차고 예쁜 깔끔한 코드 데이터 전달 재미있게 완성도 있게
김건형 김수현 박민주 박희경 신현준 윤소희 이지연 홍수만

📚 실행 가이드 및 설치 방법

설치 파일 목록

  • ❗️❗️아래 2가지 파일은 필수 파일임으로 파일을 요청해주세요.
- Config.xcconfig           // KaKaoSDK 
- GoogleService-Info.plist  // Google, FireBase

1. 카카오톡 로그인을 위한 사전작업
  • config 파일을 Starcket 폴더에 추가한다.
    • config.xcconfig 파일 안에는 KAKAO_NAVTIVE_APP_KEY // 네이티브 앱 키가 들어있다.

  • info 파일에 Information Property List에 하단의 내용들이 잘 들어가 있는지 확인
    • LSApplicationQueriesSchemes 에 item 0, item1에 각각 kakaokompassauth, kakaolink 넣기
    • KAKAO_NAVTIVE_APP_KEY에 ${KAKAO_NAVTIVE_APP_KEY}를 넣기
    • App Transport Security Settings에 Allow Arbitrary Loads 가 NO라고 되어있는지 확인

  • Starcket
    • PROJECT의 Info

      • Configurations의 각각 Debug, Release 안에 있는 2개의 파일 모두 Config로 설정
    • TARGETS의 Info

      • URL Types을 펼쳐 URL Schemes에 kakao{KAKAO_NAVTIVE_APP_KEY} 가 들어있는지 확인

2. 구글 로그인을 위한 사전 작업
  • GoogleService-Info.plist를 프로젝트에 추가
    • plist 추가 후 REVERSED_CLIENT_ID의 값을 복사

  •  Starcket
    • TARGETS의 Info
      • URL Types를 펼쳐 URL Schemes에 REVERSED_CLIENT_ID이 들어 있는지 확인
⚙️ 개발 환경
  • iOS 16.0 이상
  • iPhone 14 Pro에서 최적화됨
  • 다크모드지원
  • 가로모드 미지원
⚒️ 활용한 기술
  • FireStore
  • FireBaseAuth
  • GoogleSignIn
  • KakaoOpenSDK
  • APNs

💻 주요기능

  • 달성한 버킷리스트 밤하늘
  • 버킷리스트 목록
  • 버킷리스트 달성율
  • 마이페이지 (계정 관리, 다크모드)
  • 위젯 기능

📱 스크린샷

실제 앱 구동화면입니다
스플래시 화면 달성한 버킷리스트 밤하늘 버킷리스트 목록 버킷리스트 달성률
드래그 제스처 애니메이션

🤝 협업 방법

코드 컨벤션

- [Feat] 새로운 기능 구현
- [Chore] 코드 수정, 내부 파일 수정, 주석
- [Add] Feat 이외의 부수적인 코드 추가, 라이브러리 추가, 새로운 파일 생성 시, 에셋 추가
- [Fix] 버그, 오류 해결
- [Del] 쓸모없는 코드 삭제
- [Move] 파일 이름/위치 변경

깃 브랜치

  • feat/큰기능명/세부기능명
예시)
feat/tap1/home
feat/tap2/list
feat/etc/faceID

폴더링 컨벤션

📦 starcket
| 
+ 🗂 Configuration
|         
+------🗂 Constants   // 기기의 제약사항: width, height를 struct로 관리
│         
+------🗂 Extensions  // extension 모음
│         
+------🗂 Fonts       // 폰트 모음: 무료 폰트인 Pretendard 사용
|
+------🗂 Modifiers   // modifier 모음
│         
+ 🗂 Sources
|
+------🗂 Models      // Json을 받기 위한 Hashable, Codable, Identifiable 프로토콜을 체택한 struct 관리
│         
+------🗂 Store     // ObservableObject을 체택하여 네트워크 관리
|
+------🗂 Views       // 여러 View를 모음
        |
        +------🗂 Welcome       // SignIn / SignUp
        |
        +------🗂 Splash        // Splash View
        │         
        +------🗂 Home          // Tab 1
        |
        +------🗂 BucketList    // Tab 2
        |
        +------🗂 Analyze       // Tab 3
        │         
        +------🗂 MyPage        // Tab 4
        |
        +------🗂 Notification  // Local 알림
        |
        +------🗂 ETC.          // 여분의 View 등

🔥 처음 목표

  • 김건형 : 로티 넣기. 애니메이션 사용하기. 생동감 있는 앱을 만들고 싶다. 시간을 줄이기 위해 로티를 사용
  • 김수현 : 힐링하러 왔다. 하면 제대로 할 것. 기획대로 완성하기.
  • 박민주 : 애니메이션. 수상하기. 엄청 간단한 기능인데 사용자가 우와 할 정도.
  • 박희경 : 당장 앱스토어에 내놔도 바로 배포 가능한 수준. “알차고 예쁜” 코드 구조화. 모듈화 잘 하기. 대상
  • 신현준 : 동작하고 깔끔한 코드 작성하기. 대상
  • 윤소희 : 어,, 음,, 뷰들 간 데이터 전달 매끄럽게 코드 정리. 수상하다 ~
  • 이지연 : 재밌게 해커톤 끝내기. 포폴에 적을 정도의 수준 (높은 완성도). 디자인 & 컨셉. 앱의 확실한 정체성 설정
  • 홍수만 : 짧은 시간이지만 완성도 있는 앱 만들기. 재밌게 하는 게 좋긴 한데 여러분들이 원하신다면 맞추겠습니다.

라이센스

starcket is available under the MIT license. See the LICENSE file for more info.