Development of an online course portal on 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

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 TCPDF or mPDF for 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 Course by Schema.org: name, description, provider, rating
  • Free lessons as lead magnet — indexed by search engines, attract traffic
  • Graduate reviewsReview + AggregateRating for stars in snippet
  • Course landing pages — separate promo pages with curriculum, instructor, reviews, purchase button