Skip to content

leegaarden/cardify

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👑 소개영상

cardify.mp4

Cardify Back-End Server Project

지능적인 플래시 카드 학습 Web 서비스

📋 Project Info

🔄 Fork Information

  • Original Repository: UMC-CARDIFY/Server
  • Forked by: 이정원
  • Fork Purpose: 개인 포트폴리오 및 기능 개선
  • Fork Date: 2025.09.02

🛠️ Tech Stack

  • Backend: Java 17, Spring Boot 3.3.1
  • Build Tool: Gradle 8.0
  • Database: MySQL 8.0
  • Authentication: Spring Security + JWT
  • Documentation: Swagger/OpenAPI 3.0

🌟 My Contributions & Improvements

✨ 개발한 기능

  • 🔐 사용자 인증 로직 - Spring Security를 통한 토큰 갱신 로직 최적화
  • 💸 간편 정기 결제 기능 - Portone API 토큰 캐싱 처리 및 결제 실패시 지수백오프방식과 알림 도입
  • 🔍 CI/CD - Jenkins를 활용한 무중단 배포

🐛 수정한 버그

  • 사용자 인증 토큰 갱신 오류로 인한 데이터 로드 에러 해결

🔧 개선한 부분

  • 프론트와의 통신을 위한 토큰 위치 및 인증 프로세스 개선
  • Portone API 토큰 캐싱 기법 적용하여 API 호출률 17%로 최적화
  • 결제 실패시 지수백오프 방식 도입을 통해 평균 성공 소요 시간 10분대로 최적화
  • git wbehooks와 jenkins를 활용하여 무중단 배포

🚀 Quick Start

# 1. 저장소 클론
git clone https://github.com/leegaarden/cardify.git
cd cardify

# 2. MySQL 데이터베이스 설정
mysql -u root -p
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 3. 환경설정 파일 복사 및 수정
cp src/main/resources/application.yml.example src/main/resources/application.yml
# application.yml에서 데이터베이스 정보 수정

# 4. 빌드 및 실행
./gradlew clean build
./gradlew bootRun

✅ 실행 확인

🔀 Git Flow Strategy

우리 팀은 Git Flow 브랜치 전략을 사용하여 체계적으로 개발했습니다.

브랜치 구조

main (배포용)
├── develop (개발 메인)
│   ├── feature/login (사용자 인증)
│   ├── feature/discord (결제 실패 알림)
│   └── feature/kakaopay (카카오 정기 결제)
├── release/v1.0.0 (릴리즈 준비)
├── release/v1.1.0
└── hotfix/token-renewal (토큰 갱신 문제 긴급 해)

브랜치별 역할

  • main: 배포 가능한 안정적인 코드
  • develop: 다음 릴리즈를 위한 개발 브랜치
  • feature/*: 새로운 기능 개발
  • hotfix/*: 배포 후 긴급 버그 수정

워크플로우

  1. develop에서 feature/기능명 브랜치 생성
  2. 기능 개발 완료 후 develop으로 Pull Request
  3. 코드 리뷰 후 develop에 merge
  4. 테스트 완료 후 maindevelop에 merge

📚 API Documentation

🔑 Authentication

POST /api/v1/auth/token
GET  /api/v1/auth/refresh
GET  /api/v1/auth/check-refresh-token

👤 User

PUT    /api/v1/users/notification          # 사용자 알림 설정 변경
PUT    /api//v1/users/name                 # 사용자 이름 변경
POST   /api/v1/users/logout                # 사용자 로그아웃
GET    /api/v1/users/mypage                # 사용자 마이페이지 조회
GET    /api/v1/users/check                 # 사용자 출석체크

💸 PaymentMethod

PUT /api/v1/payment-methods/{id}/default   # 기본 결제 수단 변경

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

👤 Author

이정원

🙏 Acknowledgments


이 프로젝트가 도움이 되었다면 Star를 눌러주세요!

This README was crafted with ❤️ for my portfolio

About

지능적인 플래시 카드 학습 Web 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 88.3%
  • HTML 11.7%