SWHackathon2022-Hermes / Client-iOS

SW중심대학 공동해커톤 Hermes조

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hermes-iOS

SW중심대학 공동해커톤 2022(디지털전환을 이끄는 힘, 소프트웨어)
프로젝트 기간 : 2022.06.22(수)~ 2022.06.24(금)

휠체어 사용자를 위한 외출 보조 앱
(SwiftUI 사용)



🧑🏻‍💻 Hermes Team

Hermes는 여행자를 주관하는 신입니다. 휠체어 사용자도 어디든 여행을 떠날 수 있는 여행자가 되길 바라며, 해당 어플이 휠체어 사용자를 위한 사용자의 전령이자, 사용자의 심부름꾼이 되길 바라는 마음으로 지은 팀명이자 서비스명입니다.

메인 색상: 보라색 선정 이유: 보라색은 국제적으로 장애인 사회와 연관된 대표 색상이며, 사회 통합과 실현 가능한 변화를 촉구하는 의미를 가집니다.


정승균
(iOS Developer)

임주민
(iOS Developer)

김나연
(BackEnd Developer)

최유진
(AI Developer)

숭실대학교
유나경
(UX/UI Designer)


🌱 프로젝트 배경/목표

  • 전동휠체어 배터리가 없어져서 멈추면 혼자 있을때 아예 움직일 수가 없기 때문에 119나 경찰을 부르는 경우가 있어, 미리 가까운 급속충전기 위치를 안내해주는 것이 목표입니다.
  • 지하철을 이용하러 갈 때, 휠체어로 이동할 수 있는 길이 한정적이여서 지하철 내에 있는 휠체어 리프트의 위치를 안내해서 이용에 도움을 주는 것이 목표입니다.
  • 지하철 내에 휠체어 사용자들이 이용할 수 있는 화장실의 위치를 안내해 이용에 도움을 주는 것이 목표입니다.
  • 휠체어를 이용하다보면 고르지 않은 길과 타일에 바퀴가 잘 빠져서 혼자서 빠져나가기 힘들거나, 휠체어가 걸려 뒤로 넘어가서 위험한 일이 생기고는 합니다. 보도는 모든 사람이 이용하는 공공재로서 누구나 차별 받지 않고 이용할 수 있어야 한다는 점을 감안할 때, 해당 부분에서 도로의 타일이 튀어나와있거나 바퀴가 빠질 정도의 홈이 있는 등의 유형(type)을 선택 및 자세한 내용 작성과 사진 촬영 그리고 어디인지 위치 등록을 해서 불편을 해소해 주는 것이 목표입니다.

⚙️ 동작 방식(프로세스)

플로우 차트(IA) 보기
image
기능 명세서 보기
image

💻 개발/배포 환경

XCode Version 13.4.1 iOS 13이상

클라이언트 개발 플랫폼 : iOS
클라이언트 개발 환경 : XCode
클라이언트 개발 언어 : Swift
클라이언트 개발 프레임워크 : SwiftUI
사용한 swift 디자인패턴 : MVVM

🧑🏻‍💻 핵심 기능 구현 설명

기능 전동휠체어 급속충전기 위치 안내 지하철 휠체어 리프트 위치 안내 장애인 화장실 위치 안내
스크린샷
설명 MapKit 프레임워크 사용, 공공데이터 API를 URLSession을 활용하여 REST API 통신하여, JSON 형식의 데이터를 JSONDecoder로 파싱하여 Codable 프로토콜을 준수하는 구조체에 저장하여 활용하였습니다. MapKit 프레임워크 사용, 공공데이터 API를 URLSession을 활용하여 REST API 통신하여, JSON 형식의 데이터를 JSONDecoder로 파싱하여 Codable 프로토콜을 준수하는 구조체에 저장하여 활용하였습니다. MapKit 프레임워크 사용, 공공데이터 API를 URLSession을 활용하여 REST API 통신하여, JSON 형식의 데이터를 JSONDecoder로 파싱하여 Codable 프로토콜을 준수하는 구조체에 저장하여 활용하였습니다.

