— HRD 원격훈련 인정 요건을 충족하는 기업 직업능력개발 LMS —
원격훈련 과정을 수강하는 학습자 — 학습·진도·수료.
강의를 진행하고 과제·평가·채점을 담당.
회원·과정·통계·매출·환불을 직접 관리.
요구사항 분석 · 3단 IA/화면 설계 · CoreUI 반응형 UI · Next.js 16 / React 19 / Vimeo SDK 구현.
백엔드 2인과 협업 — FastAPI 메인 API · Rust(Axum) JWT 사이드카 · OpenAPI 기반 연동, PM 역할 겸임.
AWS ECS + CodePipeline, S3 + CloudFront 정적 호스팅, ALB 라우팅.
Vimeo Player/API, PortOne 본인인증/결제, OpenAI(RAG), AWS SES/S3/SQS.
@vimeo/player SDK 기반 재생/일시정지/배속 제어, 차시별 영상 임베드.
다음 차시 자동 이동, 수강 기간 만료 시 재생 차단으로 인정 기간 관리.
video_heartbeat 엔드포인트에 주기 전송
timeupdate 이벤트를 250ms 간격으로 감지, 백엔드가 지정한 cue point 시점에 도달하면 영상을 자동 정지퀴즈 통과 시점까지의 시청 구간만 정상 진도로 반영.
완료 차시는 다음 차시로 자동 연결, 미완료 시 재생 제한.
visibilitychange 이벤트로 탭 이탈·창 최소화 감지 시 자동 정지.
HRD 기준에 따른 재생 배속 상한 적용.
이미 수강한 구간까지만 이동 허용, seeked 이벤트로 강제 복귀.
학습 중 무작위 시점에 클릭/입력 검증 팝업.
수강신청 추이·매출 시각화(ApexCharts).
과정>과목>차시 계층 등록·승인.
권한 승인 워크플로우, 감사 이력.
문제은행 기반 출제·일괄 등록(bulk), 자동 채점 + 교강사 수동 채점, 과제 유사도 검사로 표절 방지.
pgvector + LangChain + OpenAI 자체 파이프라인. 고객센터(FAQ/공지) · 학습도우미(강의자료) 2채널, 응답 스트리밍 UI.
부정수강 방지 5종(탭이탈/배속/seek/본인확인/서버검증)을 프론트-백엔드 협업으로 구현.
JWT 검증·비디오 하트비트 등 고빈도 호출을 Rust(Axum)로 분리해 Python 메인 부하 분산. bitcode + zstd + base64 + HMAC 페이로드 인코딩.
Rust 사이드카와 Python 백엔드 간 SQS 큐로 느슨하게 결합(jwt_validity_checker_enqueue_svc).
외부 벡터 DB 없이 PostgreSQL 단일 인프라로 운영, LangChain Postgres 어댑터 활용.
email·name·CI·phone 등 개인정보를 전용 암호화/해시 키 쌍으로 별도 관리(개인정보보호법 대응).
ApiResponse<T> 래퍼(success/data/error/metadata)로 프론트-백 일관 처리, OpenAPI 스키마 자동 인라이닝.
api/domain/dto/util/ext_services/core 5계층 분리, 외부 서비스(Vimeo/PortOne/OpenAI) 어댑터 격리.
모놀리식 통합 레포 + 6개 독립 서비스 레포로 마이크로레포 운영.
부정수강 방지 5종 요건을 PoC 단계에서 먼저 검증.
AI 코드 분석 워크플로우로 FastAPI+Rust 코드를 분석, 연동 포인트 사전 도출.
주 2회 정기 싱크, 마일스톤 기반 진행 관리, API 스펙 협의 주도.
새 과정/평가 방식/AI 기능 추가가 용이한 모듈화 설계.
FastAPI + Python 3.14 — 200+ REST 엔드포인트, LangChain RAG, SQLAlchemy async.
Rust + Axum + Diesel — JWT 검증, 영상 하트비트, 레슨 진도 처리.
@vimeo/player의 timeupdate 이벤트를 250ms 간격으로 감지, 백엔드 지정 cue point 도달 시 영상을 자동 정지하고 영상 위에 absolute positioning 모달로 퀴즈를 출력. 정답 확인 후 재개.
visibilitychange 탭 이탈 감지, setPlaybackRate 배속 상한, seeked 이벤트로 미수강 구간 이동 차단, 랜덤 본인확인 팝업, Rust 사이드카(video_heartbeat)로 서버 타임스탬프 기반 학습 시간 기록.
Axum + Diesel + tokio 기반 고성능 사이드카. JWT 검증·영상 하트비트·레슨 진도 업데이트를 담당. Python 메인 서버와는 SQS 큐로 통신, 페이로드는 bitcode + zstd + HMAC으로 압축/서명.
pgvector로 임베딩 저장, LangChain Postgres 어댑터로 검색, OpenAI GPT로 답변 생성. 고객센터(FAQ/공지)와 학습도우미(강의자료) 2채널을 동일 파이프라인으로 운영. 백그라운드 sweeper가 신규 문서 자동 색인.
문제은행 기반 후보 문항 등록(bulk) → 시험 에디터에서 출제/검증/저장 → 시험 응시(Exam Attempt) → 자동 채점 + 교강사 수동 채점. 과제는 유사도 검사로 표절 방지.
회원 관리(권한 승인 워크플로우), 과정/과목/차시 계층 등록(아코디언 폼), Vimeo 영상-차시 연결, 매출 통계(ApexCharts), 환불 처리, 평가 결과 모니터링, 보안/감사 이력.
수료 조건(진도율·시험 합격·과제 완료) 충족 시 자동 발급. HRD 양식 또는 자유 양식 PDF 생성 + 발급번호 부여, 5년 보관 및 재조회/재발급 지원.
이메일·소셜 가입 + PortOne 본인인증, 약관 동의 이력 관리(term_consent), PortOne 결제·환불 워크플로우, 엑셀 일괄 등록(openpyxl), 이메일/SMS 발송 로그(SES/SMS).
TypeScript 엄격 모드, ESLint/Ruff 린팅.
Playwright E2E + Vitest 단위 테스트, GitHub PR 코드리뷰.
스킵 방지·퀴즈·수료증·3단 대시보드 실무 구현 경험.
4단계 RBAC, AWS 인프라, PDF 자동 생성, 45일 내 납품.
자체 운영, OpenAI/STT 연동, OAuth/PortOne 결제 경험.
자체 보유 → 기존 백엔드 코드베이스 빠른 파악 가능.