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 모델과의 통신을 통해 식물 종 판별
- 대화형 설명 제공: 챗봇이 해당 식물의 특징, 서식지, 계절성 등을 설명하고 사용자 질문에 응답하는 대화형 인터페이스 제공
- 대화 기억 및 심화 학습: 동일 유저의 같은 종에 대한 이전 대화를 기억하여 반복 질문 시 심화된 설명 제공
도감 기록 관리
- 발견 기록 저장 및 조회: 날짜·위치·식물명·사진·설명 등을 기록하여 유저별 개인 도감 형태로 축적
- 지도와 캘린더 기반 기록 시각화: 식물 발견 위치를 지도 위에 표시, 일자별로 어떤 식물 발견했는지 요약 표시
- 도감 수 기준 랭킹 제공: 전체 사용자 간 도감 수 비교하여 전체/개인별 랭킹 표시
사용자 피드백
- 보행 환경 개선 의견 수집: 사용자가 위치 정보와 함께 보행에 불편한 장소에 대한 피드백 저장
- 행정 활용 가능성: 축적된 피드백 데이터를 동대문구청 등 행정기관에 제공하여, 실제 보행 환경 개선 자료로 활용될 수 있음
🔹 JWT 기반 인증 구조
- 목적: 카카오 로그인 이후 stateless 구조를 유지하고, 서버 확장 시에도 인증 일관성을 보장하기 위해 JWT 기반 인증 방식을 사용
- 구성: 클라이언트가 카카오 로그인 성공시 JWT 생성하여 전달하여 API 요청시 JWT를 헤더에 포함해 인증/인가 처리, 토큰 유효성 검증 및 사용자 권한 확인 후 자원 접근 허용.
🔹 WebClient 기반 AI 연동
- 목적: Gemini API와 식물 인식 모델 호출 시 비동기 처리를 지원하고, 안정적인 응답 파싱 및 확장성을 확보하기 위함
- 구성: 클라이언트로부터 사진 업로드 및 미션 요청 수신하면 서버에서 WebClient를 통해 AI 모델 API 호출하여 응답을 전달
🔹 GCP Storage를 이용한 이미지 관리
- 목적: 서버의 부담을 줄이고, 이미지 파일의 확장성과 관리 효율성을 높이기 위해 외부 스토리지로 사용
- 구성: 클라이언트가 이미지를 요청하면, 서버는 GCP Storage에 이미지를 업로드하고 해당 파일에 접근할 수 있는 URL을 데이터베이스에 저장.