개발 인원: BE 2인, AOS 1인, 풀스택 1인
개발 기간: 2025. 06. ~ 2025. 06. (2주)
Github 바로가기 →

🍚 서비스 소개

전북잇다는 전북특별자치도의 향토음식을 중심으로 한 맞춤형 여행 AI 큐레이션 모바일 앱입니다. 단순한 맛집 추천 서비스가 아닌, 사용자가 원하는 음식과 지역을 선택하면 AI가 최적의 여행 동선을 고려한 맞춤 맞로드 코스를 자동으로 생성해주는 서비스입니다. 스탬프 수집과 인증 기능을 통해 게임적 요소를 더해 사용자의 지속적인 참여와 전북 향토음식 문화 체험을 유도합니다.

 

 

👤 담당 역할

  • 백엔드 설계 및 개발 (기여도 30%)
    • Spring Boot 기반 REST API 아키텍처 설계 및 개발
  • JWT 구현
    • JWT 토큰 생성, 검증, 갱신 로직 구현
    • JWT 토큰 기반 사용자 인증/인가 시스템 설계
    • Spring Security와 JWT 연동을 통한 보안 강화
  • Android 개발 (기여도 40%)
    • 회원가입, 로그인
    • 식당/코스 북마크
    • 스탬프 수집 및 필터링
    • 메인 화면, 향토음식 소개 기능

 

 

⚙️ 개발 환경

언어 Java 17, Kotlin
서버 Docker 27.5.1, Railway
프레임워크 Spring Boot 3.4.1, Spring Security, JPA, Android SDK
DB MySQL 8.0, Redis
IDE IntelliJ IDEA CE 2024.2.6, Android Studio 2024.2.2
API, 라이브러리 RESTful API, Retrofit/OkHttp, JWT, AWS SDK(S3), ...

 

 


 

아키텍처 구성도

 


주요 기술 선정 이유

Android Hilt

  • 복잡한 의존성 관리와 팀 협업 효율성을 위해 선택. Repository, ViewModel 간 자동 주입으로 코드 결합도를 낮추고 테스트 용이성 확보.

DataStore

  • 사용자 토큰 및 설정 정보 저장을 위해 선택. SharedPreferences 대신 Flow 기반 비동기 처리와 타입 안전성을 제공하여 안정적인 로컬 데이터 관리.

Docker+Railway

  • 컨테이너화된 배포 환경 구축을 위해 선택. GitHub Actions와 연동한 CI/CD 파이프라인으로 코드 변경 시 자동 빌드 및 배포 구현.

AWS S3

  • 사용자 업로드 이미지 저장을 위해 선택. 안정적인 클라우드 스토리지로 대용량 이미지 파일 관리와 CDN을 통한 빠른 로딩 속도 제공.

 


 

 

주요 기능 및 목업

 


 

성과

팀 성과

  • 기획부터 개발, 배포까지 2주 만에 완성도 있는 앱 개발
  • 단순 맛집 추천이 아닌 '맛로드 코스' 자동 생성으로 새로운 가치 창출
  • 공공데이터 API 연동 및 AI 큐레이션 기능까지 구현한 풀스택 서비스

개인 기여

  • Spring Security 기반 JWT 인증/인가 시스템 설계 및 구현
    • JWT 토큰 생성, 검증, 블랙리스트 관리 로직 구현
    • Spring Security FilterChain과 연동한 커스텀 JWT 인증 필터 개발
  • DataStore를 활용한 로컬 데이터 관리 시스템 구현
  • Android Hilt 의존성 주입으로 모듈화된 아키텍처 구축
    • 의존성 주입을 통한 코드 유지보수성 향상
  • 백엔드 개발 경험을 바탕으로 서버-클라이언트 간 원활한 API 연동

 


 

회고

  • 스탬프 수집 기능에서 실시간 필터링과 진행률 계산 로직을 구현하면서, 사용자 인터페이스에서의 상태 관리와 데이터 동기화의 중요성을 깨달을 수 있었습니다.
  • 팀원의 제안으로 Android Hilt를 도입해보면서, 처음에는 복잡해 보였지만 Repository와 ViewModel의 의존성 관리가 자동화되어 코드가 훨씬 깔끔해지는 것을 경험할 수 있었습니다.
  • 처음으로 Spring Security와 JWT를 연동한 보안 시스템 구현에 도전하면서 인증 필터 체인과 토큰 검증 로직을 이해하는 과정에서, 웹 보안의 핵심 원리와 인증/인가 시스템에 대한 이해를 얻을 수 있었습니다.
  • 백엔드를 담당했다가 이후 Android 개발로 역할을 전환하면서 다소 혼란이 있을 뻔했지만, 서버와 클라이언트 간의 데이터 흐름을 완전히 이해하게 되어 API 설계와 연동에서 더 나은 결과를 낼 수 있었습니다.

 


 

