dudoji

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를 사용하여 안전한 통신 채널 확보
  • 서버 포트 숨김
    • 외부 포트 노출을 방지하여 보안 강화