-
한 줄 요약 : relpl 프로젝트는 위치 기반 릴레이 플로깅이 가능한 Android 모바일 어플리케이션입니다.
-
기획의도 : 효율적인 플로깅이 가능하도록 돕고, 지속적인 플로깅을 위한 동기 부여가 가능하도록 하고자 했습니다.
-
개발 인원 및 기간
-
개발 인원 : Android 2명, BackEnd 4명
-
개발 기간 : 2024.01.03 ~ 2024.02.16 (총 45일, Business Day 31일)
-
-
주요 기능
-
유저 관련 기능
-
릴레이 플로깅 관련 기능
-
제보, 보상 관련 기능
-
-
데모 시연 영상 : D201 UCC (youtube.com)
🍺 정철주 | ☕ 홍유준 | 🍜 김성훈 |
App(Android) | App(Android) | Back-End(Spring) |
😺 김효주 | 🐸 송민석 | ⚽ 최재성 |
Back-End(Spring) | Back-End(Spring) | Back-End(Spring) |
홈화면 | 랭킹 | 제보하기 |
거리 릴레이 조회 | 경로 릴레이 조회 | 경로 찾기 |
릴레이 중단 | 릴레이 기록 | 릴레이 상세 기록 |
- Spring Boot
- Spring Security & JWT
- JPA & Hibernate
- AWS
- Jasypt
- Firebase
- MongoDB
- PostgreSQL(PostGIS)
- Redis
├── business
│ ├── ProjectCreateRouteBusiness.java
│ └── ProjectRecommendBusiness.java
├── config
│ ├── AWSS3Config.java
│ ├── FCMConfig.java
│ ├── GeomFactoryConfig.java
│ ├── JasyptConfig.java
│ ├── SecurityConfig.java
│ └── SwaggerConfig.java
├── controller.rest
│ ├── CoinController.java
│ ├── FcmTokencontroller.java
│ ├── FileUploadController.java
│ ├── MypageController.java
│ ├── ProjectController.java
│ ├── RankingController.java
│ ├── ReportController.java
│ └── UserController.java
├── db
│ ├── mongo
│ │ ├── entity
│ │ │ └── ...
│ │ └── repository
│ │ └── ...
│ ├── postgre
│ │ ├── entity
│ │ │ └── ...
│ │ └── repository
│ │ └── ...
│ └── redis
│ └── entity
│ └── ...
├── dto
│ ├── request
│ │ └── ...
│ └── response
│ └── ...
├── service
│ └── ...
└── util
├── annotation
│ └── Business.java
├── common
│ ├── Edge.java
│ ├── Info.java
│ ├── RankingEntry.java
│ └── UserHistoryDetailEntry.java
└── jwt
├── CustomUserDetails.java
├── ExceptionResponseHandler.java
├── JwtAccessDeniedHandler.java
├── JwtAuthenticationEntryPoint.java
├── JwtConstants.java
├── JwtFilter.java
└── JwtTokenProvider.java
├── config
│ ├── JasyptConfig.java
├── controller.rest
│ └── TmapController.kt
├── db
│ ├── mongo
│ │ ├── entity
│ │ │ └── TmapRoad.java
│ │ └── repository
│ │ └── TmapRoadRepositroy.java
│ └── postgre
│ ├── entity
│ │ ├── PointHash.java
│ │ ├── PointHash.java
│ │ └── RoadInfo.java
│ └── repository
│ ├── PointHashRepositroy.java
│ ├── PointHashRepositroy.java
│ └── RoadInfoRepositroy.java
├── dto
│ ├── request
│ │ ├── InsertRoadRequestDto.kt
│ │ ├── TimesRoadRequestDto.kt
│ │ └── RoadRequest.java
│ └── response
│ └── TmapApiResponseDTO.java
├── service
│ └── TmapService.kt
└── util
└── common
├── RoadData.kt
└── TmapData.kt
-
인프라
-
백엔드 초기 환경 구축
-
백엔드 구조 설계
-
데이터베이스 설계
-
Tmap API 를 활용한 초기 도로 DB 구축(InitDB)
-
릴레이 플로깅 생성 API
-
플로깅 경로 추천 기능
-
데이터베이스 설계
-
Tmap API 를 활용한 초기 도로 DB 구축(InitDB)
-
jwt, Spring Security 를 이용한 회원가입, 로그인 API
-
릴레이 플로깅 참여, 중단 API
-
FCM 기능
-
Redis 를 활용한 실시칸 랭킹 API
-
사진 업로드 및 프로필 설정 API
-
마이페이지 API
-
내 플로깅 기록 보기 API
-
포인트 관련 기능
-
플로깅 장소 제보 기능
-
릴레이 플로깅 정보 조회 기능
- Android: Hilt, Jetpack AAC(ViewModel, Room, DataBinding), Foreground Service
- Kotlin : Coroutine, Flow
- Library : Retrofit, Glide, Naver Map, Google Location, Firebase(FCM, Auth), Zxing
- UI Library : StickyTimeLine, Pager Dots Indicator , Floating Action Button Speed Dial, Lottie
- Architecture : MVVM, MultiModule, CleanArchitecture
- Android Studio : Giraffe 2022.3.1 Patch 2
- Gradle JDK : jbr-17(JetBrains Runtime version 17.0.6)
- Android Gradle Plugin Version : 8.1.3
- Gradle Version : 8.1
- Kotlin version : 1.8.0
- 앱 구조 구성, 모듈화
- 릴레이 진행, 중단
- 포그라운드 서비스 활용 위치 추적
- 랭킹
- 제보하기, 제보기록
- 포인트 내역, 포인트 사용
- JWT 토큰 대응
- 앱 디자인
- 회원가입
- 거리, 경로 릴레이 조회
- 거리, 경로 릴레이 참여
- 유저정보
- 프로필, 회원정보 수정
- 내 플로깅 기록, 상세 기록
- JWT 토큰 대응