Giter Site home page Giter Site logo

pknu-wap / 2023_1_wat_bejuryu Goto Github PK

View Code? Open in Web Editor NEW
10.0 0.0 3.0 27.61 MB

사용자의 감정을 인공지능이 분석해서 주류를 추천해요! BE주류🥂🍷🍹🍻

Home Page: http://bejuryu.s3-website-ap-southeast-2.amazonaws.com/

License: MIT License

Kotlin 49.59% HTML 0.99% CSS 0.94% JavaScript 29.88% Java 18.59%
android soju wine cocktail sake web whisky liqueur rice-wine beer

2023_1_wat_bejuryu's Introduction

2023 1학기 WAT팀 BeJuRyu


사용자 기호 맞춤 주류 추천 서비스
BeJuRyu

🍻 Feature 🍻

화면 1 2 3 4
로그인

설정
주류사전
주류후기
감정작성, 주류추천

🥂 Module Dependency 🥂

BE주류 Module Dependency

🍹 Android Tech Stack 🍹

  • Minumum SDK 26 & Target SDK 33
  • Kotlin
    • Kotlin 1.8.10v
    • Coroutines & Flow
  • Dependency Injection
    • Dagger Hilt
  • Android Jetpack
    • CameraX & PhotoPicker
    • Navigation Component
    • DataBinding & ViewBinding
  • Local
    • Encrypted SharedPreference
    • Proto DataStore
  • Remote
    • Retrofit2 & OkHttp3
    • Kotlinx Serialization
  • Firebase
    • Analytics & Crashlytics
  • Third Party
    • Glide
    • Material Components
    • Timber
    • ProcessPhoenix
    • Lottie
  • verison_catalog

🍷 Contributors 🍷

컴퓨터를 누르면 우리팀의 활동을 볼 수 있어요!


JinHo Jeong

💻

Yerim Sun

💻

Jiwon Kang

💻

JaeHyun Hwang

💻

DoHyeon Lim

💻
안드로이드 프론트엔드 백엔드 백엔드 AI
코젤다크 시나몬 얼그레이 하이볼 데낄라 참이슬 간바레 오또상

2023_1_wat_bejuryu's People

Contributors

jeongjaino avatar nuyh99 avatar onegqueen avatar sunyerim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

2023_1_wat_bejuryu's Issues

[FEATURE] (주류 사전) 주류 카테고리 기능 구현

📑 작업 사항

메인 화면에서 카테고리 선택을 통해 검색 기능 구현

To-do

  • 검색 ui에 카테고리 버튼 추가
  • 서버 카테고리 통신 로직 구현

#✔️ 기타사항

카테고리 버튼을 통한 결과는 기존 텍스트 검색과 같은 ui를 재활용할 예정.

[CHORE] DTO, Model 네이밍 수정 및 필드 추가 및 네이밍 수정

📑 작업 사항

Dto, Model 네이밍 수정 및 DTO 필드 네이밍 수정
image multipart -> base 64 수정
이름으로 검색 기능 구현

To-do

  • Dto, Model 네이밍 수정 및 DTO 필드 네이밍 수정
  • base64 전용 binding adapter 구현
  • 주류 이름으로 검색 기능 구현

#✔️ 기타사항

[FEAT] Confirm Dialog 생성

📑 작업 사항

계정 탈퇴, 이름 변경, 로그아웃 Confirm Dialog 구현 및 생성

To-do

  • 계정 탈퇴, 이름 변경 -> 카카오톡 메소드 호출
  • 이름 변경 -> 로컬 변경

#✔️ 기타사항

[FEATURE] Auth 관련 추가 구현

📑 작업 사항

FirebaseAlalytics, FirebaseCrahslytics, AuthInterceptor, ErrorHandler 구현하기

To-do

  • FirebaseAnalytics, FirebaseCrashlytics 구현하기
  • authInterceptor / token 삽입 및 만료시 refresh

#✔️ 기타사항

골목길 아귀찜에서~

[FEATURE] 전반적인 ui 수정 및 주류 추천결과 코드 수정

📑 작업 사항

