동국대학교 룸메이트 매칭 안드로이드 애플리케이션(Android Application)
- 수행 학기: 2024년 1학기
- 주제 분류: 자유주제
- 프로젝트명: 동국대학교 기숙사 룸메이트 매칭 시스템 "끼리끼리"
- Key Words : 룸메이트, 추천, 매칭, 기숙사 생활 만족도, 안드로이드 애플리케이션
- 팀명: 오예수
구분 | 성명 | 학번 | 소속학과 | 연계전공 | 이메일 |
---|---|---|---|---|---|
팀장 | 조예림 | 2020111500 | 회계학과 | 융합소프트웨어 | [email protected] |
팀원 | 김수현 | 2019112426 | 산업시스템공학과 | 융합소프트웨어 | [email protected] |
팀원 | 오연진 | 2020110869 | 경제학과 | 데이터사이언스소프트웨어 | [email protected] |
- 지도교수: SW교육원 이길섭 교수님, 박효순 교수님
오연진@yonjinoh | 김수현@SuHyunKKim | 조예림@YeRimmm-Cho |
풀스택 | 풀스택, 배포 | 풀스택 |
- 동국대학교 기숙사 이용 학생들을 위한 성향과 선호도 기반 맞춤 룸메이트 매칭 플랫폼 개발
- 플랫폼의 부재와 매칭 방식의 한계를 개선하기 위해 고도화된 알고리즘으로 룸메이트 매칭 서비스를 제공하는 플랫폼을 구현하고자 함
- 동국대학교 기숙사를 이용하는 학생들을 위한 안전하고 효율적인 룸메이트 매칭 서비스 개발
- 최적의 룸메이트 매칭을 통한 학생들의 기숙사 생활 만족도 향상
-
이외의 구현 기능은 최종보고서 부록에 기재
최종보고서 부록
효과 유형 | 설명 |
---|---|
사회적 효과 | - 기숙사 생활의 향상: 성향이 맞는 룸메이트 매칭을 통해 기숙사 생활의 만족도 증가. - 사회적 네트워킹: 대학 생활 중 새로운 사회적 연결을 형성. |
경제적 효과 | - B2B 라이센스 모델: 학교 및 기숙사 매칭을 필요로 하는 기관에 서비스를 제공하여 수익을 창출. - 비용 절감: 룸메이트 매칭 과정의 자동화로 인한 행정적 수고와 비용 절감. |
기술적 효과 | - 알고리즘 고도화: 최적의 룸메이트 매칭을 위한 고도화된 알고리즘 적용. - 플랫폼 제공: 차단 및 채팅 기능을 포함한 통일된 플랫폼 제공으로 사용자 경험 향상. |
서비스 전략 | - 확장 가능성: 동국대학교를 포함한 다양한 교육 기관에서 서비스 제공 가능. |
역할 | 담당자 | 주요 책임 |
---|---|---|
프론트엔드 개발자 | 오연진, 조예림 | 사용자 인터페이스 설계 및 구현 |
백엔드 개발자 | 김수현, 오연진 | 서버 로직 및 데이터베이스 설계 및 구현 |
배포 담당자 | 김수현 | 배포 파이프라인 구축 및 관리, 배포 자동화 스크립트 작성 |
프로젝트 관리자 | 김수현, 조예림, 오연진 | 프로젝트 계획 수립 및 일정 관리 |
- 안드로이드 스튜디오 활용
구성 요소 | 설명 |
---|---|
사용자 인터페이스 (Frontend) | - UI 리소스: drawable 디렉토리- 레이아웃 정의: layout 디렉토리의 XML 파일- 동작 처리: Activity.kt 파일- 데이터 클래스: 요청 및 응답을 JSON으로 직렬화 - API 통신: Retrofit 라이브러리 사용 |
서버 (Backend) | - 웹 프레임워크: Django (Python) - 데이터베이스: MySQL - RESTful API: Django REST Framework (DRF) - 실시간 채팅: Django Channels - 매칭 알고리즘: 자카드 유사도, 유클리드 거리 계산 |
데이터베이스 (DB) | - 사용자 정보 및 매칭 데이터 저장 - 데이터베이스 테이블로 차단 기능 구현 |
✔️설계 구조 참고 프로젝트: Github - ShareMate
✔️도메인 참고 프로젝트 :
GitHub - 펀칭
로컬 환경에서 어플리케이션을 빌드하고 실행하려면 다음이 필요함:
* Android Studio
* MySql 8.0
* Ngrok 0.81
> git clone https://github.com/CSID-DGU/2024-1-OSSProj-OhYeSu-05.git Kiri
> cd Kiri
가상환경 생성 및 의존성 패키지 설치 -> DB 구성 -> DB 원격 접속 허용 -> Django에 구성한 DB 정보 입력
# virtual env composing
> python -m venv [venv-name]
> ./[venv-name]/Scripts/activate
> pip install -r requirements.txt
> pip install setuptools
# DB composing
# mysql workbench에서 데이터베이스 생성 (create database 명령어; 아래사진 참고)
# 아래 링크 참조하여 MySql 원격 접속 설정
https://blife.tistory.com/19
< 참고 >
CREATE USER '<계정명>'@'%' IDENTIFIED BY '<패스워드>';
예) CREATE USER ‘kim’@’%’ IDENTIFIED BY ‘oooooooo’;
GRANT ALL PRIVILEGES ON <데이터베이스명>.* TO '<계정명>'@'%';
- MYSQL에서 생성한 connection 내의 schema(=database)를 데이터베이스명에 입력
- 계정명에는 위 명령어로 생성한 계정명 입력 예) kim
FLUSH PRIVILEGES;
# Kiri_prj/settings.py에 아래와 같은 형식으로 DB 정보 입력
DATABASES = {
"default": {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[DB table 명]',
'USER': '[DB 사용자명]',
'PASSWORD':'[DB 암호]',
'HOST': '127.0.0.1',
'PORT':'3306',
'OPTIONS':{
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}
# 가상환경 상에서 아래 코드 실행
> python manage.py makemigrations
> python manage.py migrate
> python manage.py runserver
Django 서버 주소 외부로 포워딩 -> 포워딩 주소를 API 호출에 사용할 객체가 전달될 주소로 할당
# Ngrok 설치 ( 아래 링크 참조 )
https://yunwoong.tistory.com/131
아래 명령어 ngrok 터미널에서 실행 ( Django 서버는 8000 포트가 default )
> ngrok http 8000
# Django와 Retrofit 객체 라우팅
# app\src\main\java\com\example\mytestapp\entitiy\ApiFactory.kt
# 아래 baseUrl [ngrok 실행후 포워딩 된 주소] 로 수정
object ApiFactory {
val retrofit: Retrofit by lazy {
Retrofit.Builder()
.baseUrl("[ngrok 실행후 포워딩 된 주소]")
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.build()
}
inline fun <reified T> create(): T = retrofit.create(T::class.java)
}
1. 맨 오른쪽의 망치 모양 버튼 클릭 -> app build 시작
2. build 완료 후 중간의 재생 버튼 클릭 -> 안드로이드 에뮬레이터 시작
3. 어플 자동 설치 후 실행 됨
선호도 정보 입력 후 매칭 알고리즘 실행 및 결과 반환 https://www.youtube.com/shorts/2raDkWlSv1c
채팅 및 매칭 신청 https://www.youtube.com/shorts/YWlupyA0A_I