서비스 URL : https://make-curriculum.vercel.app/
이 프로젝트는 온라인 학습 강의의 커리큘럼을 분석하고 사용자 맞춤형 학습 계획을 생성해주는 Spring Boot 기반의 서비스입니다. 인프런 강의를 기반으로 개인화된 학습 일정을 계획할 수 있으며, 다양한 학습 방식에 따라 유연하게 커리큘럼을 구성합니다.
- 인프런 강의 URL을 통한 강의 정보 및 커리큘럼 데이터 자동 수집
- 강의 검색 기능
- 강의 목록 조회 기능
-
기간 기반 학습 계획 ⏰
- 시작일과 종료일을 설정하여 해당 기간 내에 강의를 완료하는 계획 생성
- 공휴일 포함/제외 옵션 지원
- 주당 학습 빈도 설정 가능 (매일, 주 5회, 주 3회, 주 2회)
-
일일 학습 시간 기반 학습 계획 ⌛
- 하루에 투자할 수 있는 학습 시간을 기준으로, 전체 강의를 완료하는 데 필요한 일수 계산
- 학습 빈도에 따른 주차별, 일차별 계획 제공
- 강의 재생 속도 설정 (1.0x, 1.5x, 2.0x 등) 🏃♂️
- 특정 강의부터 시작하는 옵션 지원 (중간부터 학습 시작) 🚩
- 다양한 학습 빈도 옵션 (매일, 주 5회, 주 3회, 주 2회) 📊
- 언어: Kotlin
- 프레임워크: Spring Boot
- 데이터베이스: MongoDB
- 기타 주요 라이브러리:
- Spring Data MongoDB
- Spring MVC
- Slf4j (로깅)
com.learning_planner/
├── LearningPlannerApplication.kt # 애플리케이션 진입점
├── common/ # 공통 컴포넌트
│ └── filter/ # HTTP 필터
├── config/ # 설정 클래스
├── controller/ # API 컨트롤러
├── domain/ # 도메인 모델 및 저장소
│ └── course/ # 강의 관련 도메인
├── dto/ # 데이터 전송 객체
│ ├── course/ # 강의 관련 DTO
│ └── curriculum/ # 커리큘럼 관련 DTO
├── service/ # 비즈니스 로직
└── util/ # 유틸리티 클래스
POST /course
- 인프런 URL로 새 강의 추가GET /course?searchTerm={검색어}
- 강의 검색GET /course/all
- 모든 강의 목록 조회
POST /study-plans/date-range
- 시작일~종료일 기반 학습 계획 생성POST /study-plans/daily-hours
- 일일 학습 시간 기반 학습 계획 생성GET /curriculum?courseId={강의ID}
- 특정 강의의 커리큘럼 조회
이 서비스의 핵심은 사용자의 학습 조건에 최적화된 학습 계획을 생성하는 알고리즘입니다.
-
강의 시간 계산 ⏱️
- 실제 강의 시간에 사용자가 설정한 재생 속도를 적용하여 실제 학습 시간 계산
- 예: 10분 강의를 1.5배속으로 시청하면 약 6.7분 소요
-
기간 기반 계획 생성 📅
- 시작일과 종료일 사이의 가용 날짜를 계산
- 공휴일이나 주말을 포함/제외하는 옵션 적용
- 학습 빈도(매일, 주 5회 등)에 따라 실제 학습일 필터링
- 전체 강의 시간을 총 학습일로 골고루 분배
-
일일 학습 시간 기반 계획 생성 ⌛
- 사용자가 설정한, 하루에 학습 가능한 시간 계산
- 강의들을 하루 학습 시간에 맞게 그룹화
- 학습 빈도에 따라 주차별, 일자별 학습 계획 생성