전반적인 ui 수정 및 주류 추천결과 코드 수정

To-do

  • 전반적인 ui 수정
  • 주류 추천결과 코드 -> 이미지, 일기 분리되어 있는 것 통합해서 서버 전송코드까지 구현
  • 주류 사전 페이지 (각 주류에 보이는 페이지)

#✔️ 기타사항

[FEATURE] Drink Service & Controller 작성

📑 작업 사항

작업할 내용 설명

To-do

  • 서비스 레이어 작성
  • 서비스 레이어 테스트
  • 컨트롤러 레이어 작성

#✔️ 기타사항

생성자 주입으로 필요한 Repository 클래스를 주입 받아 사용한다.
서비스 레이어의 역할은??

서비스 레이어를 테스트하려면 Repository 의존성이 필요하다. 그렇다면 @SpringBootTest를 해야 할까?? Mockito??
Hint: 통합테스트와 Mocking(Stubbing)의 차이, 해당 메서드에서 검증하고 싶은 내용?

[TEST] 로그인 전체 과정 이해

📑 작업 사항

testtest~ 공부하는 데 필요한 코드를 추가하였으나, 추후 사용이 될 수도 있는 코드도 있어 일단 commit 해둡니닷

To-do

  • logout 컴포넌트 구현하여 로그인 상태가 유지된 상태로 서비스 제공이 되는지 확인
  • 소셜 로그인, 서버와의 통신방법(카카오 토큰 넘겨주고 jwt 토큰 받고...등등 그외), 회원가입이 되는 과정 로직 완전한 이해(현재 85프로정도 이해)
  • redux의 사용이 필수인가?에 대한 고민 (닉네임 변경도 없고 마이페이지에서만 닉네임을 띄워준다면 음..)
  • 각 파일 TODO 리스트 작성

#✔️ 기타사항

카카오 소셜 로그인을 통한 카카오 토큰 발급까지는 완료되어 localstorage에 저장시켜놓고 작업을 진행하였으나
추후 비주류 서비스 자체 토큰으로 서비스가 되어야되므로 이를 이해하는데 여러가지 테스트를 해보았음.

토큰 요구의 유무로 서버와 통신이 되는 것들.. 등등 기초세팅은 해둔 상태이므로 이해가 천프로 빠르게 되는 게 급선무

[STYLE] 주류 사전 페이지 생성

📑 작업 사항

주류 사전 페이지를 생성하고 대략적인 UI를 구현한다.
그리고 MOCK 데이터를 활용해 화면 배치도 고민해본다.

To-do

  • 주류 사전 페이지 생성
  • UI 구현
  • MOCK 데이터 활용

#✔️ 기타사항

[FEATURE] 이용약관 및 개인정보 사항 추가

📑 작업 사항

사용자 입력시 참고할 만한 tip 추가 및 리뷰 작성시 주류 정보 불러오기

To-do

  • 리뷰에 주류 정보 추가하기
  • 텍스트 작성 tip 추가
  • 이미지 입력 tip 추가

#✔️ 기타사항

[CHORE] Android Set Up!

📑 작업 사항

안드로이드 멀티 모듈 구성 / app , core, feature / version catalog, build-logic, plugin 생성 및 설정하기

To-do

  • Module 구성
  • version catalog 구현
  • build-logic, custom plugin 구현

#✔️ 기타사항

[FEATURE] (주류 사전) 주류 리뷰 기능 구현

📑 작업 사항

주류에 대한 리뷰 기능 구현

To-do

  • 사용자 리뷰 작성 페이지 구현
  • 서버로 전달 후, 새로 리뷰 리스트 받아와 매핑하기

#✔️ 기타사항

해당 리뷰가 처음으로 작성한 지에 대해서 도 판단해야 할듯
별점 리뷰 방식으로, 해당 별점 ui 라이브러리 확인해 봐야 함.
사진 리뷰 방식은?

[FEATURE] 로그인 관련

📑 작업 사항

서버와 통신이 가능해짐에 따라 로그인 관련 백엔드와의 통신 관련 부분 코드를 완성한다.

To-do

  • auth/login 로그인
  • auth/refresh 리프레시 토큰 요청

