🏫 본 프로젝트는 전주대학교
컴퓨터공학과
모바일 응용
수업의 팀 프로젝트입니다.
이름 | 담당 | Github |
---|---|---|
유종환 | Backend | https://github.com/Potato-Y |
이동수 | Client | https://github.com/dongsu0717 |
사용자의 학습 시간을 자동으로 동기화합니다. 동기화된 데이터를 동료들과 공유하는 서비스를 제공합니다.
- 실시간 통신을 통해 공부 시간 동기화
- 공개/비공개 그룹을 통해 그룹원 간의 실시간 공부 시간 공유
- 이메일 인증을 통한 대학교 인증 및 같은 학교 학생들과 공부 시간 공유
- 실시간으로 함께 공부하는 동료를 확인할 수 있습니다. 공부 중인 동료를 확인함으로써 뒤처지고 싶지 않은 심리를 유도하고, 이를 통해 높은 의지에 기여합니다.
요구사항이 충족된 기능
- 회원가입 및 JWT를 통해 사용자 인증
- 표준 WebSocket을 통해 학습 상태를 구분하고, 시간을 측정하여 DB에 기록 (Backend에 한함)
- 사용자별 공부할 과목 관리
- 대학교 이메일을 통한 대학생 인증 (인증 코드 사용)
- 공개/비공개 그룹 시스템 제공, 대학교 전용 그룹 제공
요구사항이 미충족 된 기능
- 서버의 비정상 종료 시 공부 종료 시간이 저장되지 않음 (Backend)
- 그룹원의 실시간 공부 정보를 Socket이 아닌 RestAPI로 반복 요청 (Client)
Docker
를 통해 backend 프로젝트를 구동하고 사용해 볼 수 있습니다.
본 프로젝트는 민감 정보를 분리하기 위해
resources
디렉터리가submodule
로 분리되어 있습니다. 정상적으로 의도한 작동을 위해서는 프로젝트에 포함된 Docker Compose를 활용해 주세요.
Docker
를 준비합니다.- 프로젝트를
clone
합니다.git clone https://github.com/Potato-Y/da_dogk.git
docker compose
로 앱을 빌드하고 실행합니다.docker compose up -d
80
번 포트를 통해 API를 사용할 수 있습니다. Postman API Docs를 참고해 주세요. mail과 관련된 기능은 작동하지 않습니다.
개발에 사용된 API 문서는 다음 페이지에서 확인할 수 있습니다.
https://github.com/Potato-Y/da_dogk/blob/main/backend/docs/StudySocketAPI%20Docs.md
![Untitled](https://private-user-images.githubusercontent.com/68105481/307577053-57433359-7302-46b7-ad32-0fc85dcb1dd3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwNTMtNTc0MzMzNTktNzMwMi00NmI3LWFkMzItMGZjODVkY2IxZGQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFiZmUwZDRmMTNkOGQ5ZDFlMTRiMzczNjUxZGE0MmFiNWQ3Yzg2N2YzNzZmMzlhYWE2YjBjNzllM2U5NmUxNjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nAmwh2VZoE4Il_I1Y9y6ytBq7fsX90s565bTdaJkti0)
![Untitled (1)](https://private-user-images.githubusercontent.com/68105481/307577060-35bc6d33-d290-4fd5-9b49-74922187bb33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwNjAtMzViYzZkMzMtZDI5MC00ZmQ1LTliNDktNzQ5MjIxODdiYjMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyMmIyZDY4YzcxYWM0YTFhY2VjNDc3NjBiYjZiM2RlYmM1MDBlN2VlNzgxN2YwNWE3MTRlYjVhZjAxY2VkMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.bLzhs1T3HS2vw-hSIBGO-RWHwCtPX24yTd4o_uOgOww)
![Untitled (2)](https://private-user-images.githubusercontent.com/68105481/307577066-9c3e6d5b-2127-4112-b887-42e1e4060923.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwNjYtOWMzZTZkNWItMjEyNy00MTEyLWI4ODctNDJlMWU0MDYwOTIzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUzNDJlNzUzOTI0YzM2MjJiNmJhYTFlMGNiNjNlNzQ5MWQ0NWE2MmFmNWJmMTI5ODJhMjc3NWNjYjZhNGExOGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.G6DaRQdvzRAq4vgVN2GgAhlZzODlU2NB-fyoH6ydasM)
![Untitled (3)](https://private-user-images.githubusercontent.com/68105481/307577075-06932e5c-72ef-4dfc-b9af-fc5bf0413351.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwNzUtMDY5MzJlNWMtNzJlZi00ZGZjLWI5YWYtZmM1YmYwNDEzMzUxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYxNzE0NTNlMzA4NDQyNjljMDZiYjMwOTY5YjNlZmEwMWVjYTU4MjNiZGFhODZlMTMzNzMyNzY5ZDE2NDMxNGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3kMZohOHZcSLVhPNwref8PFwvlYHAKwHx4wH0s_1o0w)
![Untitled (4)](https://private-user-images.githubusercontent.com/68105481/307577079-9007539b-b9a6-484e-9111-f5760b67425c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwNzktOTAwNzUzOWItYjlhNi00ODRlLTkxMTEtZjU3NjBiNjc0MjVjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgzYTk2ZmQ5MGQ2OTQ1NzE3MGE4ZWMwNGQ3Y2RkMWM0ZDdjOWRkM2Y1Zjc1NmY3ODgzYzdlOTAxMmIzNTEwNzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.O7Sqyy2UlxyPKXZuVI5bJrqMZV5rpvnXRFcaD4ejC3Y)
![Untitled (5)](https://private-user-images.githubusercontent.com/68105481/307577087-f559ccd9-53cf-4445-9808-999f5e311df7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcwODctZjU1OWNjZDktNTNjZi00NDQ1LTk4MDgtOTk5ZjVlMzExZGY3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4ODQzNGY1NmQ3MTk4ODlmMjcxZTNlNDQzMTQxNmVjMWJkOGE5ZTkxYjY2NTAwOTFjZTE4NjlkNTFiMWIxNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.F7BnOePePUTecj0zBD8XkFF2c43k8Y3vsAAI79R4ZEg)
![Untitled (1) (1)](https://private-user-images.githubusercontent.com/68105481/307577138-8c5391af-4443-412c-a6d3-2fc222f0639b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDA2NTUsIm5iZiI6MTczOTY0MDM1NSwicGF0aCI6Ii82ODEwNTQ4MS8zMDc1NzcxMzgtOGM1MzkxYWYtNDQ0My00MTJjLWE2ZDMtMmZjMjIyZjA2MzliLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFiMWJiZDVhZmY2ZWM5YTU0YTgwZDdkNjNjMDBmMTM4YjFmNzcwZDRkMGRmOTNmY2M3MmNjNzNiNWZjMWNmMDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Tho8Y1qwpyIWt9vXBOvBIXdUyy8nyXWApL4Nw_EA82U)