Skip to content

Latest commit

 

History

History
131 lines (87 loc) · 7.08 KB

File metadata and controls

131 lines (87 loc) · 7.08 KB
Image

🚶 워킹토끼

AI와 지도 기반 미션으로 동대문을 걸으며 나만의 식물 도감을 만들어가는 참여형 보행 플랫폼

프로젝트 개요

워킹토끼는 단순히 걷기를 기록하는 것에서 나아가, 보행 환경 자체를 개선하는 데 기여하고자 기획한 서비스입니다. ‘워킹시티’라는 도시 비전과 연결해, 지역 주민이 직접 보행 경험을 공유하고 문제점을 제안할 수 있도록 설계했습니다. 서비스 이름은 걷기(walking)와 무전기(walkie-talkie)에서 착안해, “걸음을 잇는 소통”이라는 의미를 담았습니다.

  • 사용자가 촬영한 식물을 AI 챗봇이 인식하고 대화형 설명을 제공
  • 발견한 식물을 지도에 표시하고 사진/설명으로 자신만의 식물 도감 구축
  • 생성형 AI 미션 제공을 통해 걷기에 재미와 동기를 부여

이러한 기능을 통해 단순 걷기 기록 앱이 아닌, 녹지 경험 확산과 보행 환경 개선에 기여하는 서비스를 구현했습니다.

  • 개발 기간: 2025.08 (2주)
  • 팀 구성: FE 2명, BE 1명, AI 1명

나의 역할 및 구현 내용

  • 사용자 인증 및 회원 관리
    • JWT 기반 카카오 로그인·회원가입 인증 로직 구현
    • Spring Security 기반 인증/인가 처리
  • AI 연동 기능
    • Gemini 기반 미션 생성 API 연동
    • WebClient를 활용한 AI 호출 및 응답 파싱
    • 식물 인식 모델 연동 및 챗봇 상호작용 로직 구현
  • 도감 기록 관리
    • 식물 발견 기록 CRUD (날짜·위치별 저장)
    • 지도·캘린더 시각화용 데이터 제공 API
  • 랭킹 및 커뮤니티 기능
    • 유저별 도감 개수 집계 및 랭킹 API 설계
  • 사용자 피드백 수용
    • 걷기 어려운 보행지 등록 및 피드백 수용을 통한 커뮤니케이션
  • 배포·운영
    • AWS EC2 + RDS 환경 구축 및 서비스 배포
    • Docker 기반 컨테이너 운영 및 관리

기술 스택

분야 기술
Language Java
Framework Spring Boot, Spring Security
Database MySQL
Infra AWS EC2, AWS RDS, AWS S3, GCP Storage
Tools Git, GitHub, Figma, Discord, Notion

주요 기능

사용자 인증 및 회원 관리

  • 카카오 로그인: 카카오 OAuth2.0 API를 연동해 소셜 로그인 기능 제공
  • JWT 기반 인증/인가 처리: 로그인 이후 모든 API 요청 시 JWT 검증을 통해 보안 강화

AI 기반 미션 생성 및 수행

  • Gemini 기반 '오늘의 미션' 자동 생성: 랜덤한 비율로 지역 데이터 정보와 혼합된 미션 제공
  • 미션 수행 과정 기록: AI로 부터 응답 받은 성공 결과를 지도·캘린더에 표시

AI 챗봇 식물 인식

  • 사진 업로드 → 식물 종 추정: 사용자가 촬영한 식물을 AI 모델과의 통신을 통해 식물 종 판별
  • 대화형 설명 제공: 챗봇이 해당 식물의 특징, 서식지, 계절성 등을 설명하고 사용자 질문에 응답하는 대화형 인터페이스 제공
  • 대화 기억 및 심화 학습: 동일 유저의 같은 종에 대한 이전 대화를 기억하여 반복 질문 시 심화된 설명 제공

도감 기록 관리

  • 발견 기록 저장 및 조회: 날짜·위치·식물명·사진·설명 등을 기록하여 유저별 개인 도감 형태로 축적
  • 지도와 캘린더 기반 기록 시각화: 식물 발견 위치를 지도 위에 표시, 일자별로 어떤 식물 발견했는지 요약 표시
  • 도감 수 기준 랭킹 제공: 전체 사용자 간 도감 수 비교하여 전체/개인별 랭킹 표시

사용자 피드백

  • 보행 환경 개선 의견 수집: 사용자가 위치 정보와 함께 보행에 불편한 장소에 대한 피드백 저장
  • 행정 활용 가능성: 축적된 피드백 데이터를 동대문구청 등 행정기관에 제공하여, 실제 보행 환경 개선 자료로 활용될 수 있음

아키텍처

Image

주요 설계

🔹 JWT 기반 인증 구조

  • 목적: 카카오 로그인 이후 stateless 구조를 유지하고, 서버 확장 시에도 인증 일관성을 보장하기 위해 JWT 기반 인증 방식을 사용
  • 구성: 클라이언트가 카카오 로그인 성공시 JWT 생성하여 전달하여 API 요청시 JWT를 헤더에 포함해 인증/인가 처리, 토큰 유효성 검증 및 사용자 권한 확인 후 자원 접근 허용.

🔹 WebClient 기반 AI 연동

  • 목적: Gemini API와 식물 인식 모델 호출 시 비동기 처리를 지원하고, 안정적인 응답 파싱 및 확장성을 확보하기 위함
  • 구성: 클라이언트로부터 사진 업로드 및 미션 요청 수신하면 서버에서 WebClient를 통해 AI 모델 API 호출하여 응답을 전달

🔹 GCP Storage를 이용한 이미지 관리

  • 목적: 서버의 부담을 줄이고, 이미지 파일의 확장성과 관리 효율성을 높이기 위해 외부 스토리지로 사용
  • 구성: 클라이언트가 이미지를 요청하면, 서버는 GCP Storage에 이미지를 업로드하고 해당 파일에 접근할 수 있는 URL을 데이터베이스에 저장.

발표 자료

Image Image Image Image Image Image Image Image Image Image Image Image