#✔️ 기타사항

깃허브 액션의 빌드 실패를 해결한다.

📑 작업 사항

테스트용 환경을 분리한다.

📑 에러 내용

현재 깃허브 액션에서 Gradle 빌드가 실패한다.

에러 원인

DB 커넥션이 불가능한 환경에서 테스트를 돌리기 때문

To-do

  • 테스트용 application.properties 추가

[FEATURE] Setting 화면 구현

📑 작업 사항

DataStore 데이터 불러와 Profile UI 구성하기, Navigation Module 구성

To-do

  • Navigation Module 구성
  • Feature Profile Module 구성
  • Profile Ui 구현 및 구성

#✔️ 기타사항

[REFACTOR] core : designsystem 모듈 추가 및 기존 테마 변경

📑 작업 사항

designsystem module 생성 및 모든 resource migrate

To-do

  • 디자인 시스템 모듈 생성
  • 모든 리소스 마이그레이션
  • 테마 관련 수정 및 적용

#✔️ 기타사항

얼마나 걸릴지,, 시험 공부는 언제 하는지,,
태산 타이산 타이페이 타이페이101 카페051

[Fix] Authorization 400 Bad Reqeust

📑 에러 내용

사용자 인증 정보 처리시, 400 에러 발생

에러 원인

로그인 시 토큰 저장 key가 refresh와 access가 중첩되어 있음.

To-do

  • DataStore Key 수정

#✔️ 기타사항

[FEATURE] 리뷰 전달 및 응답 처리

📑 작업 사항

작성한 리뷰 불러오기 & 전달 및 응답을 처리
진행중 -> 프로그래스 바를 통해 확인
성공적 -> 화면 전환
실패 -> 메세지와 함께 에러

To-do

  • 리뷰 불러오는 로직 구현
  • 리뷰 작성 후 전달 및 응답 구현

#✔️ 기타사항

[FEATURE] 사진 입력 화면 구현

📑 작업 사항

분석을 위한 사용자 사진 입력 화면 구현

To-do

  • 카메라, 앨범 디펜던시, 새로운 모듈 추가
  • 카메라 기능 구현
  • 앨범 사진 접근 기능 구현
  • 각 화면간 전환 설정

#✔️ 기타사항

뿌쓩빠쓩
analyze module
Camerax
PhotoPicker

[FEATURE] (주류 사전) 주류 정보 페이지 구현

📑 작업 사항

주류 리스트에서 선택한 주류에 대한 정보 페이지 구현

To-do

  • 주류 정보 페이지 ui 구성
  • 리스트 -> 정보 페이지 이동시 얻은 id값으로 정보 호출
  • 해당 정보 ui 매핑

#✔️ 기타사항

[STYLE] 배경색 수정

📑 작업 사항

전반적 배경색 white -> gray + card(white)

To-do

  • 배경색 변경 (dictionary, review, analyze, setting)
  • card 구성안되어 있는 부분 추가

#✔️ 기타사항

[FEATURE] 로그인 부분 로직수정

📑 작업 사항

소셜로그인 구현 수정 필요 부분 추가 작업 및 디자인 수정
토큰 만료 확인 및 새 토큰 발급 코드 추가

To-do

  • 토큰 만료 확인 및 새 토큰 발급 로직 구현
  • 로그인 첫 화면 디자인 구현
  • 그 외 로그인 필요 부분 작업

#✔️ 기타사항

계속 혼동 왔었던 부분이라 로직 추가 빠르게 해두기 목표 =>
에러나고나 나머지 부분 추후 보충 예정임다 공부하면 할 수록 헷갈리는 게 더 많아지고 궁금한 것도 더 많아짐.. 이게 맞나요 ㅠ

[FEATURE] Review Navigation 설정 및 Ui state 공유

📑 작업 사항

전반적인 액티비티로 전환을 하니, 하나의 프래그먼트 단위로 전환이 어려워짐.
activity 걷어내고, app module 단에서 통합적 네비게이션 구현
deep link navigation 구현

