Skip to content

CEO-Nick/make-course-curriculum

Repository files navigation

🎓 학습 계획 생성 서비스 (Learning Planner)

서비스 URL : https://make-curriculum.vercel.app/

📚 프로젝트 개요

이 프로젝트는 온라인 학습 강의의 커리큘럼을 분석하고 사용자 맞춤형 학습 계획을 생성해주는 Spring Boot 기반의 서비스입니다. 인프런 강의를 기반으로 개인화된 학습 일정을 계획할 수 있으며, 다양한 학습 방식에 따라 유연하게 커리큘럼을 구성합니다.

✨ 주요 기능

📖 강의 관리

  • 인프런 강의 URL을 통한 강의 정보 및 커리큘럼 데이터 자동 수집
  • 강의 검색 기능
  • 강의 목록 조회 기능

📅 학습 계획 생성

  1. 기간 기반 학습 계획

    • 시작일과 종료일을 설정하여 해당 기간 내에 강의를 완료하는 계획 생성
    • 공휴일 포함/제외 옵션 지원
    • 주당 학습 빈도 설정 가능 (매일, 주 5회, 주 3회, 주 2회)
  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/                               # 유틸리티 클래스

🔌 API 엔드포인트

강의 관리 API 📚

  • POST /course - 인프런 URL로 새 강의 추가
  • GET /course?searchTerm={검색어} - 강의 검색
  • GET /course/all - 모든 강의 목록 조회

학습 계획 생성 API 📝

  • POST /study-plans/date-range - 시작일~종료일 기반 학습 계획 생성
  • POST /study-plans/daily-hours - 일일 학습 시간 기반 학습 계획 생성
  • GET /curriculum?courseId={강의ID} - 특정 강의의 커리큘럼 조회

🧠 학습 계획 알고리즘

이 서비스의 핵심은 사용자의 학습 조건에 최적화된 학습 계획을 생성하는 알고리즘입니다.

  1. 강의 시간 계산 ⏱️

    • 실제 강의 시간에 사용자가 설정한 재생 속도를 적용하여 실제 학습 시간 계산
    • 예: 10분 강의를 1.5배속으로 시청하면 약 6.7분 소요
  2. 기간 기반 계획 생성 📅

    • 시작일과 종료일 사이의 가용 날짜를 계산
    • 공휴일이나 주말을 포함/제외하는 옵션 적용
    • 학습 빈도(매일, 주 5회 등)에 따라 실제 학습일 필터링
    • 전체 강의 시간을 총 학습일로 골고루 분배
  3. 일일 학습 시간 기반 계획 생성

    • 사용자가 설정한, 하루에 학습 가능한 시간 계산
    • 강의들을 하루 학습 시간에 맞게 그룹화
    • 학습 빈도에 따라 주차별, 일자별 학습 계획 생성

About

손쉽게 인터넷 강의 계획 만들어주는 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages