Beomboos
Beomboos has 2 repositories available. Follow their code on GitHub.
github.com
버리다 기초 구상
1. 메인화면
- 지도 화면
- 쓰레기 태그 선택 분류
- QR 인증(마일리지 정립)
- 3, 4, 5km 마다 주변 가게 검색
- 마이페이지
- 회원 정보(Name, Email)
- 적립 마일리지
- 프로필 수정
- 가게 관리
- 마일리지 랭킹 조회
- 로그아웃
- 로그인 화면
- 로그인 규칙 적용
- 회원가입
- 계정 조회
2. 유저 기능
- 로그인
- 이미 접속한 유저는 동시 접속 방지
- 회원가입
- 아이디, 비밀번호, 비밀번호 확인, 이메일
- 중복 회원 체크
- 프로필 수정
- 아이디, 비밀번호, 이메일 수정
- 마일리지 적립
- qr 촬영 시 마일리지 적립
3. 가게 유저 기능
- 가게 등록, 수정, 삭제
- 사업자 등록 번호, 사업자 등록 번호 인증
- 전화 번호, 주소
- 쓰레기 종류 선택(종류 미선택 시 전체 선택으로)
- 등록 시 가게 고유 Key 발급
- 고유 Key를 통해 가게를 검색하여 수정 및 삭제
- QR 생성
- 가게 마일리지 적립하기 위한 가게 고유 QR 생성
- 마일리지 랭킹
- 랭킹으로 사용자에게 가게 광고 기능
버리다(Throw) 앱의 요약
버리다는 길거리 쓰레기 방지라는 공익을 위한 목적을 위해 기획된 응용 어플리케이션이다. 과거에 비교해서 쓰레기 배출량은 늘어나고 있는 것에 비하여, 쓰레기통의 갯수는 오히려 줄어들었다. 시민이 이용할 수 있는 쓰레기통의 갯수는 적어지고 길거리는 쓰레기로 뒤덮일 수 밖에 없다. 본 프로젝트는 이 문제에 대해 정부의 해결책과는 별개로 가게의 홍보 효과라는 방안을 통해 민간의 참여를 유도하여 공공환경 개선과 상권 활성화라는 두 가지 목표를 해결하는 방안에 대해 제시한다.
※ 이러한 동기와 기대효과를 생각하고 학교 전공 프로젝트에 간단한 프로젝트로 채택하게 되었으며, 총 4명의 동기들과 함께 프로젝트를 제작하게 되었다.
Front-end 기초 설계
※ Front-end 리더를 맡으면서 초기 기초 설계를 어떻게 했는지 확인해 보자
- 대부분 기능은 지도를 이용해서 가게를 찾아야 하기 때문에 지도 API를 어떤 것을 이용해야 될까 생각을 해보았다. 그렇게 되면 "네이버", "카카오", "구글" 중에 선택 해야되는데 우리 프로젝트에서는 카카오 지도 API를 이용하기로 했다.
- MVVM 구조를 체택했다.
- 기본적인 폴덕 구조를 아래 이미지와 같이 나누어 보았다.

- app: 애플리케이션의 진입점과 의존성 주입을 담당 (DeamHomeApplication, DIContainer)
- common: 공통적으로 사용될 유틸, View, LiveData 등을 관리
- data: 데이터 레이어 (데이터 소스, 모델, 리포지토리, 네트워크)
- datasource: 로컬 및 네트워크 데이터 소스 (LocalAuthDataSource, NetworkAuthDataSource 등)
- model: API 요청 및 응답을 처리하는 데이터 클래스
- repository: DefaultXXXRepository 구현 (실제 데이터 저장 및 가져오기 담당)
- retrofit: Retrofit을 활용한 API 인터페이스 (AuthService, ProductService 등)
- secure: 보안 관련 모듈 (CryptoManager)
- domain: 비즈니스 로직 레이어 (인터페이스, 유스케이스 포함)
- repository: AuthRepository 등, data 계층의 리포지토리를 추상화
- model: 도메인 모델 관리
- presentation: UI 및 사용자 인터페이스 관련 레이어
- auth, detail, main, splash: 기능별 화면을 담당하는 모듈
안드로이드 build.gradle 설정
✅ Android 기본 라이브러리
- androidx.core:core-ktx → Kotlin 확장 기능 제공
- androidx.appcompat:appcompat → 이전 버전의 안드로이드도 지원 가능하게 함
- com.google.android.material:material → Material Design UI 컴포넌트 제공
- androidx.constraintlayout:constraintlayout → ConstraintLayout을 사용한 레이아웃 배치
🔄 Lifecycle & ViewModel
- androidx.activity:activity-ktx → by viewModels() 기능 지원
- androidx.fragment:fragment-ktx → by activityViewModels() 지원
- androidx.lifecycle:lifecycle-viewmodel-ktx → ViewModel 관련 기능
- androidx.lifecycle:lifecycle-livedata-ktx → LiveData 관련 기능
🌐 네트워크 통신 (Retrofit & OkHtttp)
- com.squareup.retrofit2:retrofit → REST API 요청을 쉽게 할 수 있도록 도와주는 라이브러리
- com.squareup.retrofit2:converter-gson → JSON 데이터를 객체로 변환
- com.squareup.okhttp3:okhttp → HTTP 요청을 효율적으로 관리
- com.squareup.okhttp3:logging-interceptor → 네트워크 요청/응답 로그 확인
💾 데이터 저장
- androidx.datastore:datastore → SharedPreferences보다 향상된 데이터 저장 방법
- org.jetbrains.kotlinx:kotlinx-serialization-json → JSON 데이터 직렬화 / 역직렬화
🎞️ 애니메이션 & UI 개선
- com.airbnb.android:lottie → Lottie 애니메이션 사용 가능
- androidx.core:core-splashscreen → 최신 안드로이드 Splash Screen API
🖼️ 이미지 처리
- com.github.bumptech.glide:glide → 이미지 로딩 및 캐싱 라이브러리
🛠 유틸리티 라이브러
- com.jakewharton.timber:timber → 로그(Log) 관리 라이브러리
- com.journeyapps:zxing-android-embedded → QR 코드 스캔 기능 추가
🗺️ 지도 & 위치 기반 서비
- com.google.android.gms:play-services-location → GPS 위치 서비스 지원
- libs/libDaumMapAndroid.jar → 카카오 지도 SDK (로컬 라이브러리)
🔗 기타
- kotlin-parcelize → @Parcelize 사용 가능 (Parcelable 자동 생성)
- kotlin("plugin.serialization") → Kotlin Serialization 지원
- com.google.android.play:app-update-ktx → 구글 플레이 앱 업데이트 기능