CSID-DGU / 2024-1-OSSProj-OhYeSu-05

0 stars 3 forks source link

프로젝트명

룸메이트 매칭 앱 "끼리끼리"

동국대학교 룸메이트 매칭 안드로이드 애플리케이션(Android Application)

I. 프로젝트 수행팀 개요

구분 성명 학번 소속학과 연계전공 이메일
팀장 조예림 2020111500 회계학과 융합소프트웨어 em514@naver.com
팀원 김수현 2019112426 산업시스템공학과 융합소프트웨어 kimsteven728@gmail.com
팀원 오연진 2020110869 경제학과 데이터사이언스소프트웨어 2020110869@dgu.ac.kr

Team

오연진@yonjinoh 김수현@SuHyunKKim 조예림@YeRimmm-Cho
풀스택 풀스택, 배포 풀스택

II. 프로젝트 수행 결과

1. 프로젝트 개요

1.1 개발 동기

1.2 개발 목표

1.3 최종결과물

README-001

1.4 기대 효과

효과 유형 설명
사회적 효과 - 기숙사 생활의 향상: 성향이 맞는 룸메이트 매칭을 통해 기숙사 생활의 만족도 증가.
- 사회적 네트워킹: 대학 생활 중 새로운 사회적 연결을 형성.
경제적 효과 - B2B 라이센스 모델: 학교 및 기숙사 매칭을 필요로 하는 기관에 서비스를 제공하여 수익을 창출.
- 비용 절감: 룸메이트 매칭 과정의 자동화로 인한 행정적 수고와 비용 절감.
기술적 효과 - 알고리즘 고도화: 최적의 룸메이트 매칭을 위한 고도화된 알고리즘 적용.
- 플랫폼 제공: 차단 및 채팅 기능을 포함한 통일된 플랫폼 제공으로 사용자 경험 향상.
서비스 전략 - 확장 가능성: 동국대학교를 포함한 다양한 교육 기관에서 서비스 제공 가능.

2. 프로젝트 수행 내용

2.1 프로젝트 진행과정

2.1.1 프로젝트 진행 일정

간트차트

2.1.2 업무분장
역할 담당자 주요 책임
프론트엔드 개발자 오연진, 조예림 사용자 인터페이스 설계 및 구현
백엔드 개발자 김수현, 오연진 서버 로직 및 데이터베이스 설계 및 구현
배포 담당자 김수현 배포 파이프라인 구축 및 관리, 배포 자동화 스크립트 작성
프로젝트 관리자 김수현, 조예림, 오연진 프로젝트 계획 수립 및 일정 관리
2.1.3 이슈관리

노션 칸반 보드

2.2 프로젝트 구현내용

구성 요소 설명
사용자 인터페이스 (Frontend) - UI 리소스: drawable 디렉토리
- 레이아웃 정의: layout 디렉토리의 XML 파일
- 동작 처리: Activity.kt 파일
- 데이터 클래스: 요청 및 응답을 JSON으로 직렬화
- API 통신: Retrofit 라이브러리 사용
서버 (Backend) - 웹 프레임워크: Django (Python)
- 데이터베이스: MySQL
- RESTful API: Django REST Framework (DRF)
- 실시간 채팅: Django Channels
- 매칭 알고리즘: 자카드 유사도, 유클리드 거리 계산
데이터베이스 (DB) - 사용자 정보 및 매칭 데이터 저장
- 데이터베이스 테이블로 차단 기능 구현

3. 프로젝트 자료

3.1 프로젝트 OSS 구성

OVERVEIW FileLinkage

3.2 프로젝트 주요 문서

수행계획서 제안발표자료
중간보고서 중간발표자료
최종보고서 최종발표자료
범위일정이슈관리 회의록 제품구성배포운영자료

3.3 참고자료

✔️설계 구조 참고 프로젝트: Github - ShareMate
✔️도메인 참고 프로젝트 : GitHub - 펀칭

프로젝트 이미지

4. 개발 환경 및 기술 스택

5. 프로젝트 구조

5.1 시스템 구조

시스템 구조도

5.2 ERD

Kiri (2)

6. 시작 가이드(사용 방법)


Requirements

로컬 환경에서 어플리케이션을 빌드하고 실행하려면 다음이 필요함:

* Android Studio
* MySql 8.0
* Ngrok 0.81

Installation

> git clone https://github.com/CSID-DGU/2024-1-OSSProj-OhYeSu-05.git Kiri
> cd Kiri

Backend

가상환경 생성 및 의존성 패키지 설치 -> 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 명령어; 아래사진 참고)

image

# 아래 링크 참조하여 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

Frontend

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)
}

Build

image

1. 맨 오른쪽의 망치 모양 버튼 클릭 -> app build 시작
2. build 완료 후 중간의 재생 버튼 클릭 -> 안드로이드 에뮬레이터 시작
3. 어플 자동 설치 후 실행 됨

7. 시연영상

GIFMaker_me

GIFMaker_me (1)

선호도 정보 입력 후 매칭 알고리즘 실행 및 결과 반환 https://www.youtube.com/shorts/2raDkWlSv1c

채팅 및 매칭 신청 https://www.youtube.com/shorts/YWlupyA0A_I