To-do

  • app module 안의 navigation 설정
  • deep link navigation 구현
  • review item ui state 설정을 위한 usecase 구현

#✔️ 기타사항

[FEATURE] 주류 추천페이지

📑 작업 사항

주류 추천페이지 생성

To-do

  • 현재 기분 텍스트 입력 기능
  • 추천페이지 틀 및 디자인
  • .env파일 재작업(허드렛일)

#✔️ 기타사항

아직 받아올 데이터가 없으므로 직전까지 작업을 다 해놓는것을 목표로 한다.

[BUG] 소셜 로그아웃, redux-persist 적용

📑 작업 사항

소셜 로그아웃, redux-persist 적용

📑 에러 내용

자사서비스 로그아웃은 잘 되는데, 로그아웃 후 쿠키에 남아있는 카카오 관련 요소들도 clear되야 다른 계정으로 로그인이 가능해서 그것 해결해야함..
그리고 새로고침하면 닉네임이 사라지는 현상때문에 redux-persist 적용해야해욥

에러 원인

To-do

  • 쿠키내에 카카오 관련된 것 clear
  • redux-persist (새로고침에도 유지되는 store)

#✔️ 기타사항

[FEATURE] 화면 전환 설정

📑 작업 사항

앱 내의 화면 전환 설정

To-do

  • app module 에서 통합 nav 만들기
  • bottom navigation 구현
  • intent를 활용한 전환 설정

#✔️ 기타사항

bottom navigation bar 활용,
setting, auth의 경우 activity context 필요, 이의 경우 intent를 활용해 넘기기
나머지는 Navigation Componet 활용

[FEATURE] Repository 작성

📑 작업 사항

작성한 엔티티를 바탕으로 리포지토리를 완성한다

To-do

  • Repository 패키지를 생성하고 DB에 접근하는 메소드 등을 포함한 리포지토리 작성
  • 리포지토리 테스트 코드 작성

#✔️ 기타사항

JpaRepository 와 Repository 차이를 알아본다.
영속 상태와 변경 감지에 대해서 알아본다. (+em.persist() ??)
순수 JPA가 만들어주는 메서드만 사용한다면 테스트가 필요할까??
@repository@component의 차이를 알아본다.

[REFACTOR] 로그아웃 모듈 분리 및 Companion Object Intent 전환 변경

📑 작업 사항

이용기록에서 바로 주류 결과 화면으로 전환하기 위해 Setting Activity 소거 HomeActivity Container 사용
따로 로그아웃 / 계정 삭제와 관련된 모듈 생성 및 코드 옮기기
Intent 전환을 Companion Object getIntent 전환으로 변경

To-do

  • Account 모듈 생성
  • Account Activity 관련 코드 마이그레이션
  • Companion Object getIntent 구현
  • app navigator impl 수정

#✔️ 기타사항

[FEATURE] Entity 클래스 작성

📑 작업 사항

도커 컴포즈 파일을 사용해서 mysql 컨테이너를 실행시킨다.
분석한 도메인을 바탕으로 ERD로부터 @Entity 객체를 생성한다.

To-do

  • Entity 클래스 도출 및 작성
  • 도메인 로직 테스트 작성 (SpringBootTest가 아닌 단위테스트)

#✔️ 기타사항

프로젝트 루트 디렉토리에 docker가 있다.
해당 디렉토리로 이동한 후 docker-compose -p juryu up 명령어를 입력해서 컨테이너를 실행시킬 수 있다.

@entity에 대해서 알아본다.
통합 테스트(@SpringBootTest)와 단위 테스트에 대해서 알아본다.
영속성(JPA)에 대해서 알아본다.
Setter는 사용하지 않는다.

[FEATURE] 주류 검색, 주류 리스트 화면

📑 작업 사항

주류 검색화면, 주류 리스트 화면 구현

To-do

  • 주류 검색 화면 구현
  • 주류 리스트 화면 구현
  • navigation 설정 및 검색어 전달

#✔️ 기타사항

[STYLE]주류 사전 페이지 생성

📑 작업 사항

주류 사전 페이지를 생성하고 대략적인 UI를 구현한다.
그리고 MOCK 데이터를 활용해 화면 배치도 고민해본다.

