1. Overview

IndustryVideo drawing lessons: watercolor, pen sketching, botanical illustration and colored-pencil still life
PurposeAn online class where students enroll and learn in the classroom, and the operator confirms payment to open access, tracks progress and manages the course structure
Scope8 screens with their own URLs · 4 classes · 19 lesson videos · 4 learning materials · 7 sample students
Main flowBrowse → Preview → Sign up → Enroll → Payment confirmed → Resume and complete lessons in the classroom / Admin: confirm payment → check progress → edit course

Members, enrollments and their status, playback position and completion per video, lesson notes, material downloads and course structure are saved in the browser. Video files uploaded in the admin screen are also stored in the browser, so they stay after a refresh or a return visit.

Connected at rollout: card payment and automatic payment matching, email and text notifications, certificates, admin login and role-based permissions, video copy protection, and server storage for using one account across devices.

2. Challenges

1. Only enrolled students can watch, and only for a set period.

Videos must stay locked until payment is confirmed, and close when the period ends. Still, preview videos should play without login, because that is what brings in enrollments.

2. People do not watch a drawing lesson in one sitting.

They pick up a brush, follow along, stop, and come back days later. To finish the course, they need to resume where they stopped and see at a glance how far they have come.

3. The operator needs to know who is where.

When payment checks, extensions and progress checks are split across spreadsheets and messengers, people slip through. Everything from enrollment to progress should be on one screen, and the operator should be able to change lesson order and videos directly.

3. Structure

Student screens (classes, my classroom, classroom) and admin screens (enrollments, progress, course editing) are separated by URL. Enrollment opens inside the class detail page, and the same enrollment record moves through enroll → payment confirmed → classroom. The back button and refresh keep you on the screen you were viewing.

4. Key Features

Classroom — Resume and Completion screen

Classroom — Resume and Completion

When you pause a video, the position is saved. When you return, it starts from that spot with the message "0:08부터 이어서 재생합니다" (Resuming from 0:08). Watching 90% or more marks the lesson as complete, and the checkmark in the curriculum and the progress bar update right away. Lesson notes written for each video are saved automatically, and the class practice sheet can be downloaded.

Enrollment and Payment Check screen

Enrollment and Payment Check

Enroll with the depositor's name and you get an application number (CL-date-sequence) and the bank account for payment. Videos stay locked until then. When the operator clicks "confirm payment," access opens for 90 days from that day. Extensions and cancellations are also kept on record. When the period ends, the student's status changes to "expired." If they enroll again, their progress carries over. In the admin screen, student names, emails and depositor names are masked, like 정*은 and d***@example.com, and the progress CSV exports the masked values too.

Course Editing — Order, Visibility, Video Upload screen

Course Editing — Order, Visibility, Video Upload

Move videos up and down within a part, and set preview and visibility for each video. When you upload a video file, its length is read and it goes live right away. A video added without a file is marked "영상 준비 중" (Video in preparation) and cannot be published. Non-video files and files over 200MB are rejected.

Student Progress and CSV Download screen

Student Progress and CSV Download

Each student is one row: completed videos and percentage, last video watched and when, material downloads, and remaining days. Filter by class and download the current list as a CSV file. The CSV is saved so Korean text does not break in Excel.

  • My ClassroomShows status, progress, end date and days left for each enrolled class. "Resume" takes you straight to the last video you watched. Enrollments not yet paid can be canceled here.
  • Preview and Locked VideosThe first video of each class plays without login. The other videos stay locked with a different message depending on whether the viewer is logged out, unpaid or expired, and the video file is not loaded.
  • Sign Up and LoginSign up with name, email and password. Empty fields, invalid email format, an already registered email, a password under 8 characters and unchecked terms each get their own message. After login you return to the screen you were on. Passwords are not stored as typed.
  • Class List and DetailFilter by level and sort by recommended, lowest price or shortest video. Classes you are taking are marked. The detail page lists the introduction, supplies, curriculum by part and video lengths. The side box changes its button based on enrollment status.

5. Build Notes

Show details
ResponsiveLayout changes at 1000px and 760px. On PC, video and curriculum, and detail and enrollment box, sit side by side; below 1000px they stack in one column. Below 760px the menu moves to one line under the logo, classes show one per row, and admin tables turn into cards with field labels.
FontsHeadings in Nanum Brush Script, body in Gowun Batang (both free, open fonts). Subset to only the characters used on these screens: 202KB for all three files.
Images & video19 lesson videos, 17–24 seconds each, showing a drawing painted layer by layer. Each video has WebM (588KB total) and MP4 (724KB total) so the browser picks the right one, and only length information loads at first. Class covers: 4 webp images, 52KB.
Paper feelThe paper grain, paint bleed and brush-stroke underlines are made with SVG filters in CSS, with no image files. Cover edges are cut like torn paper.
MotionThe only motion is a slight zoom on cover photos and notices that fade in and out. It stops when the device's reduce-motion setting is on.
AccessibilityEvery input has a label. Errors are shown with both a border and a sentence, and focus moves to the first wrong field. Progress and status are written as text as well as bars and colors. Videos use the native player, so they work with the keyboard.
TechnologyHTML, CSS and JavaScript (no external libraries). Members, enrollments, progress and notes are stored in browser storage (localStorage); uploaded video files in the browser's file store (IndexedDB). Passwords are stored as SHA-256 hashes. Screens are split by URL (#/learn/c1/c1-l2 etc.) so the back button works, and user input is rendered as plain text so tags never run.

6. QA

Results from opening the site on PC 1440 and mobile 390 screens and clicking through in the order a real user would. We also checked that saved data is still there after a refresh. (2026-09-23)

ItemPC 1440Mobile 390
Screen errors00
Broken files00
Horizontal overflow / clipped text00
Function tests19 / 19 passed19 / 19 passed

The 19 function tests: level filter and price sort · preview playback without login, other videos locked · sign-up input checks and duplicate email blocked · my classroom after sign-up · enrollment and application number · videos locked before payment · access starts when admin confirms payment · my classroom after refresh · position saved and resume · lesson complete and progress updated after watching to the end · lesson notes saved and kept · learning material download · progress table and CSV download · reorder lessons and block publishing of videos in preparation · upload a video file, publish it, play after refresh · wrong password blocked and login · cancel unpaid enrollment and status kept · 30-day extension · resume and back button

Speed & quality scores (out of 100; mobile measured three times on a slow connection, median shown · runs: 97, 94, 97)

PerformanceAccessibilityBest PracticesSEO
Mobile97100100100
PC100100100100

Mobile: First Contentful Paint 1.2s · Largest Contentful Paint 2.6s · Layout shift 0 · Blocking time 0ms PC: First Contentful Paint 0.3s · Largest Contentful Paint 0.6s · Layout shift 0 · Blocking time 0ms

7. Result

Try it live ↗
Desktop screenMobile screen
AutoGun Works · Representative: Gunwoo Park · Business registration no. 342-27-02011 · 92-16, Eojin-ro 102beon-gil, Namsa-eup, Cheoin-gu, Yongin-si, Gyeonggi-do, Republic of Korea · contact@autogun.co.kr
Privacy Policy