Skip to content

Latest commit

 

History

History
207 lines (168 loc) · 9.42 KB

README.md

File metadata and controls

207 lines (168 loc) · 9.42 KB

BookChat - Android

bookchat_introduce

What is BookChat?

  • 책의 난이도가 자신과 맞지 않는 사용자

  • 책의 특정 부분이 이해되지 않는 사용자

  • 책에 대한 자신의 생각을 다른 사람들과 나누고 싶은 사용자

  • 한 책을 같이 스터디 할 수 있는 환경이 필요한 사용자

이런 사용자들이 모여 책의 특정 부분에 대해 독서 토론 혹은 질문을 채팅으로 나눌 수 있는 플랫폼


Challenge Goal

  • Coroutine을 이용한 비동기작업 (도전)
  • 적절한 애니메이션 UI 제작 (도전)
  • MVVM 모델 (도전)
  • 기기 OS버전별 분기 작업 (도전)
  • Clean한 Code (도전)
  • 오직 터미널을 이용한 Git 사용 (도전)
  • Figma를 이용한 앱 디자인 (도전)
    • 도전했다가 디자이너님 영입 후 디자인 수정

Commit Message

  • feat (feature) : 새로운 기능에 대한 커밋
  • fix (bug fix) : 버그 수정에 대한 커밋
  • config (configuration) : 설정 정보에 대한 커밋
  • docs (documentation) : 문서 수정에 대한 커밋
  • style (formatting, missing semi colons, …) : 코드 스타일 혹은 포맷 등에 관한 커밋
  • refactor : 코드 리팩토링에 대한 커밋
  • test (when adding missing tests) : 테스트 코드 수정에 대한 커밋
  • chore (maintain) : 그 외 자잘한 수정에 대한 커밋

Tech Stack

구분 Tech
Language Kotlin
Architecture MVVM, Clean-Architecture, Multi-Module
Network Retrofit2
DataBase Room, DataStore
Asynchronous Coroutine, Flow
DI Dagger-Hilt
Serialization Kotlinx-Serialization
Build Version Catalog, Precompiled-Script-Plugin
ETC OAuth, OIDC, FCM, Glide, Stomp, WebSocket, Krossbow

Module Dependency Graph

Abstract

bookchat_abstract_dependency_graph


Detail (크게보기)

project dot



ScreenShots


Primary Feature summary

  • WebSocket을 이용한 다수 사용자가 참여할 수 있는 오픈 채팅방
    • 소켓 끊김 사이에 발생한 채팅방 변경사항 및 채팅 동기화 기능
    • 전송 실패한 채팅 자동 재전송 기능
    • 방장/ 부방장 권한 위임 및 박탈 기능
    • 유저 강퇴 기능
    • ID 매핑 방식을 통한 서비스 내 유저 닉네임 변경 시 모든 메시지에 실시간 반영
    • RoomDB를 이용한 채팅방 및 채팅 Offline Data 구성
    • 채팅 내 상하 방향 Paging 기능
    • 주요했던 채팅을 이미지로 저장할 수 있는 채팅 캡처 기능
  • FCM을 이용한 채팅 Notification
  • 단일 기기만 허용하는 서비스 구조
    • FCM을 이용한 강제 로그아웃기능
  • OAuth2.0를 이용한 Google/ Kakao 소셜로그인
  • JWT 토큰을 이용한 유저 인가 (Authorization)
    • OIDC를 통해 가져온 유저정보를 바탕으로 만든 서비스 자체 JWT 토큰
    • OkHttp3의 Http Interceptor를 이용한 토큰 자동 갱신
    • KeyStore에 저장된 Key를 이용한 토큰 대칭키 암호화
  • 도서, 채팅방 검색 기능
  • 도서의 독서상태를 기억할 수 있는 서재 기능
    • ViewPager2를 이용한 독서예정, 독서중, 독서완료 각 페이지 구성
    • Coroutine을 활용한 LongClick Swipe Animation
    • BottomSheet를 이용한 도서의 읽고 있던 페이지를 기록할 수 있는 책갈피 기능
  • 도서 별점 등록 및 독후감 기능
  • 독서 중에 생겼던 고민을 기록할 수 있는 고민기록 기능
    • ItemTouchHelper를 이용한 Item Swipe Animation
  • 서버 점검 시 Remote-Config를 이용한 일시적 서비스 접속 제한 기능

Video

로그인

카카오 로그인 구글 로그인

회원가입

프로필 설정 닉네임 중복 체크 이미지 선택 독서 취향 선택

메인 화면

화면

서재 [독서 예정]

[독서예정] 삭제 [독서중]으로 이동

서재[독서 중]

책갈피 [독서중] 삭제 [독서완료]로 이동 [고민기록]으로 이동

서재[독서 완료]

[독서 완료] 삭제 [고민기록]으로 이동 [독후감]으로 이동
(작성된 독후감 X)
[독후감]으로 이동
(작성된 독후감 O)

독후감

작성 작성 중 이탈 수정 삭제

고민기록[폴더]

폴더 추가 폴더 삭제 폴더명 수정

고민기록

고민 기록 추가 고민 기록 삭제 고민 기록 수정

검색

검색 기록 종합 검색 결과

검색[도서]

도서 검색 결과 독서 예정 독서 중 독서 완료

검색[채팅방]

채팅 검색 결과 채팅방 입장

채팅방 목록

페이징 꾹누르기 스와이프

채팅방 생성

기본 이미지 선택 도서 선택

채팅방

기본 하단 페이징 상단 페이징

채팅방 설정

채팅방 세팅 방장 변경 부방장 변경

마이페이지

프로필 변경 앱 설정

App Design (Figma)

image 이전 디자인 (Figma)


Team