Skip to content

멋쟁이사자처럼 앱스쿨1기 최종프로젝트 - Check It!

License

Notifications You must be signed in to change notification settings

ryuchanghwi/finalproject-checkit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✅ 프로젝트 소개

  • 사용자가 가입한 동아리의 출석체크를 도와주는 앱
  • 실제 동아리 활동을 하면서 겪은 불편함을 바탕으로 직접 사용하기 위해서 앱 개발이 시작 되었습니다.
  • 기획, 디자인, 개발을 모두 함께 진행했습니다.

🔗 앱 다운로드 링크

Check It !

          

  • 진행 기간
    • 개발 : 2023.01.16 ~ 2023.02
  • 출시
    • 1.0.0 : 2023.02
  • 기술 스택
    • iOS : SwiftUI, VisionKit
    • Deployment Target : iOS 16.0
    • VisionKit 프레임워크를 사용하기 위해 16버전을 사용했습니다.

⚠️Trouble Shooting

1.출석부 수정 시 네트워크 통신을 최소화하기 위한 고민

문제점

  • Firebase FireStore를 통해 서버를 구축해 사용량에 제한이 있었고, 실제로 앱 개발을 하면서 사용량을 넘어 Firebase 프로젝트를 다시 만들었던 경험이 있었습니다. 특히 정보를 수정하는 ‘출석부 수정’ 부분에는 출석부를 수정할 때마다 서버를 호출했기 때문에 사용량에 부담을 주고 있다는 것을 알게 되었습니다.

해결 방안

  • 서버에서 호출한 Published된 출석 명단 배열 값과 .onAppear 시에 @State 변수에 할당해 변화된 값을 관찰할 수 있게끔 했습니다. 또한 .onChange 메서드를 이용해 배열의 값이 변화하는 것을 비교해 버튼 활성화 여부를 결정했습니다. 출석 상태 배열의 값이 변하고 수정 버튼을 눌렀을 시, Published 된 값과 State에 할당한 배열을 비교해, 출석 상태가 변한 유저만 서버와 통신을 할 수 있게끔 했고 서버와의 통신을 최소화할 수 있었습니다.

onAppear 시 @State 변수에 서버에서 가져온 데이터 할당

        .onAppear {
            changedAttendancList = attendanceStore.attendanceList
        }

onChange 메서드를 통해 데이터 변화를 감지, 변화 된다면 버튼 활성화

        .onChange(of: changedAttendancList) { _ in
            if changedAttendancList != attendanceStore.attendanceList {
                changedAttendance = true
            }
            else {
                changedAttendance = false
            }
        }

출석부 수정 버튼 클릭 시 변화된 데이터만 서버에 요청

if changedAttendancList[index] != attendanceStore.attendanceList[index] {
    attendanceStore.updateAttendace(attendanceData: changedAttendancList[index], scheduleID: schedule.id, uid: attendanceStore.attendanceList[index].id)
}

📱 주요 화면 및 기능

🔖 온보딩, 로그인 플로우 - 앱의 설명과 앱을 사용하기 위한 소셜 로그인이 있습니다.

🔖 출석 체크 플로우 - 오프라인 장소 인근 50m에 다가가면 출석체크 버튼이 활성화됩니다. 버튼이 활성화되지 않을 경우 QR코드 스캔을 통해 출석체크가 가능합니다.


🔖 일정 확인 플로우 - 캘린더를 통해 동아리 모임의 일정을 확인할 수 있습니다.


🔖 출석 관리 플로우 - 방장은 자신의 동아리원의 출석을 직접 수정할 수 있습니다.


사용자 흐름도 및 아키텍쳐

User Flow Wire-frame Wire-frame

개발 환경

개발환경 선택한 방식
브랜치 전략 git-flow
이슈 관리 github-Issues
구조 관리 MVVM 디자인 패턴
Communication Github와 & Discord를 Webhook 연동
Design Figma
문서화 Notion

라이센스

Alamofire
- https://github.com/Alamofire/Alamofire

SDWebImage
- https://github.com/SDWebImage/SDWebImage

SwiftyJSON
- https://github.com/SwiftyJSON/SwiftyJSON

Kakao Login SDK for iOS
- https://developers.kakao.com/docs/latest/ko/kakaologin/ios

Firebase Apple Open Source Development
- https://github.com/firebase/firebase-ios-sdk
                
FirebaseUI
- https://github.com/firebase/FirebaseUI-iOS
                
AlertToast
- https://github.com/elai950/AlertToast

About

멋쟁이사자처럼 앱스쿨1기 최종프로젝트 - Check It!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%