Skip to content
@Quest-Masters

Quest Masters

🎯 DailyQuest

매일의 목표를 게임처럼 재미있게 달성하세요!

Vue.js Spring Boot Java MySQL AI


DailyQuest는 사용자가 일일 목표를 설정하고 추적할 수 있도록 도와주는 혁신적인 풀스택 웹 애플리케이션입니다.

Vue.js 프론트엔드와 Spring Boot 백엔드로 구성되어 있으며, AI 기반 퀘스트 추천 기능을 통해 개인 맞춤형 목표 달성을 지원합니다.

📸 프로젝트 구현샷

🤖 AI 퀘스트 & 소셜 로그인

Spooky (4)

📅 캘린더 뷰 & 캘린더 보드

Spooky (1)

🏗️ 프로젝트 구조

DailyQuest/
├── Daily_Quest/          # Vue.js 프론트엔드
├── DailyQuestServer/     # Spring Boot 백엔드
└── README.md            # 프로젝트 문서

🚀 주요 기능

🎮 게임화된 목표 관리 시스템

🎯 Core Features

  • 퀘스트 시스템: 일일 목표를 게임 퀘스트처럼 관리
  • 📊 진행률 추적: 실시간 목표 달성도 확인
  • 🗓️ 캘린더 통합: 일정과 목표를 한눈에 확인
  • 🏆 성취 시스템: 목표 달성 시 보상과 피드백
  • 👤 사용자 프로필: 개인화된 목표 관리

🤖 AI-Powered Features

  • 🧠 지능형 퀘스트 추천: 개인 패턴 분석 기반 제안
  • 📈 맞춤형 목표: 사용자 선호도에 맞는 퀘스트 생성
  • 💡 스마트 분류: 자동 카테고리 분류 및 우선순위 설정
  • 🔄 적응형 시스템: 사용자 피드백 학습
  • 실시간 조언: AI 기반 목표 달성 팁

🛠️ 기술 스택

💻 Modern Full-Stack Architecture

🎨 Frontend Stack

기술 버전 설명
Vue.js 3.5+ Progressive Framework
Vite 6.2+ Fast Build Tool
Pinia 3.0+ State Management
Axios 1.10+ HTTP Client
Vitest Latest Testing Framework

⚙️ Backend Stack

기술 버전 설명
Spring Boot 3.4+ Java Framework
Java 21 Programming Language
MySQL 8.0+ Database
Gradle Latest Build Tool
JWT 0.11+ Authentication

🤖 AI & DevOps

TogetherAI ESLint Prettier Git
AI Integration Code Linting Code Formatting Version Control

📦 빠른 시작 가이드

5분 안에 시작하기!

🔧 사전 요구사항

Node.js
18.0+

Java
21

MySQL
8.0+

Git
Latest

📥 Step 1: 프로젝트 클론

git clone <repository-url>
cd DailyQuest

🗄️ Step 2: 백엔드 설정

📊 데이터베이스 설정

CREATE DATABASE daily_quest;

🔐 환경 변수 설정

# 🔑 필수 환경 변수
export JWT_SECRET=your-jwt-secret-key-here
export TOGETHER_AI_KEY=your-together-ai-api-key-here

🚀 백엔드 실행

cd DailyQuestServer
./gradlew bootRun
🌐 서버가 http://localhost:8080에서 실행됩니다

🎨 Step 3: 프론트엔드 설정

📦 의존성 설치

cd Daily_Quest
npm install

⚙️ 환경 설정

.env.example 파일을 참고하여 .env 파일을 생성하고 필요한 환경 변수를 설정하세요.

🔥 개발 서버 실행

npm run dev
🎉 프론트엔드가 http://localhost:5173에서 실행됩니다

🔧 개발 명령어

프론트엔드

# 개발 서버 실행
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 build

🏛️ 아키텍처

시스템 구조도

Web App Reference Architecture (3)

Vue.js 프론트엔드, Spring Boot 백엔드, MySQL 데이터베이스, TogetherAI 통합으로 구성된 전체 시스템 아키텍처


백엔드 구조

src/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/            # 정적 자원

🔐 보안 기능

JWT 인증

  • Access Token과 Refresh Token 기반 인증
  • 자동 토큰 갱신
  • 보안 인터셉터를 통한 API 호출 보호
  • 레거시 토큰 정리 및 마이그레이션

데이터베이스 보안

  • 환경 변수를 통한 민감 정보 관리
  • SSL 비활성화 설정 (개발 환경)

🤖 AI 기능

DailyQuest는 TogetherAI를 활용하여 사용자 맞춤형 퀘스트를 추천합니다.

지원 기능

  • 개인화된 퀘스트 추천
  • 카테고리별 퀘스트 생성
  • 사용자 패턴 분석 기반 제안

🧪 테스트

프론트엔드 테스트

  • Unit Tests: Vitest + Vue Test Utils 사용
  • 컴포넌트 테스트: Vue 컴포넌트 단위 테스트

백엔드 테스트

  • Unit Tests: JUnit 5 사용
  • Integration Tests: Spring Boot Test 활용
  • Security Tests: Spring Security Test 지원

📝 API 문서

주요 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 - 프로필 업데이트

🤝 기여하기

  1. 프로젝트를 Fork합니다
  2. 새로운 기능 브랜치를 생성합니다 (git checkout -b feature/AmazingFeature)
  3. 변경사항을 커밋합니다 (git commit -m 'Add some AmazingFeature')
  4. 브랜치에 Push합니다 (git push origin feature/AmazingFeature)
  5. Pull Request를 생성합니다

Popular repositories Loading

  1. Daily_Quest_frontend Daily_Quest_frontend Public

    Vue

  2. Daily_Quest_backend Daily_Quest_backend Public

    Java

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…