- 사용자가 가입한 동아리의 출석체크를 도와주는 앱
- 실제 동아리 활동을 하면서 겪은 불편함을 바탕으로 직접 사용하기 위해서 앱 개발이 시작 되었습니다.
- 기획, 디자인, 개발을 모두 함께 진행했습니다.
- 진행 기간
- 개발 : 2023.01.16 ~ 2023.02
- 출시
- 1.0.0 : 2023.02
- 기술 스택
- iOS : SwiftUI, VisionKit
- Deployment Target : iOS 16.0
- VisionKit 프레임워크를 사용하기 위해 16버전을 사용했습니다.
- 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