Skip to content

umc-hackaton-4team/BE

Repository files navigation

Image

🍬 BONBON

  • 행복 기록 (Record): 글, 사진, 색상 선택을 통해 일상의 성취를 '사탕'이라는 오브젝트로 기록합니다.
  • 맞춤형 추천 (Recommendation):
    • 사용자의 현재 에너지, 가용 시간, 예산 상태를 입력 변수로 받아 맞춤형 행동 미션을 제공합니다.
    • 누적된 과거 데이터를 분석하는 AI 추천 로직을 적용하여, 사용할수록 개인화된 추천 결과를 도출합니다.
  • 보관함 및 캘린더 (Archive):
    • 캘린더 뷰를 통해 월별 행복 기록(사탕)을 시각적으로 조회하는 기능을 제공합니다.
    • 데이터베이스에 아카이빙된 사용자 기록을 날짜별로 필터링하여 효율적으로 호출합니다.

🏗️ 아키텍처

📊 ERD

GoodGame 배너

☁️ AWS VPC

Architecture
  • 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 Spring Boot 3.4
MySQL MySQL
Swagger Swagger
Notion 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

⚙️ CI/CD Pipeline

🔄 Continuous Integration

  • PR(Pull Request) 생성 시 GitHub Actions가 트리거됩니다.
  • Java Build 및 Test 수행 후 결과를 리포트합니다.

🚀 Continuous Deployment

  • main 브랜치에 코드가 머지되면 배포 파이프라인이 실행됩니다.
  • Docker 이미지를 빌드하고 AWS EC2 서버에 컨테이너를 배포합니다.

👥 팀원 및 팀 소개

[팀원1 이름] [팀원2 이름] [팀원3 이름]
팀원1 팀원2 팀원3
BE / Leader BE BE
GitHub GitHub GitHub

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •