내일배움캠프 9주차 팀프로젝트로 공유 킥보드 앱을 구현했습니다.
GitHub - mastarTrack/team2_Animality
Contribute to mastarTrack/team2_Animality development by creating an account on GitHub.
github.com
1. 프로젝트 개요
🎯 프로젝트 명 - Animality
: Animal + Mobility의 합성어로, '환상의 동물' 대여 서비스를 제공하는 어플리케이션
→ 지도에서의 동물 탐색 및 대여 기능, 이용 내역 관리 기능 탑재
→ 공동의 재화를 공유하고 빌려쓴다는 점에서 과제 구현의 재미를 더하기 위해 단순한 이동 수단이 아닌 환상의 동물들을 대여할 수 있다는 설정을 추가
→ 학습을 위한 프로젝트이므로 공동의 재화(동물)을 제공하는 서버를 별도로 두지 않고 '사용자 = 운영자'의 형태로 재화 등록 및 삭제 기능 제공
🗓️ 프로젝트 기간: 2026.02.26 ~ 03.06.
🛠️ 기술 스택
| 개발 언어 | Swift | |
| Architecture | MVVM | |
| Local Storage | UserDefaults, CoreData | |
| API | 네이버 지도, 네이버 검색(지역, 이미지) | |
| Library | SnapKit, Then | UI |
| Alamofire, Kingfisher | Network | |
| NMapsMAp, NMapsGeometry | API SDK | |
| 협업 도구 | Github |
🙋🏻♀️ 담당 분야
<로그인 화면 / 회원가입 화면>
- UI 구성
- 회원가입 이메일 형식 유효성 검사 로직
<지도 화면>
- UI 구성
- 네이버 지도 API 활용
- 동물 등록 / 삭제 기능에 따른 동물 마커 생성 및 제거 로직 연동
- 주소 검색 기능 구현
- 지도 위치 이동 기능 구현
2. 화면 설명
1) LoginView / UserRegisterView


1️⃣ LoginView
: 로그인 성공 시 메인 화면 진입
: 로그인 기록 존재시 기본값 설정
2️⃣ RegisterView
: 이메일 형식 유효성 검증 기능
: 가입 성공 시 알림 팝업 노출 및 UserDefaults에 유저 정보 저장
2) MapView - Main


1️⃣ 검색 및 필터링 기능
: 키워드 입력을 통한 주소 검색 기능
: 검색 결과 선택 시 해당 위치로의 지도 이동
2️⃣ 현재 위치 이동 기능
: 원형 버튼 클릭 시 현재 위치로 지도 이동
3️⃣ 마커 표시 기능
: 등록된 동물 마커 표시 기능
: 마커 클릭 시 해당 좌표의 동물 목록 시트 뷰 노출
3) MapView - Sheet


1️⃣ 좌표별(마커별) 동물 목록 표시
: 해당 좌표에 등록된 동물 목록 표시
: 대여 가능 동물을 상단에 표시
2️⃣ 결제 화면으로의 이동
: 동물 셀 선택 시 결제 화면 이동
: 결제 시 동물 상태 업데이트 - 시트에 표시되는 동물 목록 갱신
3) PaymentView


1️⃣ 대여 시간 선택 / 계산
: UIDatePicker를 활용한 시작 / 종료 시간 선택
: 분 단위는 올림하여 시간으로 계산 - 1시간 10분 → 2시간으로 적용
2️⃣ 결제 완료 처리
: 영수증 생성
: 동물 상태 '대여중' 변경
: 결제 완료 팝업
4) RegisterView


1️⃣ 동물 정보 입력
: 모든 입력값 검증 시 등록 버튼 활성화
2️⃣ 동물 정보 저장
: 등록 성공 시 CordData에 정보 저장
5) MyPageView


1️⃣ 이용 내역
: 사용자의 이용 내역 표시
2️⃣ 사용자 정보
: 사용자 정보 표시 및 수정 기능
: 상단 로그아웃 기능
: 등록 동물 삭제 기능
3. 시연 영상
'내일배움캠프 > Kickboard - Animality' 카테고리의 다른 글
| [트러블 슈팅] UICollectionView 상단에 여백 주기 (0) | 2026.03.11 |
|---|---|
| [트러블 슈팅] UICollectionView Cell deque시 NSAttributedString 생성 불가 현상 (0) | 2026.03.11 |
| [트러블 슈팅] UIButton의 isHighlighted 미해제 (0) | 2026.03.10 |
| [의사결정 기록] API Key 은닉화 방법 선택하기 (0) | 2026.03.10 |
| [의사결정 기록] 아키텍처 패턴 선정하기 (0) | 2026.03.10 |