Node.js(Express) + FastAPI + React 기반
강의자료 PDF 업로드, OCR, 자동 요약/문제 생성, 사용자 인증/문제풀이 등 통합 학습 플랫폼
project-root/
├── backend/ # 백엔드 (Node.js, FastAPI, DB)
│ ├── config/ # 설정/초기화 스크립트 (ex. create_database.sql)
│ ├── uploads/ # 업로드 파일 (PDF 등)
│ ├── temp_files/ # 임시 파일
│ ├── venv/ # Python 가상환경 (git에 올리지 않음)
│ ├── .env # 환경변수 (git에 올리지 않음)
│ ├── .env.example # 환경변수 예시
│ ├── requirements.txt
│ ├── package.json
│ ├── main.py, server.js, ... # 주요 백엔드 코드
│ └── ...
├── frontend/ # 프론트엔드 (React 등)
│ ├── public/
│ ├── src/
│ ├── .env
│ ├── .env.example
│ ├── package.json
│ └── ...
├── .gitignore
├── README.md
└── ...
git clone [repository-url]
cd backend
- Node.js
- Python
python -m venv venv
source venv/bin/activate # (Windows: venv\Scripts\activate)
pip install -r requirements.txt
.env.example 파일을 복사해 .env로 만들고, 값을 채워주세요.
- 백엔드 예시
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=1234
DB_NAME=study_platform
JWT_SECRET=your-secret-key
OPENAI_API_KEY=your-openai-api-key
- MariaDB/MySQL에서 아래 명령어로 DB/테이블 생성
mysql -u root -p < config/create_database.sql
- Node.js
- FastAPI
uvicorn main:app --reload
- PDF 강의자료 업로드 및 관리
- OCR(텍스트 추출, Tesseract)
- 슬라이드 요약 및 문제 자동 생성
- 사용자 인증/문제풀이/오답노트/약점 분석
- 학습 진도 및 intensity 추적
| 메인 화면 |
강의자료 요약 |
 |
 |
| 문제 풀이 |
학습 리포트 |
 |
 |
- Node.js, Express.js
- FastAPI, Python
- MariaDB
- JWT 인증
- 외부 요약/문제 생성 API
- Tesseract OCR
- React (프론트)
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=1234
DB_NAME=study_platform
JWT_SECRET=your-secret-key
OPENAI_API_KEY=your-openai-api-key
- DB 스키마/초기화:
mysql -u root -p < backend/config/create_database.sql
- 주의: 기존 study_platform DB가 생성됩니다. 필요시 삭제 쿼리문을 실행하세요.
- 한글:
kor.traineddata
- 영어:
eng.traineddata
- 다운로드 후 Tesseract의
tessdata 폴더에 넣으세요.
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # Windows 예시
POST /register - 회원가입
POST /login - 로그인
GET /api/profile - 사용자 정보 조회
POST /api/upload - PDF 업로드
GET /archive/list - 업로드된 자료 목록
GET /archive/:lecture_id - 특정 자료의 슬라이드 요약
POST /archive/:lecture_id/slide/:slide_number/summary - 슬라이드 요약 생성
POST /archive/:lecture_id/summary - 전체 자료 요약
POST /quiz/generate - 슬라이드 기반 문제 자동 생성
POST /quiz/submit - 문제 제출/채점
GET /quiz/wrong-notes - 오답노트 전체 조회
POST /api/study-time - 학습 시간 기록
GET /api/study-intensity/today - 오늘의 학습 강도
GET /api/study-intensity/month - 이번 달 학습 강도
.env, venv/, node_modules/, uploads/ 등은 git에 올리지 마세요. .gitignore로 관리
create_database.sql 실행 시 기존 DB가 삭제/재생성됩니다. 운영 환경에서는 주의!
- Tesseract 설치/경로/언어데이터는 각자 환경에 맞게 설정
- 민감정보는
.env로만 관리, 절대 커밋 금지