To-do

  • 주류 사전 페이지 생성
  • UI 구현
  • Mock 데이터 활

#✔️ 기타사항

브랜치 에러 이슈로 인해... 다시 ISSUE를 팠습니다

[STYLE] 앱 아이콘 설정하기

📑 작업 사항

앱 아이콘 설정 및 스플래쉬 화면 아이콘 배치하기

To-do

  • 앱 아이콘 설정
  • 스플래쉬 화면 아이콘 배치하기

#✔️ 기타사항

[CHORE] spring set-up

📑 작업 사항

스프링 셋업

To-do

  • 모듈 추가
  • 의존성 추가

#✔️ 기타사항

[FEATURE] 주류 추천 결과 페이지

📑 작업 사항

주류 추천 결과 페이지를 생성하고, 기분 입력화면에서 사진 첨부 가능하게끔하는 기능도 추가한다.

To-do

  • 주류 추천 결과 페이지
  • 사진 첨부 기능 구현
  • 마이 페이지 ui 구현
  • 중간 발표 전까지 할 수 있는 작업들 (header 수정, style 수정 etc)

#✔️ 기타사항

일단 해당 브랜치로 중간발표 전까지 했던 작업들을 다 병합후, 추후에 기능별로 더 덧붙여서 브랜치 생성하겠슴다

[FEATURE] 로그인 API 구현

📑 작업 사항

JWT를 사용한 로그인 API를 구현한다.

To-do

  • 카카오 API 호출 클라이언트 (uid, nickname 받아오기)
  • JwtTokenProvider
  • AuthService
    • UID, nickname으로 JwtToken 발행 및 리프레시 토큰 저장(엑세스, 리프레시)
    • 액세스, 리프레시 토큰 받아서 JwtToken 리프레시 및 리프레시 토큰 저장
  • AuthInterceptor implements HandlerInterceptor
  • JwtArgumentResolver implements HandlerMethodArgumentResolver
  • AuthConfig implements WebMvcConfigurer
    • url 기반 인터셉터 추가
    • 어노테이션 기반 ArgumentResolver 추가
  • 전역 ExceptionHandler
    • 토큰이 만료됐으면 401
    • 토큰이 없으면 400
  • Auth 관련 API 테스트 (RestAssured)

#✔️ 기타사항

스프링의 Interceptor를 사용한다.
리프레시 토큰 저장소를 mysql -> redis 로 옮길 수도 있다.

[FIX] develop_server 브랜치 빌드 실패를 해결한다.

📑 작업 사항

분기된 서버 브랜치들 통합

📑 에러 내용

깃허브 액션에서 빌드 실패가 된 것이 develop_server 브랜치로 병합됨

에러 원인

왜일까용

To-do

  • 기존 로컬 브랜치에서 최신 develop 브랜치 rebase

[FEAT] 카카오톡, 구글 로그인 구현

📑 작업 사항

카카오톡, 구글 로그인 구현하기

To-do

  • dependency 추가
  • 카카오톡 로그인 후 토큰 datastore 저장하기
  • 토큰 전달

#✔️ 기타사항

[FEATURE] 닉네임 변경 기능 추가

📑 작업 사항

닉네임 변경 기능 추가 및 전역상태관리 설정
서버 연결 준비

To-do

  • 닉네임 변경 기능 추가
  • reducer, store 설정
  • setupproxy target주소 변경

#✔️ 기타사항

[FEATURE] Analysis 요청 및 조회 api

📑 작업 사항

분석된 감정에 대해서 몇가지 기준에 대해 주류를 추천하는 api

To-do

  • 주류추천(분석) 요청 (= 분석 소스 post) api
  • 추천받은 주류와 분석된 결과를 조회하는 api
  • 이미지 get post

#✔️ 기타사항

화이팅

[FEATURE] logout 컴포넌트 분리

📑 작업 사항

테스트의 목적으로 login.jsx 파일 내에 logout 컴포넌트 추가해놓은 것을 이동

To-do

  • logout 컴포넌트 이동

#✔️ 기타사항

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.