Detail

1. Hilt 의존성 주입을 통한 모듈화 아키텍처 구축

이전 프로젝트에서는 Fragment에서 직접 Repository를 생성하고 ViewModel에 전달하는 방식으로 구현했으나, 객체 생성과 의존성 관리가 복잡해지는 문제가 발생했습니다.
이를 해결하기 위해 Hilt 의존성 주입 프레임워크를 도입하여 NetworkModule, ApiModule, DataStoreModule로 계층을 분리했습니다. @Singleton 어노테이션으로 AuthRepository와 StampRepository의 생명주기를 관리하고, @HiltViewModel과 @AndroidEntryPoint를 통해 자동 주입을 구현했습니다. 결과적으로 각 컴포넌트가 필요한 의존성만 주입받아 코드 결합도가 현저히 낮아지고, 개발 효율성이 향상되었습니다.

 

 

2. 커스텀 Interceptor를 활용한 API 인증 오류 해결

개발 중 자체 서버 API 호출 시 403 Forbidden 오류가 지속적으로 발생하는 문제에 직면했습니다. 모든 API 요청에 JWT 토큰이 포함되지 않아 서버에서 인증되지 않은 요청으로 처리되었으며, 동시에 공공데이터 API에는 토큰이 불필요한 상황이었습니다.
이를 해결하기 위해 OkHttp의 AuthInterceptor를 구현하여 요청 경로를 분석해 자동으로 토큰을 추가하는 시스템을 구축했습니다. excludedPaths로 로그인/회원가입 경로를 제외하고, 나머지 요청에는 DataStore에서 JWT 토큰을 조회해 "Bearer" 헤더를 자동으로 추가하도록 구현했습니다. 결과적으로 403 오류가 완전히 해결되었으며, 개발자가 매번 수동으로 토큰을 관리할 필요가 없어져 개발 효율성이 크게 향상되었습니다.

'project' 카테고리의 다른 글

요비 (YOBI)  (0) 2025.09.05
러너스 (LEARNAUTH)  (0) 2025.09.05
레퍼 (REPER)  (0) 2025.09.05
프로필 사진

시작이 반이라면

나머지 반도 완성하는 개발자,

이서현입니다.

저를 소개합니다

'한 번 맡으면 정말 다 해내는 개발자'

일 년간 저를 지켜본 팀원이 붙여준 수식어입니다.

복잡하고 새로운 일도 책임지고 반드시 완수해냅니다.

SSAFY 12기 구미캠퍼스에서 2번의 팀장 경험을 포함한 다양한 팀 프로젝트를 진행했으며,

모든 프로젝트에서 베스트 멤버로 선정되었습니다.

팀 그라운드룰과 Git 컨벤션 수립, 일일 스크럼과 Jira를 활용한

체계적인 프로젝트 관리를 지향합니다.

학습 내용을 블로그에 꾸준히 문서화하고 CS 스터디를 주도적으로 진행하며,

새로운 기술 학습과 문제 해결에 적극적으로 임합니다.

명확한 소통, 밝은 에너지를 통해 팀과 조직에 긍정적인 영향을 미치는 개발자가 되고 싶습니다.

SKILLS
& TOOLS

Spring
Kotlin
Java
JPA
MySQL
PostgreSQL
Android Studio
Github
Figma
AWS S3
Docker
Kubernates

AWARDS

2025.02
SSAFY 팀 프로젝트 우수상
• OAuth 2.0 카카오 로그인 시스템 설계
• MediaPipe 모션 인식 기능 구현 및 구현
• Spring Boot 기반 REST API 설계 및 구현
• 백엔드 팀원들을 대상으로 한 기술 설명 문서화 및 공유

PROJECT

RECENT
EXPERIENCE

2024.07 - 2025.06
삼성 청년 SW 아카데미 (SSAFY)
• 집중 코딩 및 알고리즘 교육 (820시간)
• 4차 산업혁명 기술 프로젝트 과정 (800시간)
• Java, Vue.js, Spring, DB, Kotlin, Android 등
• 모바일, 블록체인, AI 프로젝트 등 수행
2025.06 -
CS 및 알고리즘 스터디
• CS 지식 공부 및 블로그 포스팅
• 알고리즘 코드 리뷰 및 로직 정리 (Github)

Thank You!

망설이지 않는 도전, 유연한 협업 정신으로

조직에 기여하는 개발자가 되겠습니다.

감사합니다!

PC 버전에 최적화 된 홈페이지입니다.
이메일 주소가 복사되었습니다!