1. 개요
| 업종 | 유튜브 채널을 운영하며 영상 강의를 파는 크리에이터의 온라인 강의 |
| 시스템 목적 | 쇼핑몰에서 이뤄지는 회원 가입·구매를 강의실 수강 권한과 연결해, 학생은 산 강의를 바로 보고 운영자는 강의·자료·수강생을 한곳에서 관리하게 하는 것 |
| 제작 범위 | 역할 2개(학생·운영자) · 쇼핑몰 회원 로그인 연결 · 구매 근거별 수강권 · 영상 학습과 이어보기 · 비공개 자료실 · 운영자 강의 편집·영상 업로드·수강생 관리 · PC와 휴대폰 화면 |
| 주요 흐름 | 학생: 강의 탐색 → 쇼핑몰 구매 → 회원 연결·권한 확인 → 영상·자료 이용 → 진도·이어보기 / 운영자: 강의·상품 연결 → 영상·자료 등록 → 수강생·학습 기록 확인 → 권한·예외 처리 |
기존 강의실 화면·코드와 쇼핑몰을 그대로 살려 기능을 넓히고 서로 이은 작업입니다. 결제와 금전 환불은 쇼핑몰이 맡고, 강의실은 누가 무엇을 언제까지 볼 수 있는지를 관리합니다.
이 페이지의 화면은 비식별 테스트 데이터 화면이며, 실제 수강생·주문 기록이 아닙니다. 실제 서비스는 로그인과 서버가 있어야 동작하므로 직접 눌러보기는 두지 않았습니다.
실제 도입 때 연결할 부분: 결제·금전 환불(쇼핑몰 담당), DRM·녹화 완전 차단(만료형 영상 주소는 이를 대신하지 않음), 외부 iframe 재생의 진도 집계.
2. 과제
1. 쇼핑몰에서 산 사람과 강의를 볼 사람이 따로 논다.
구매는 쇼핑몰에서, 수강은 강의실에서 일어납니다. 누가 어떤 상품을 샀는지가 강의실 권한으로 바로 이어져야, 운영자가 한 명씩 열어 주는 일이 없어집니다.
2. 학생은 어디까지 봤는지 잊는다.
영상이 여러 개인 강의는 다시 들어왔을 때 이어볼 곳과 남은 영상이 먼저 보여야 합니다. 휴대폰에서도 같은 위치에서 이어져야 합니다.
3. 기간 만료·중복 구매·환불 같은 예외가 판단 근거 없이 쌓인다.
구매·학습·자료 받은 기록이 한데 섞이면 권한을 끊거나 다시 열 때 근거를 찾기 어렵습니다. 기록을 나눠 남기고, 운영자가 대조해서 조치한 이력까지 남아야 합니다.
3. 화면 구조

학생은 쇼핑몰 회원으로 로그인하면 구매한 강의의 수강권을 확인한 뒤 내 강의실로 들어갑니다. 학생 화면은 PC와 휴대폰에서 모두 쓰고, 운영자 화면은 PC 업무 화면입니다. 같은 강의가 운영자의 편집·상품 연결 → 학생의 구매 확인 → 영상 학습·자료 → 진도 기록 순서로 이어집니다.
4. 주요 기능

내 강의실 — 이어보기와 진행 상태
마지막으로 본 영상과 "이어서 학습하기" 버튼을 맨 위에 두고, 보유 강의 수와 완료한 영상 수를 보여 줍니다. 강의마다 이용기간(예: 평생 수강·만료 없음), 완료 영상 수와 진행 막대가 붙고, 아래에 구매 상품과 이용 상태가 나옵니다.

영상 학습 — 이어보기와 커리큘럼
다시 들어오면 마지막 재생 위치를 알려 주고 이어보기와 처음부터 복습하기 중 고르게 합니다. 옆 커리큘럼에서 파트·영상별 길이와 완료 여부, 무료 미리보기 영상을 확인하고 바로 옮겨 갑니다.

운영자 강의 편집
왼쪽에서 강의·파트·영상을 찾아 고르면 오른쪽에 편집판이 열립니다. 영상마다 활성·비활성, 무료 미리보기·구매자 전용을 정하고, 파트 추가·영상 추가·판매정보 연결을 한 화면에서 합니다.

