Dudoji
| Repo | Organization |
|---|---|
|
📂 Android 📂 Server |
📂 Dudoji |
개요
- 목표
- 두도지(DoDoji)는 “도시와 지방 곳곳을 여행하자”라는 의미를 담은 탐험 기반 관광 플랫폼
- 기존 여행 앱과 다르게 사용자가 직접 여행지를 탐험하고 성취감을 느낄 수 있는 차별화된 경험을 제공
- 핵심 기능
- 안개 시스템
- 사용자가 이동한 지역만 정보 공개 → 탐험 기반 UX 제공
- EGL과 OpenGL ES를 사용한 안개 입자 렌더링 그래픽 엔진 구현
- 랜드마크 & 축제
- 진행 중인 축제를 기준으로 랜드마크 추천
- 공공 축제 Open API를 활용하여 실시간 데이터 반영
- 핀 시스템
- 여행자 게시물을 좋아요 기반으로 정렬, 지도 확대/축소 시 개별·군집 핀 표시, 팔로우·필터 기능 제공
- 대용량 지도 데이터 처리 및 효율적 쿼리 설계 적용, 인덱싱을 통해 조회 속도 최적화
- 퀘스트 시스템: 메인/긴급/서브 퀘스트로 이동·탐험 유도, 완료 시 코인·스킨 지급
- 안개 시스템
기술 스택 & 아키텍처
- 기술
- 백엔드: Spring Boot
- 프론트엔드: Android
- 데이터베이스: PostgreSQL
- CI/CD: GitHub Actions
성과 / 배운 점
팀 확장 및 역할 분담
- 초기 개발자 3명으로 시작 → 프로젝트 진행 부진
- 디자이너, 기획자 추가로 팀 확장
- 성과:
- 명확한 역할 분담 → 개발, 디자인, 기획 각 영역 전문성 확보
- 체계적 프로젝트 관리 가능 → 일정, 기능 우선순위, 사용자 경험 관리
- 팀 내 협업 능력과 의사소통 강화
- 배운 점:
- 기능 개발만으로는 프로젝트 성공이 어려움
- 체계적 개발 프로세스와 역할 분담이 프로젝트 성과를 좌우함
Android 아키텍처 경험
- MVVM, Clean Architecture 점진적 적용
- Hilt를 사용한 의존성 주입 → 모듈화
- Flow를 활용한 비동기 데이터 처리 → 실시간 UI 업데이트 및 안정성 확보
- 코드 구조와 유지보수성 개선
- 아키텍처 기반 개발 경험으로 장기적 확장성과 안정성 확보
보안 성과
- 클라이언트 요청 필터링
- Android 클라이언트의 agent 정보를 특정하여 서버에서 불필요한 요청 차단
- 자동화 봇/악성 요청 대응 기능 구현
- 요청 로그 관리
- 모든 요청의 IP, user agent, 기타 정보를 실시간 기록
- 추후 모니터링 및 보안 분석 가능
- 접근 권한 세분화
- Spring Security를 활용하여 user용과 admin용 엔드포인트를 명확히 구분
- 핏하게(fine-grained) 권한 설정 적용 → 역할 기반 접근 제어(RBAC) 적용 완료
- HTTPS 적용
- Nginx를 사용하여 안전한 통신 채널 확보
- 서버 포트 숨김
- 외부 포트 노출을 방지하여 보안 강화