DailyQuest는 사용자가 일일 목표를 설정하고 추적할 수 있도록 도와주는 혁신적인 풀스택 웹 애플리케이션입니다.
Vue.js 프론트엔드와 Spring Boot 백엔드로 구성되어 있으며, AI 기반 퀘스트 추천 기능을 통해 개인 맞춤형 목표 달성을 지원합니다.
DailyQuest/
├── Daily_Quest/ # Vue.js 프론트엔드
├── DailyQuestServer/ # Spring Boot 백엔드
└── README.md # 프로젝트 문서
|
|
git clone <repository-url>
cd DailyQuestCREATE DATABASE daily_quest;# 🔑 필수 환경 변수
export JWT_SECRET=your-jwt-secret-key-here
export TOGETHER_AI_KEY=your-together-ai-api-key-herecd DailyQuestServer
./gradlew bootRuncd Daily_Quest
npm install.env.example 파일을 참고하여 .env 파일을 생성하고 필요한 환경 변수를 설정하세요.
npm run dev# 개발 서버 실행
npm run dev
# 프로덕션 빌드
npm run build
# 프리뷰 서버 실행
npm run preview
# 단위 테스트 실행
npm run test:unit
# 린팅
npm run lint
# 코드 포맷팅
npm run format# 애플리케이션 실행
./gradlew bootRun
# 테스트 실행
./gradlew test
# 빌드
./gradlew build
# 클린 빌드
./gradlew clean buildsrc/main/java/daily_quest_server/DailyQuestServer/
├── controller/ # REST API 컨트롤러
├── service/ # 비즈니스 로직
├── repository/ # 데이터 접근 계층
├── domain/ # JPA 엔티티
├── dto/ # 데이터 전송 객체
├── jwt/ # JWT 인증 처리
├── config/ # 설정 클래스
└── answerai/ # AI 통합 모듈
- User: 사용자 정보
- Quest: 퀘스트 기본 정보
- QuestDetail: 퀘스트 상세 정보
- QuestLog: 퀘스트 실행 기록
- QuestCategory: 퀘스트 카테고리
- QuestTemplate: 퀘스트 템플릿
- RefreshToken: JWT 리프레시 토큰
src/
├── components/ # 재사용 가능한 컴포넌트
├── modules/ # 기능별 모듈
├── stores/ # Pinia 스토어
├── router/ # Vue Router 설정
├── utils/ # 유틸리티 함수
├── config/ # 설정 파일
├── composables/ # Vue 3 Composition API
├── plugins/ # 플러그인 설정
└── assets/ # 정적 자원
- Access Token과 Refresh Token 기반 인증
- 자동 토큰 갱신
- 보안 인터셉터를 통한 API 호출 보호
- 레거시 토큰 정리 및 마이그레이션
- 환경 변수를 통한 민감 정보 관리
- SSL 비활성화 설정 (개발 환경)
DailyQuest는 TogetherAI를 활용하여 사용자 맞춤형 퀘스트를 추천합니다.
- 개인화된 퀘스트 추천
- 카테고리별 퀘스트 생성
- 사용자 패턴 분석 기반 제안
- Unit Tests: Vitest + Vue Test Utils 사용
- 컴포넌트 테스트: Vue 컴포넌트 단위 테스트
- Unit Tests: JUnit 5 사용
- Integration Tests: Spring Boot Test 활용
- Security Tests: Spring Security Test 지원
주요 API 엔드포인트:
POST /api/auth/login- 사용자 로그인POST /api/auth/refresh- 토큰 갱신POST /api/auth/logout- 로그아웃
GET /api/quests- 퀘스트 목록 조회POST /api/quests- 새 퀘스트 생성PUT /api/quests/{id}- 퀘스트 수정DELETE /api/quests/{id}- 퀘스트 삭제
GET /api/users/profile- 사용자 프로필 조회PUT /api/users/profile- 프로필 업데이트
- 프로젝트를 Fork합니다
- 새로운 기능 브랜치를 생성합니다 (
git checkout -b feature/AmazingFeature) - 변경사항을 커밋합니다 (
git commit -m 'Add some AmazingFeature') - 브랜치에 Push합니다 (
git push origin feature/AmazingFeature) - Pull Request를 생성합니다