자료실 — 강의별 자료 받기
구매한 강의의 학습자료만 보이고, 파일이 여러 개면 한 번에 받습니다. 자료는 비공개 저장소에서 잠깐만 열리는 주소로 내려주고, 회원·강의·자료판별 받기 요청 기록과 남은 횟수를 남깁니다.
- 휴대폰 영상 학습휴대폰에서도 이어보기·처음부터 복습하기를 고르고, 학습 완료·이전 강의·다음 강의로 계속하기를 누릅니다. 영상의 80% 이상을 보면 완료로 표시하고, 끝나면 다음 강의를 자동으로 재생할 수 있습니다.
- 쇼핑몰 회원 연결과 수강권쇼핑몰 회원으로 로그인하면 강의실 계정과 이어지고, 주문 정보를 바탕으로 구매 근거별 수강권이 만들어집니다. 이용기간이 지나거나 환불되면 권한이 바뀌고, 그 근거가 따로 남습니다.
- 영상 업로드와 변환 상태운영자가 강의 편집 화면에서 영상을 직접 올립니다. 올리기가 끊기면 이어서 다시 시도할 수 있고, 영상 변환이 끝났는지 상태로 확인한 뒤 강의에 붙입니다.
- 주문·환불 대조와 오류 알림쇼핑몰 주문·환불과 강의실 권한을 대조해 어긋난 건을 찾고, 운영자가 권한을 조치한 이력을 남깁니다. 주문 연결 같은 운영 작업에서 오류가 나면 운영자에게 알림이 갑니다.
5. 기술
펼쳐 보기
| 반응형 | 학생 화면은 PC와 휴대폰 모두에 맞춥니다. 휴대폰에서는 커리큘럼을 영상 아래로 내려 접고 펼칩니다. 운영자 화면은 왼쪽 목록과 오른쪽 편집판을 나란히 쓰는 PC 업무 화면입니다. |
| 글꼴 | 시스템 기본 산세리프 글꼴을 써서 추가 글꼴 내려받기가 없습니다. |
| 이미지·영상 | 영상은 영상 전용 서비스에 이어받기 방식(TUS)으로 올리고, 변환한 뒤 HLS로 재생합니다. 비공개 자료는 파일 저장소의 만료형 주소로 내려줍니다. |
| 움직임 | 이어보기 안내와 다음 강의 자동 재생 정도만 넣었습니다. 진도는 재생을 관찰한 기록 기준으로 남깁니다. |
| 접근성 | 버튼과 상태 표시에 글자를 함께 써서 색만으로 구분하지 않습니다. 자동 재생은 학생이 끌 수 있습니다. |
| 사용 기술 | React · TypeScript · TanStack Start/Router/Query · Tailwind CSS · Radix UI. 로그인과 데이터는 Supabase(인증 · PostgreSQL · 파일 저장소)를 쓰고, 서버 함수(RPC)와 행 단위 접근 규칙으로 수강권·진도·자료 기록을 관리하며 Zod로 입력을 검증합니다. 쇼핑몰 연결은 Cafe24 OAuth 2.0과 API(회원·상품·주문), 영상은 Bunny Stream · TUS · HLS · hls.js, 배포와 예약 작업은 Vercel, 오류 알림은 Resend를 씁니다. |
6. 검수
화면은 실제 시스템에 비식별 테스트 데이터만 넣어 띄우고 찍었습니다. (2026-09-21 촬영) 강의 이름은 "B 유튜브 라이브 클래스", 영상 이름은 "1-2 장비와 세팅"처럼 테스트용으로 지은 값입니다.
| 항목 | 확인 |
|---|
| 찍은 화면 | 내 강의실(PC·휴대폰) · 영상 학습(PC·휴대폰) · 운영자 강의 편집 · 자료실 |
| 사람 이름·연락처·주소 | 0 (화면마다 한 장씩 열어 확인) |
| 채널·강사·쇼핑몰 이름, 로고, 사람 얼굴·썸네일 | 0 |
주문 반영 시점은 쇼핑몰 API 응답과 처리 상태에 따라 달라집니다. 진도는 재생 관찰 기록 기준이며 시청 인증이 아니고, 자료 받기 1회는 받기 요청 기준이라 실제로 다 받았는지와는 구분합니다.
실제 서비스는 로그인이 필요해 공개 주소 기준의 속도 점수는 이 사례에서 따로 매기지 않았습니다.
오토건웍스(AutoGun Works) · 대표 박건우 · 사업자등록번호 342-27-02011 · 경기도 용인시 처인구 남사읍 어진로102번길 92-16 · contact@autogun.co.kr개인정보처리방침