- 행복 기록 (Record): 글, 사진, 색상 선택을 통해 일상의 성취를 '사탕'이라는 오브젝트로 기록합니다.
- 맞춤형 추천 (Recommendation):
- 사용자의 현재 에너지, 가용 시간, 예산 상태를 입력 변수로 받아 맞춤형 행동 미션을 제공합니다.
- 누적된 과거 데이터를 분석하는 AI 추천 로직을 적용하여, 사용할수록 개인화된 추천 결과를 도출합니다.
- 보관함 및 캘린더 (Archive):
- 캘린더 뷰를 통해 월별 행복 기록(사탕)을 시각적으로 조회하는 기능을 제공합니다.
- 데이터베이스에 아카이빙된 사용자 기록을 날짜별로 필터링하여 효율적으로 호출합니다.
- Public Subnet과 Private Subnet을 분리하여 보안을 강화했습니다.
- Cloudflare를 통한 SSL 인증서 및 CDN을 적용했습니다.
- AWS RDS와 S3를 연동하여 데이터베이스 및 파일 저장소를 구성했습니다.
본 프로젝트는 Spring Security를 기반으로 한 강력한 인증 및 권한 시스템을 구현했습니다.
- Google OAuth 2.0 기반 소셜 로그인을 사용하여 사용자 인증을 처리합니다.
- 비밀번호를 평문화하여 저장하지 않으며, OAuth를 통해 안전한 인증을 제공합니다.
- JWT(JSON Web Token) 기반 인증을 통해 stateless한 인증 방식을 구현했습니다.
- 어드민 권한과 일반 유저 권한을 분리하여 역할 기반 접근 제어(RBAC)를 구현했습니다.
- Spring Security의
@PreAuthorize어노테이션을 활용하여 API 엔드포인트별 권한을 세분화했습니다. - 인증되지 않은 사용자와 권한이 없는 사용자에 대한 예외 처리를 구현했습니다.
| 기술 | 배지 |
|---|---|
| Spring Boot | |
| MySQL | |
| Swagger | |
| Notion |
Git Flow를 기반으로 하며, 다음과 같은 브랜치 형식을 따릅니다.
-
Main Branch
- 배포 가능한 상태의 코드를 유지합니다.
- 이 브랜치에 push 되면 AWS EC2로 자동 배포(CD)가 진행됩니다.
-
Feature Branch
<type>/<description>-#<issue_number>형식을 따릅니다.- PR 생성 시 자동 빌드 및 테스트(CI)가 진행됩니다.
- 예시:
feat/signup-api-#14,fix/image-upload-#23
- PR(Pull Request) 생성 시 GitHub Actions가 트리거됩니다.
- Java Build 및 Test 수행 후 결과를 리포트합니다.
main브랜치에 코드가 머지되면 배포 파이프라인이 실행됩니다.- Docker 이미지를 빌드하고 AWS EC2 서버에 컨테이너를 배포합니다.
| [팀원1 이름] | [팀원2 이름] | [팀원3 이름] |
|---|---|---|
| BE / Leader | BE | BE |
| GitHub | GitHub | GitHub |