Online Course Portal Development on 1C-Bitrix
A company recorded 40 hours of training video, uploaded to YouTube, distributed links by email. A month later: 70% of students didn't reach lesson two, nobody knows who completed what, certificates issued manually in Canva, and a new employee gets a link to playlist with "watch what you can." An online course portal on 1C-Bitrix transforms a video collection into managed educational process: structure, progress, knowledge verification, certification, payment.
Course Structure
A course is not a flat lesson list. It's a hierarchy with clear sequence and dependencies.
Data model:
- Course — top-level infoblock: name, description, cover, author, difficulty level, duration, category
- Module (section) — infoblock section: thematic block of several lessons
- Lesson — infoblock element: video, text material, practical assignment or test
- Bonus materials — downloadable files, checklists, templates (file properties)
Lesson types:
| Type | Content | Completion Check |
|---|---|---|
| Video lesson | Embedded video player | Viewing > 90% of duration |
| Text lesson | Article with illustrations | Mark "Read" |
| Test | Questions with multiple choice | Score ≥ N points |
| Practical assignment | Description + field for result upload | Teacher review |
| Webinar | Broadcast link + recording | Attendance ≥ 80% of time |
Dependencies: lesson 3 available only after completing lesson 2. "Advanced" module opens after "Basic" module completion. Implemented by checking previous element completion status on current element opening.
Video Hosting and Player
Video is the primary content format. Question: where to store and how to deliver.
Options:
- Own server — files on disk, delivery via nginx with access restriction (X-Accel-Redirect). Plus: full control. Minus: channel load, CDN needed
- Cloud video hosting — Kinescope, VDO.Cipher, Vimeo OTT. Plus: DRM protection, adaptive streaming (HLS), view analytics. Minus: monthly fee
- S3-compatible storage + player on frontend (Video.js, Plyr). Compromise between price and control
Download protection — critical for paid courses:
- Signed URLs with limited lifetime (token-based access)
- DRM (Widevine, FairPlay) — via cloud hosting
- Domain binding — video plays only on portal
- Watermarks with user email — to identify leak source
Player embedded in infoblock element template. During playback — AJAX request to server every 30 seconds to record progress.
Progress System
Progress is what motivates student to continue. And what allows administrator to see course effectiveness.
Progress storage:
- Custom table:
user_id,lesson_id,status(not started / in progress / completed),progress_percent,score,completed_at - Updated on every action: video view, test answer, assignment submission
Display for student:
- Progress bar on course page (70% completed)
- Checkmarks next to completed lessons
- Estimated time to completion
- Dashboard with all courses and their statuses
Display for administrator/teacher:
- Funnel: enrolled → started → completed 50% → finished
- Average test and assignment scores
- Lessons with maximum dropout (where users quit)
- Time spent on each lesson
Testing and Assignments
Tests are knowledge verification and engagement tools.
Question types:
- Single correct answer (radio)
- Multiple correct answers (checkbox)
- Matching (drag-and-drop)
- Free answer (text field, teacher verification)
- Fill in the blanks
Implementation: separate "Tests" infoblock linked to lesson. Questions are infoblock elements with properties: question text, answer variants (multiple property), correct answers, points. Frontend — custom component with timer, question shuffling, and variant shuffling.
Practical assignments:
- Student uploads file (code, document, mockup) or pastes link
- Teacher notified, reviews, grades, writes comment
- Student sees result in personal cabinet
- Assignment status: submitted → under review → accepted / needs revision
Certificates
Certificate is course final point. Generated automatically when conditions met (all lessons completed, tests passed with score ≥ N).
Generation:
- Certificate template — PDF with variables: name, course name, date, unique number
- Library
TCPDFormPDFfor server-side generation - Unique verification URL:
/certificate/verify/ABC-12345/— page confirms certificate authenticity - QR code on certificate linking to verification
Certificates stored in infoblock linked to user and course. Download from personal cabinet.
Course Payment
Monetization via 1C-Bitrix "E-Commerce" module (sale).
Payment models:
| Model | Implementation | When Suitable |
|---|---|---|
| One-time purchase | Course = product, payment via YuKassa/CloudPayments | Individual courses with fixed price |
| Subscription | Recurring payments, access to all courses | Library of 10+ courses |
| Installments | Multiple payments by schedule | Expensive programs (> $200) |
| Free with upsell | Some lessons free, rest paid | Audience attraction |
| Corporate | Invoice to company, package licenses | B2B sales |
Access logic after payment:
- Order paid → user added to "Course X Students" group → infoblock rights open lesson access
- On subscription — monthly status check via agent. Subscription expired → remove from group → access closed, progress saved
Promo codes and discounts — via standard sale module coupon mechanism. Partner promo codes with source tracking.
Additional Functions
Course forum/chat. Each course — separate chat or forum where students ask questions, teacher answers. Implementation via "Forum" module or custom WebSocket chat.
Notifications:
- Reminder about unfinished course (no access 7 days)
- New lesson added
- Assignment reviewed
- Certificate ready
Gamification:
- Points for lesson completion
- Badges for achievements (first course, 5 courses, all tests excellent)
- Student rankings
SEO and Marketing
-
Course catalog — landing pages by categories:
/courses/programming/,/courses/marketing/ -
Micromarkup
Courseby Schema.org: name, description, provider, rating - Free lessons as lead magnet — indexed by search engines, attract traffic
-
Graduate reviews —
Review+AggregateRatingfor stars in snippet - Course landing pages — separate promo pages with curriculum, instructor, reviews, purchase button







