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
npm install
- 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
npm start
- 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가 생성됩니다. 필요시 삭제 쿼리문을 실행하세요.
- Windows: UB Mannheim Tesseract 설치 파일 다운로드/설치 후 환경변수 등록
- Mac:
brew install tesseract
- Linux:
sudo apt-get install tesseract-ocr
- 한글:
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로만 관리, 절대 커밋 금지
- 이슈/PR/질문은 언제든 환영합니다!



