Skip to content

gumchinjun/VeggieNeighbor

Repository files navigation

ITM_Mobile Programming (코틀린 프로젝트)

1달동안 코틀린을 언어로 안드로이드 어플리케이션을 개발하는 프로젝트입니다.
저희 팀은 식자재를 직구 및 공구할 수 있고 인벤토리를 관리할 수 있는 어플리케이션을 개발하였습니다.

Project-Team7

1. 배경 및 주제 선정

  • 비용 상승으로 이어지는 긴 유통과정 때문에 신선도 저하로 이어질 수 있다는 단점이 있습니다.
  • 또한, 농장에서 직접 구매하려면 종종 대량으로 구매해야 하므로 개별 가구에 부담이 될 수 있습니다
  • 따라서, 농장의 공동 구매를 용이하게 하는 앱으로, 이웃들이 대량 주문을 공유하고 비용을 절감하며 신선도와 저렴한 가격을 보장하고자 합니다.

2. 주요 기능

1) 로그인 및 회원가입

  • 로그인: FirebaseAuth와 SharedPreferences를 이용한 onCreate 메소드로 로그인 기능을 구현하고, 이메일과 비밀번호를 파라미터로 받아 Firebase를 통한 인증을 수행합니다.

2) 홈페이지

  • Navi 액티비티는 각 탭에 해당하는 프래그먼트로 구성되며, 바텀 네비게이션에서 아이콘과 텍스트를 정의하는 XML 메뉴 리소스를 생성합니다.
  • 네비게이션 컴포넌트와 통합하여 각 탭에 해당하는 프래그먼트나 목적지로 이동합니다.
  • Firebase Firestore에서 최근 GB(Group buying) 게시물을 검색하고, 각 문서에서 데이터를 추출하여 GB 리스트에 객체를 추가합니다.
  • 리사이클러 뷰를 통해 모든 GB 게시물 목록을 표시하며, 사용자는 각 항목을 클릭하여 자세한 내용을 볼 수 있습니다.
Image 3 Image 4 Image 5

3) 상품페이지

  • 농장에서 판매하는 신선한 상품을 카드 뷰로 표시, 사용자는 상품 상세를 볼 수 있습니다.
  • Firebase Firestore에서 상품 정보를 읽어와 리사이클러 뷰에 표시합니다.
  • 상품의 이미지는 Firebase Storage를 통해 관리되며, Glide 라이브러리로 불러와집니다.
  • 카테고리 선택 시 해당 상품만 필터링하여 보여주고, 상품 클릭 시 상세 페이지로 넘어갑니다.
  • 구글 맵 API를 통해, 해당 지역의 상품들을 확인할 수 있다.
Image 6 Image 7 Image 8

4) 공동구매

  • 사용자가 '공동 구매 가능' 버튼을 클릭하면, 현재 선택된 제품에 대한 진행 중인 모든 공동 구매를 보여주는 액티비티(available GB)로 이동합니다.
  • 공동구매 게시글을 올리고 싶은 경우, 관련 게시물을 업로드 할 수 있습니다.
  • 이전 액티비티에서 받은 정보(제품의 가격)를 사용하여 사용자가 참여자 수를 입력하고 '가격 계산' 버튼을 클릭하면, 인당 가격이 자동으로 계산되어 적용됩니다.
Image 9 Image 10 Image 11

5) 냉장고(장바구니)

  • 영수증 OCR을 통해 '내 냉장고에 추가' 항목을 구현하고, Google의 MLKIT 텍스트 인식을 사용합니다.
  • OCR은 이미지에서 텍스트를 인식하여 "제품", "가격", "날짜"와 같은 패턴을 사용하여 필요한 정보를 추출합니다.
  • 사용자가 '내 냉장고에 추가'를 클릭하면 인식된 데이터를 파싱하여 Firestore에 냉장고 항목 데이터로 추가하고 유통 기한을 계산한 후 '내 냉장고'로 전환합니다.
Image 12 Image 13 Image 14
Image 15 Image 16

6) 챗봇서비스(OpenAI)

  • 사용자가 아이템 선택에 도움을 요청할 때 도움을 주는 AI 기반 챗봇 서비스입니다.
  • GPTActivity 화면에서 사용자가 질문을 입력하고 'Send' 버튼을 누릅니다.
  • 질문은 GPT API로 전송되어 적절한 답변을 생성합니다.
Image 17 Image 18

7) Firebase Cloud Messaging (알림 기능)

캘린더 기능

  • 사용자는 안드로이드 '캘린더 액티비티' 화면에서 날짜를 선택하고 일정을 저장합니다.
  • '저장' 버튼을 클릭하면 선택한 날짜에 일정이 저장되고 Firestore에 타임스탬프와 함께 업로드됩니다.
  • 저장된 일정은 수정하거나 삭제할 수 있으며, 앱의 이전 화면으로 돌아가는 '뒤로' 버튼이 제공됩니다.

FCM

  • 서버에서 클라이언트로 알림 메시지를 보내는 메시지 전송 서비스입니다. 앱 사용자의 배송 날짜에 관련 메세지를 전송할 수 있습니다.
  • Node.js (서버 사이드)
  1. Firebase Admin SDK 초기화 및 인증: 서버가 Firebase 서비스(Firestore, FCM)에 안전하게 접근할 수 있도록 합니다.
  2. Firestore 데이터 처리: 필요한 데이터를 Firestore 데이터베이스에서 조회합니다.
  3. FCM 푸시 알림 생성 및 전송: 필요한 정보를 바탕으로 FCM 푸시 알림을 설정하고 FCM을 통해 디바이스로 전송합니다.
  • Kotlin (안드로이드 클라이언트 사이드)
  1. FCM 메시지 수신: FCM으로부터 알림이 도착하면, 서비스가 알림의 내용을 파싱하여 필요한 경우 사용자에게 보여줄 데이터로 변환합니다.
  2. UI에서 알림 표시: 받은 알림 데이터를 바탕으로 사용자에게 시각적으로 헤드업 알림을 표시합니다.
Image 19 Image 20 Image 21
  • FCM 아키텍쳐
image

About

Mobile Programming Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published