프로젝트 회고2024.06 - 2025.02헬스캐처 사업 프로젝트

HealthHola: 사업 프로젝트에서 앱과 백엔드를 함께 만들기

헬스캐처 사업을 진행하며 만든 Expo React Native 앱과 Spring Boot 백엔드입니다. 체험단 모집, 커뮤니티, 설문조사, 포인트, 쿠폰, 신고와 차단 같은 운영 기능을 앱과 API로 연결했습니다.

프로젝트 소개

헬스캐처 사업에서 운영을 목표로 개발한 건강 체험단/커뮤니티 모바일 앱 비공개 모바일 앱 저장소와 공개 백엔드 저장소의 Git 기록을 기준으로 정리했습니다. 2025년 2월 사업 정리로 앱은 현재 운영되지 않지만, 실제 서비스 운영을 목표로 구현했던 체험단, 커뮤니티, 설문, 포인트, 쿠폰, 신고와 차단 흐름을 기록합니다.

역할
모바일 앱 화면 구현, Redux 상태 관리, API 연동, Spring Boot 백엔드 기능 개발
형태
헬스캐처 사업 프로젝트
상태
사업 정리

구현한 기능

  • 체험단 모집 공고 목록, 상세, 찜 목록, 마이 리스트 구현
  • 커뮤니티 게시글 작성, 수정, 삭제, 좋아요, 댓글, 카테고리 필터 구현
  • 오늘의 설문조사 응답과 포인트 표시 흐름 구현
  • 쿠폰 등록과 사용, 마이페이지, 신고, 회원 탈퇴, 차단 사용자 관리 구현
  • JWT 재발급, OAuth2 로그인, 이메일 인증, 권한별 API 접근 제어 구현
  • 게시글 이미지 업로드와 문서 파일 관리를 위해 AWS S3 연동

사용 기술

모바일 앱은 Expo, React Native, Expo Router, Redux Toolkit, Axios로 구성했고, 백엔드는 Spring Boot, Spring Security, JWT/OAuth2, PostgreSQL, Redis, AWS S3를 사용했습니다.

Expo

빠르게 앱을 빌드하고 Android/iOS 개발 환경을 맞추기 위해 선택했습니다.

React Native

하나의 코드베이스로 모바일 앱 화면을 구현하면서 네이티브 앱 경험을 만들 수 있어 사용했습니다.

Expo Router

파일 기반 라우팅으로 홈, 체험단, 커뮤니티, 마이페이지 같은 화면 흐름을 관리하기 위해 사용했습니다.

Redux Toolkit

인증, 유저, 체험단, 커뮤니티, 설문, 쿠폰처럼 상태 도메인이 많아 slice 단위로 나누기 위해 사용했습니다.

Axios

백엔드 API 호출과 토큰 주입, 재발급 인터셉터를 공통화하기 위해 사용했습니다.

Spring Boot

모바일 앱에서 필요한 REST API를 빠르게 구성하고 도메인별 서비스 계층을 만들기 위해 선택했습니다.

Spring Security

로그인 이후 인증이 필요한 API와 공개 조회 API를 명확히 나누기 위해 사용했습니다.

JWT

모바일 앱에서 stateless 인증 흐름을 만들고 access/refresh token 재발급을 처리하기 위해 사용했습니다.

OAuth2

소셜 로그인 확장을 고려해 Google, Kakao, Naver 응답을 처리할 수 있는 구조로 도입했습니다.

PostgreSQL

운영 데이터를 관계형 모델로 안정적으로 저장하기 위해 사용했습니다.

Redis

refresh token과 인증 보조 데이터를 빠르게 조회하고 관리하기 위해 사용했습니다.

AWS S3

커뮤니티 게시글 이미지 같은 파일 업로드를 서버 파일시스템에 묶지 않기 위해 사용했습니다.

구조와 개선

앱은 Expo Router 기반 화면과 Redux slice를 도메인별로 나누고, 백엔드는 인증/커뮤니티/체험단/설문/쿠폰/신고 도메인을 컨트롤러와 서비스로 분리했습니다. 실제 운영을 위해 토큰 재발급, 신고, 차단, 파일 업로드 같은 흐름도 함께 다뤘습니다.

  • Mobile app: Expo Router 기반 탭/드로어 구조와 React Native 화면 컴포넌트
  • Redux store: auth, user, community, experience, review, report, survey, coupon slice 분리
  • apiClient: access token 주입과 401 발생 시 refresh token 기반 재발급 처리
  • Backend controllers: Auth, User, Post, Comment, Notice, Review, Survey, Coupon, Report API
  • Security layer: Spring Security stateless 세션, JWTFilter, LoginFilter, OAuth2 success handler
  • Storage/infra: PostgreSQL, Redis refresh token, AWS S3 이미지 업로드

배운 점

  • 사업 프로젝트에서는 기능 구현만큼 운영 정책, 약관 동의, 신고/차단, 쿠폰 실패 처리처럼 서비스 운영의 가장자리가 중요하다는 점을 배웠습니다.
  • 모바일 앱은 화면 수가 늘어날수록 라우팅, 상태 저장, 토큰 갱신, 에러 알림이 함께 정리되어야 사용자 흐름이 끊기지 않는다는 것을 경험했습니다.
  • 백엔드 API는 공개 조회와 인증 필요 요청을 명확히 나누고, 앱의 각 화면에서 필요한 식별자와 응답 형태를 안정적으로 유지해야 했습니다.
  • 2025년 2월 사업 정리로 실제 앱은 남아 있지 않지만, 서비스 런칭을 목표로 제품 전체 흐름을 구현해 본 경험이 남았습니다.