KNU Mingle: KNU 외국인 학생을 위한 정보 공유 & 장터 커뮤니티 APP
"Mingle"은 '섞이다', '어울리다'라는 뜻으로, 다양한 배경을 가진 사람들 간의 소통과 교류를 의미합니다.
KNU Mingle은 경북대학교에 재학 중인 외국인 학생들이 서로 어우러질 수 있는 온라인 공간을 제공하고자 하는 목표를 가집니다.
- E타입 경북대에 다니는 다양한 배경의 학우들을 위한 서비스
BE | BE | FE | BE |
이민수 | 김영인 | 김현수 | 오승우 |
@ohyatt | @Youngini | @beoldshoe | @dhtmddn00 |
유튜브 링크: https://www.youtube.com/watch?v=210fm_dvD-Y
2024 대구를 빛내는 해커톤 - 3팀 라스트댄스
KNU Mingle 실행 영상입니다.
- 0:00 시작로고 화면 및 로그인
- 0:11 회원가입(중복확인, 이메일 인증번호 보내기, 인증번호 확인)
- 0:41 로그인 및 Review 등록 후 등록한 게시물 확인
- 1:11 제목, 카테고리, 날짜순, 이름 순 정렬 확인 및 타인의 게시물 수정 및 삭제 접근 금지
- 1:25 좋아요 후 날짜 순, 좋아요 순 정렬
- 1:34 리뷰 수정 후 확인
- 2:04 마켓 등록
- 2:35 마켓 제목, 국가 별 필터링
- 2:42 본인 게시물 수정 및 타인 게시물 수정, 삭제 불가
- 3:01 본인 게시물 삭제 및 댓글 등록
- 3:15 댓글 수정 및 삭제
- 3:25 지도 부분
- 3:40 가이드북
- 3:55 회원 정보 수정
- 4:09 로그아웃
- 4:11 회원 탈퇴 후 로그인 시도
- 4:19 비밀번호 재발급 이후 로그인 시도
KNU Mingle은 경북대학교에 재학 중인 외국인 학생들을 위한 맞춤형 커뮤니티 플랫폼입니다.
이 앱은 학교 생활에 필요한 다양한 정보와 물품 거래, 일상 생활에 관한 지식을 공유할 수 있는 공간을 제공합니다.
- 리뷰 게시판: 사용자는 기숙사, 학교 시설, 수업 등 다양한 키워드를 통해 소중한 경험을 공유하고, 다른 학생들의 리뷰를 쉽게 조회할 수 있습니다.
- 장터 게시판: 학생 간 물품 거래 또는 나눔 활동에 참여할 수 있는 온라인 장터를 통해 필요한 물건을 쉽게 사고팔거나 나누는 기회를 제공합니다.
- 데일리 맵: 지도에 등록된 데이터를 활용하여 일상 생활에 필수적인 정보를 직관적인 맵 마커를 통해 얻을 수 있습니다.
- 가이드: 외국인 학생들을 위한 가이드북 '한국유학의 글로벌한 첫걸음'(7개국 언어) PDF 책자를 제공하여, 외국인 학생들이 한국 생활에 빠르게 적응할 수 있도록 돕습니다.
이 서비스는 외국인 학생들 간의 네트워크를 강화하고, 보다 편리하고 원활한 학교 생활을 지원하기 위해 개발되었습니다.
-
외국인 학생들을 위한 커뮤니티 부재
- 외국 학교로 파견되는 한국인 학생들을 위한 커뮤니티(국제교류처 카페)는 활성화되어 있지만, 외국인 학생들을 위한 전용 커뮤니티는 부족합니다.
- 외국인 학생들이 학교 생활이나 한국 생활 전반에 대한 정보를 나누고, 물건을 쉽게 사고팔 수 있는 온라인 공간의 필요성이 대두되고 있습니다.
-
기존의 국내 앱 이용의 어려움
- 국내에서 널리 사용되는 앱인 에브리타임, 당근마켓, 중고나라 등은 외국인 학생들이 접근하기 어렵습니다.
- 이러한 서비스는 주로 한국어로 제공되며, 다국어 지원이 부족하여 외국인 학생들이 정보를 이해하고 활용하는 데 어려움을 겪고 있습니다.
-
KNU 버디 프로그램의 한계
- 한국인 학생(버디)이 모든 외국인 학생들의 생활 전반을 돕는 데 어려움이 있습니다.
- 특히, 외국인 학생들의 질문이나 요구 사항에 즉각적으로 대응하기 힘든 상황이 종종 발생합니다.
- 실제로 KNU 버디 프로그램에서 '같은 국적의 학생을 연결해 달라'는 요청을 받은 경험이 바탕이 되어, 외국인 학생 간의 네트워크가 중요하다는 인식이 생겼습니다.
-
실제 교환학생 경험에 기반한 필요성
- 팀원들 중 교환학생을 경험한 학생들의 의견을 바탕으로, 외국인 학생들을 위한 정보 공유 커뮤니티가 필요하다는 아이디어가 제시되었습니다.
- 이전에 사용하던 물건을 물려받거나 저렴하게 구매할 수 있는 경로가 부족하여, 파견 학생들은 새로 물건을 구매하고 단기간 사용한 후 버려야 하는 비용적, 환경적 문제가 있습니다.
- 쉽고 직관적인 UI/UX: 외국인 학생들이 앱을 쉽게 이용할 수 있도록 설계하여 사용상의 어려움을 최소화합니다.
- 외국인 학생 대상: 서비스 주요 대상을 '외국인 학생'으로 설정하고, 기본 지원 언어를 한국어가 아닌 영어로 제공합니다.
- 공공데이터 및 지도 API 활용: 지도에 표시된 마커를 통해 외국인 학생들이 한눈에 필요한 정보를 파악할 수 있도록 도와줍니다.
- 외국인 학생 가이드북 및 필수 정보 제공: 커뮤니티 기능뿐만 아니라 외국인 학생을 위한 가이드북을 통해 필수적인 정보를 제공합니다.
무분별한 계정 생성을 막기 위해 이메일 유효성 검사를 실시한다.
- 탈취에 대비하여 메일 인증번호를 암호화합니다.
- 구글 SMTP를 이용한 메일 API로 MailManager 클래스를 작성해 메일 발송 기능을 구현합니다.
- 이메일 인증을 처리하는 컨트롤러는 랜덤으로 키를 생성하여 이메일로 보내고, 키를 암호화하여 클라이언트 측으로 반환합니다.
- 사용자 측에서 이메일 확인 후 입력한 키를 암호화한 값과 클라이언트 측에서 반환받아 암호화된 키를 비교하여, 일치하면 true, 불일치하면 false를 반환합니다.
mailManager의 이메일 발송 기능을 이용해 난수를 생성하여 사용자의 비밀번호 정보를 변경한다.
그 난수로 생성한 새로운 비밀번호를 사용자의 이메일로 발송한다.
- 문화적 다양성 : 경북대학교에 재학 중인 다양한 국적의 외국인을 대상으로 하며, 각 국의 선호하는 인증 방식이 다를 수 있기 때문에, 특정한 OAuth에 의존하기 보다는 일반 로그인을 제공하는 것을 선택했습니다.
- 간편한 접근: 일반 로그인은 이메일과 비밀번호만으로 쉽게 접근할 수 있어, 기술적 장벽을 최소화합니다. 사용자들이 복잡한 OAuth 프로세스를 거치지 않고도 간편하게 서비스를 이용할 수 있습니다.
- 즉각적인 사용: 일반 로그인은 즉시 사용할 수 있어, 사용자들이 별도의 계정 생성이나 인증 절차 없이도 빠르게 서비스에 접속할 수 있게 합니다.
KNU Mingle 플랫폼에서 사용자 인증을 위해 JWT를 사용했습니다. JWT를 사용함으로써, 서버는 상태를 유지할 필요 없이 클라이언트의 요청을 처리할 수 있으며, 사용자 정보를 안전하게 전송하고 관리할 수 있습니다.
- 토큰 생성 (generateToken):
- 사용자의 이메일을 입력받아 JWT를 생성합니다. 이 과정에서 클레임 맵을 만들고, 이메일을 클레임으로 추가합니다.
- 발급 시각과 만료 시각을 설정하며, 비밀 키로 서명하여 안전성을 확보합니다. 이 메소드는 JWT를 문자열 형태로 반환합니다.
- 이메일 추출 (extractEmail):
- JWT에서 이메일 정보를 추출하는 메소드로, "Bearer "로 시작하는 경우 이를 제거한 후, 클레임에서 이메일을 반환합니다.
- 이 메소드는 클라이언트가 전송한 토큰에서 사용자 정보를 가져올 수 있게 합니다.
- 클레임 추출 (extractAllClaims):
- JWT의 모든 클레임들을 반환하는 메소드로, 서명 검증을 통해 토큰의 무결성을 확인합니다.
- 이를 통해 필요한 정보를 안전하게 접근할 수 있습니다.
- 토큰 검증 (validateToken):
- 주어진 토큰이 유효한지 확인하는 메소드로, 추출한 이메일과 제공된 이메일을 비교하고, 토큰의 만료 여부를 체크합니다.
- 인증의 신뢰성을 높이는 역할을 합니다.
- 만료 확인 (isTokenExpired):
- 토큰의 만료 시간을 확인하여, 현재 시간이 만료 시간보다 이전인지 판단합니다.
경북대학교와 한국에서의 생활에 대한 정보를 '리뷰' 형식으로 자유롭게 공유하는 게시판입니다.
'리뷰' 형식이란 제목, 본문, 이미지 등이 하나의 카드 형태로 출력되는 것을 의미합니다. 예를 들어, 쿠팡의 상품 후기나 식당 리뷰처럼 사용자 경험을 시각적으로 간결하게 보여줍니다.
- 주요 키워드 6개: Dormitory, Facility, Foods, Courses, Tips, Ects를 기준으로 리뷰를 등록하고 조회할 수 있습니다.
- 리뷰 본문과 함께 여러 장의 이미지 업로드가 가능하므로, 각 리뷰는 이미지 URL 리스트를 포함할 수 있습니다.
- 리뷰 조회자들은 해당 리뷰에 대해 Like 또는 Dislike로 평가할 수 있습니다.
외국인 학생들의 경북대학교 파견 전후로, 학생 간 물품 거래 또는 나눔 활동에 참여할 수 있는 기회를 제공하는 온라인 장터 게시판입니다.
- 일반적인 게시판과 유사한 형태로, 거래 게시글의 제목들이 목록 형태로 한눈에 쭉 나열됩니다.
- 각 게시글 제목 옆에는 거래 상태가 함께 표시되어, 본문을 보기 전에 거래 상태를 쉽게 확인할 수 있습니다.
- 거래 게시글 본문과 함께 여러 장의 이미지 업로드가 가능하므로, 각 게시글은 이미지 URL 리스트를 포함할 수 있습니다.
- 거래 게시글 조회자들은 해당 게시글 본문 아래에 위치한 댓글창에 거래 관련 메시지를 남길 수 있습니다.
- 데이터 수집:
- [대구광역시의 의료관광 선도의료기관]과 [외국환자와 언어소통 가능한 병원] 데이터를 공공데이터로부터 받아서 활용하였습니다.
- 이 데이터에는 병원의 주소와 함께 제공되는 서비스 정보가 포함되어 있어, 외국인 환자들이 필요한 의료기관을 쉽게 찾을 수 있도록 돕습니다.
- 주소 지오코딩:
getLocation
메소드를 통해 병원의 주소를 입력받아 Google Maps API의 지오코딩 서비스를 사용하여 위도와 경도를 변환합니다.- 이를 통해 각 병원의 정확한 위치를 지도에 표시할 수 있습니다.
- 데이터 매핑:
getAllLocation
메소드는 데이터베이스에서 모든 병원 정보를 조회한 후, 각 병원의 주소를 지오코딩하여 위도와 경도를 포함한 DTO 객체를 생성합니다.- 이 객체는 클라이언트에게 반환되어 지도 상에 병원 위치를 매핑하는 데 사용됩니다.
이 구현을 통해 외국인 환자들은 대구광역시에 있는 의료기관의 위치와 제공하는 서비스, 언어 소통 가능 여부 등을 쉽게 확인할 수 있습니다. Google Maps API에 매핑된 데이터는 사용자에게 직관적인 시각 정보를 제공하여, 의료기관을 찾는 데 필요한 시간을 단축시킵니다.
또한, 이 서비스는 외국인들이 한국에서의 의료 서비스를 보다 원활하게 이용할 수 있도록 지원하며, 결과적으로는 외국인 환자들이 필요한 정보를 신속하게 얻을 수 있어 의료 접근성을 높이는 데 크게 기여할 수 있습니다.
한국유학의 글로벌한 첫걸음이라는 책은 한국에서 유학하는 외국인 학생들을 위한 필수 정보를 제공하는 책자입니다.
이 책자는 교육부 국립국제교육원에서 발간되었으며, 한국 유학, 취업, 생활 정보, 그리고 부록 등 다양한 내용을 포함하고 있습니다.
이 가이드 북의 PDF 파일을 Guide 페이지에 업로드하여 사용자들이 별도의 과정없이 즉시 열람 가능하게 구현하였습니다.
- 언어 선택 기능: 사용자가 원하는 언어로 PDF를 선택할 수 있어, 각국의 학생들이 편리하게 정보를 얻을 수 있습니다.
- 실질적인 정보 제공: 의료 보험, 운전면허, 휴대폰 개통 등 한국에서 생활하는 데 필요한 실질적인 정보가 포함되어 있습니다. 이를 통해 외국인 학생들이 새로운 환경에 적응하는 데 도움을 줍니다.
- 다국어 지원: 한국어, 중국어, 일본어, 영어, 스페인어, 베트남어, 러시아어 등 총 7개 언어로 번역되어, 다양한 국적의 외국인 학생들이 쉽게 접근할 수 있도록 합니다.
- 대구 내 타 대학교 파견 학생들과의 교류 기능 확장
- 경북대학교뿐만 아니라, 대구 내 타 대학교에 파견된 외국인 학생들과의 정보 공유 및 커뮤니티 교류를 가능하게 하여 서비스 범위를 확대
- 게시물 관련 기능 추가 구현
- 게시물 번역 기능 제공
- 장터 게시글 내 비공개 댓글 기능 지원
- 게시물/댓글 내 금칙어 및 비속어 필터링 기능 구현
- 공공데이터와 가이드 데이터의 지속적인 유지보수를 통한 Daily Map 기능과 Guide 기능의 주기적인 업데이트
- ‘대구 안심음식점’, ‘대구광역시 공연/전시 안내’ API 등 다양한 분야의 공공데이터 추가 활용 예정
- 경북대학교 국제교류처 및 한국유학종합시스템, 재외 한국 공관 사이트 등으로의 바로가기 링크 추가 예정
- 국제교류처 공식 어플로서 활용
- 경북대학교 국제교류처의 공식 어플로서, KNU 버디 프로그램 등 다양한 국제교류 활동을 지원하는 플랫폼으로 기능할 수 있도록 확장