기능 휠체어가 가기 힘든 길 민원 등록 검색을 대신 해주는 챗봇
스크린샷
설명 현재 위치, 민원 유형, 상세 주소, 내용을 입력한 뒤에 첨부파일에 사진을 올려서 민원을 등록합니다. 파이썬으로 구현된 AI챗봇은 사용자의 메세지에 맞는 대답을 보냄으로써 더 편한 서비스 이용을 돕습니다.

📱 테스트 환경

Simulator Version 13.4.1 (977.2)
SimulatorKit 618
CoreSimulator 802.6.1

🧑🏻‍💻 Task분배

기능 개발 여부 담당자
LiftMap 승균
ToiletMap 승균
ChargerMap 승균
ChatBot 주민
Report 주민

📌 Foldering Convention

폴더링 컨벤션 보기
📦 Hermes
|
+ 🗂 Configuration
|
+---—--🗂 Assets
│
+--—---🗂 Extensions
│
+-—----🗂 Fonts
│
|
+ 🗂 Sources
│        
+-------🗂 Network
|
+-------🗂 View
│         └── 🗂 Map
│         └── 🗂 Toilet
│         └── 🗂 Charger
│         └── 🗂 Lift
│         └── 🗂 Report
│         └── 🗂 ChatBot
│


📌 Commit Convention

컨벤션 보기
[CHORE] 코드 수정, 내부 파일 수정, 주석
[FEAT] 새로운 기능 구현
[ADD] Feat 이외의 부수적인 코드 추가, 라이브러리 추가, 새로운 파일 생성 시, 에셋 추가
[FIX] 버그, 오류 해결
[DEL] 쓸모없는 코드 삭제
[DOCS] README나 WIKI 등의 문서 개정
[MOVE] 프로젝트 내 파일이나 코드의 이동
[RENAME] 파일 이름 변경이 있을 때 사용합니다
[REFACTOR] 전면 수정이 있을 때 사용합니다
[INIT] 프로젝트 생성

📌 깃 사용 전략

Issue -> 브랜치 생성 -> Pull받고 작업 -> Commit -> Pull -> Push -> PR -> Merge

  1. 새로운 작업이 진행 전, Pull을 반드시 진행합니다.
  2. Issue는 기능 단위로 생성합니다.
  3. Issue에 관한 Commit과 Push는 본인 브랜치로 진행합니다.
  4. PR은 모든 작업이 완료된 후 진행합니다.

커밋 컨벤션

[CHORE] 코드 수정, 내부 파일 수정, 주석
[FEAT] 새로운 기능 구현
[ADD] Feat 이외의 부수적인 코드 추가, 라이브러리 추가, 새로운 파일 생성 시, 에셋 추가
[FIX] 버그, 오류 해결
[DEL] 쓸모없는 코드 삭제
[DOCS] README나 WIKI 등의 문서 개정
[MOVE] 프로젝트 내 파일이나 코드의 이동
[RENAME] 파일 이름 변경이 있을 때 사용합니다
[REFACTOR] 전면 수정이 있을 때 사용합니다
[INIT] 프로젝트 생성

브랜치 전략

  • 브랜치는 각 feat/이슈번호-큰기능명/세부기능명으로 생성합니다.
  • ex. feat/#21-MapView/UI

📑 활용/참고정보

참고자료 보기

swift 참고자료 URLSession : https://developer.apple.com/documentation/foundation/urlsession/ JSONDecoder : https://developer.apple.com/documentation/foundation/jsondecoder/ MapKit : https://developer.apple.com/documentation/mapkit/ SwiftUI : https://developer.apple.com/xcode/swiftui/

공공데이터 정보 전동휠체어 급속충전기 운영 정보(서울교통공사): https://www.data.go.kr/data/15085994/fileData.do#/tab-layer-openapi 서울 지하철 리프트 위치(서울열린데이터광장): https://data.seoul.go.kr/dataList/OA-21211/S/1/datasetView. 수인선 장애인 화장실 위치(한국철도시설공단): https://www.data.go.kr/data/15041692/openapi.do


👩‍👩‍👧‍👦 참가자 코멘트

  • 정승균
  • 임주민
  • 김나연
  • 유나경
  • 최유진

About

SW중심대학 공동해커톤 Hermes조


Languages

Language:Swift 100.0%