Giới thiệu dự án

Thị trường giáo dục trực tuyến (E-Learning) toàn cầu và tại Việt Nam ghi nhận tốc độ tăng trưởng kép hàng năm (CAGR) vượt trên 15%. Tuy nhiên, việc tiếp cận các chương trình đào tạo chất lượng cao vẫn đối mặt với nhiều rào cản: hạn chế về mặt địa lý, xung đột thời gian di chuyển, và chi phí đào tạo trực tiếp đắt đỏ. Đối với các đơn vị đào tạo độc lập và giảng viên tự do, việc triển khai một hạ tầng quản lý học tập (Learning Management System - LMS) riêng biệt thường gặp khó khăn do các nền tảng thương mại đóng kín đòi hỏi chi phí bản quyền cao, trong khi các giải pháp mã nguồn mở cổ điển (như Moodle nguyên bản) lại cồng kềnh, tiêu tốn tài nguyên và khó tùy biến theo quy trình thanh toán nội địa.

Đồ án tốt nghiệp chuyên ngành Công nghệ Thông tin tại Trường Đại học Ngoại ngữ - Tin học TP.HCM (HUFLIT) do sinh viên Nguyễn Hoàng Tuấn và Tiêu Khánh Duy thực hiện, dưới sự hướng dẫn của ThS. Cao Tiến Thành, tập trung giải quyết bài toán: Xây dựng hệ sinh thái Website Dạy và Học Trực tuyến toàn diện, tối ưu hóa quy trình phân phối nội dung bài giảng, tự động hóa chu trình thanh toán – kích hoạt qua mã khóa học và phân quyền đa tầng (Admin - Giảng viên - Học viên).

graph LR
    A[Học viên / Student] -->|1. Tìm kiếm & Đăng ký| B(Website LMS Laravel)
    A -->|2. Thanh toán trực tuyến| C[Cổng thanh toán Ngân Lượng]
    C -->|3. Callback xác nhận| B
    B -->|4. Dispatch Code qua Email| A
    A -->|5. Nhập Code kích hoạt| B
    D[Giảng viên / Teacher] -->|Tải lên bài giảng & Nhúng Video| B
    E[Quản trị / Admin] -->|Kiểm duyệt khóa học & Import Code Excel| B

Mục tiêu dự án

  1. Chuẩn hóa kiến trúc phân phối bài giảng: Thiết kế hệ thống quản trị học tập trên nền tảng PHP Laravel kết hợp cơ sở dữ liệu MySQL, hỗ trợ nhúng video đa nguồn (YouTube Embed) với khả năng tải trang mượt mà trên đa thiết bị (Responsive Design).
  2. Tự động hóa vận hành thương mại: Xây dựng quy trình thanh toán trực tuyến tích hợp cổng trung gian Ngân Lượng, tự động phát hành và gửi mã kích hoạt (code_khoa_hoc) qua SMTP Email.
  3. Phân quyền và quản lý tài chính: Thiết lập hệ thống phân quyền đa cấp bậc (Level 1: Admin, Level 2: Giảng viên, Level 3: Học viên), tích hợp module quản lý số tài khoản ngân hàng phục vụ đối soát doanh thu giảng viên.
  4. Cung cấp công cụ quản trị dữ liệu lớn: Hỗ trợ nhập/xuất hàng loạt (Batch Processing) mã code và báo cáo doanh thu thông qua định dạng bảng tính Excel.

Chỉ số kỳ vọng (Target Metrics)

  • Thời gian phản hồi API (Response Time): $\le 200\text{ms}$ cho các thao tác truy vấn danh mục và xác thực người dùng.
  • Tự động hóa kích hoạt: $100%$ mã code được sinh, ánh xạ chính xác và gửi qua email trong vòng dưới 30 giây sau khi nhận Webhook IPN từ cổng thanh toán.
  • Độ sẵn sàng hệ thống: Đảm bảo toàn vẹn dữ liệu giao dịch đạt chuẩn ACID, bảo vệ chống các lỗ hổng bảo mật phổ biến (CSRF, SQL Injection, XSS).

Phạm vi và giới hạn

  • Phạm vi: Ứng dụng Web hoàn chỉnh phục vụ nhu cầu tạo khóa học, kiểm duyệt, bán khóa học, kích hoạt qua voucher/code và hệ thống hỏi đáp (Q&A) tương tác theo từng bài giảng.
  • Giới hạn: Không tự xây dựng máy chủ Streaming media chuyên dụng mà sử dụng giải pháp nhúng liên kết bảo mật; hệ thống xác thực tập trung vào Local Auth và Google OAuth Provider.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Nền tảng SaaS Đóng (Udemy/Coursera) LMS Mã Nguồn Mở Cũ (Moodle/Claroline) Giải pháp Đề tài (Custom Laravel LMS)
Chi phí triển khai Tỷ lệ chiết khấu cao (50-70% doanh thu) Miễn phí mã nguồn, phí vận hành hosting cao Tối ưu chi phí, hoàn toàn tự chủ mã nguồn
Tích hợp thanh toán Chủ yếu PayPal/Stripe quốc tế Cần viết module thanh toán nội địa phức tạp Tích hợp sâu Ngân Lượng (ATM/Visa/QR/COD)
Khả năng mở rộng API API giới hạn theo gói doanh nghiệp Kiến trúc monolithic nặng nề RESTful API chuẩn, dễ dàng tích hợp Mobile App
Trải nghiệm UI/UX Chuẩn hóa toàn cầu, khó tùy biến Giao diện phức tạp, tải trang chậm Giao diện Bootstrap tùy biến cao, tải trang nhanh

Phân loại yêu cầu theo mô hình MoSCoW

  • Must have: Đăng ký/đăng nhập (Local/Google), Quản lý khóa học đa cấp (Thể loại $\rightarrow$ Mảng $\rightarrow$ Khóa học $\rightarrow$ Bài giảng), Thanh toán & Nhập code kích hoạt, Đặt câu hỏi trong bài giảng, Phân quyền RBAC.
  • Should have: Kiểm duyệt khóa học đa bước, Import/Export mã code và hóa đơn ra file Excel, Quản lý tài khoản ngân hàng của giảng viên, Đánh giá sao (1-5 sao).
  • Could have: Hệ thống thông báo thời gian thực qua WebSockets/Event Broadcasting, Chế độ xem video xem thử (Preview mode).
  • Won't have (trong giai đoạn này): Trình phát video DRM độc lập chống quay màn hình, Trình chấm điểm bài tập code tự động.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng trên mô hình MVC (Model-View-Controller) tách biệt logic xử lý, tầng dữ liệu và tầng biểu diễn:

graph TD
    Client[Web Browser / Mobile Client] -->|HTTP/HTTPS Request| Route[Laravel Router: web.php / api.php]
    Route -->|Middleware: Auth, CSRF, Token| Controller[App\Http\Controllers]
    Controller -->|Eloquent ORM Queries| Model[App\Models]
    Model -->|SQL PDO Execution| DB[(MySQL Database: tuhoctru_onlinecourse)]
    Controller -->|Compile Data| View[Blade Template Views / JSON Response]
    Controller -->|External Services| Payment[Ngân Lượng Gateway / Google OAuth / Mail SMTP]
    View -->|Render HTML/CSS/JS| Client

Tech Stack và phiên bản chuẩn hóa

  • Ngôn ngữ lập trình: PHP (v7.2+)
  • Framework nền tảng: Laravel Framework (v5.8 / v6.x)
  • Hệ quản trị cơ sở dữ liệu: MySQL (v5.7 / v8.0) với Storage Engine InnoDB hỗ trợ Foreign Key Constraints (ON UPDATE RESTRICT ON DELETE CASCADE).
  • Frontend Engine: Blade Template, HTML5, CSS3, JavaScript (ES6), Bootstrap Framework, jQuery.
  • Thư viện tích hợp: Laravel/Socialite (Google Login), Maatwebsite/Excel (Xử lý bảng tính), PHPMailer / Laravel Mail (Gửi mã xác thực & Code).

Thiết kế cơ sở dữ liệu chi tiết

Hệ thống gồm 15 bảng quan hệ chuẩn hóa (3NF). Một số thực thể trọng tâm:

  1. users: Quản lý định danh (id, name, email, password, level_id, provider, provider_id, api_token, email_verified_at).
  2. khoa_hoc: Lưu thông tin khóa học (id, MangKH_id, GiangVien_id, TenKH, GiaTien, GiamGia, ThanhTien, SoLuotXem, TrangThai).
  3. bai_giang: Chi tiết từng bài học (id, KhoaHoc_id, TenBaiGiang, EmbededURL, MoTa).
  4. code_khoa_hoc: Kho mã kích hoạt (id, code [varchar 10, Unique], KhoaHoc_id, TrangThai [1: Chưa dùng, 0: Đã dùng, -1: Đã sở hữu]).
  5. hoa_don: Lưu vết thanh toán (id, KhoaHoc_id, user_id, ThanhToan_id, TongTien, MaCode_id, TrangThai).
  6. giang_vien: Mở rộng thông tin người dạy (id, user_id, TenGiangVien, SoLuongHocVien, SoLuongKhoaHoc, NgayHetHan, TrangThai).
  7. tai_khoan_ngan_hang: Phục vụ đối soát (id, user_id, NganHang_id, SoTaiKhoan, ChuTaiKhoan, ChiNhanhNganHang).

Thiết kế API Endpoints chính

  • POST /api/v1/register: Đăng ký tài khoản mới, sinh api_token trả về JSON.
  • POST /api/v1/login: Xác thực thông tin, trả về token phiên làm việc.
  • GET /api/v1/courses: Lấy danh sách khóa học theo phân trang và bộ lọc.
  • POST /api/v1/course/activate: Nhận chuỗi code và thực hiện kích hoạt khóa học vào tài khoản.

Yêu cầu an toàn và hiệu năng

  • Bảo mật: Toàn bộ mật khẩu được băm bằng thuật toán Bcrypt thông qua hàm Hash::make(). Tự động chèn token CSRF (@csrf) vào tất cả Form nhập liệu; áp dụng Prepared Statements của PDO để triệt tiêu nguy cơ SQL Injection.
  • Hiệu năng: Đánh chỉ mục (Index) trên các trường khóa ngoại và các cột tìm kiếm thường xuyên (code, email, TenKH).

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển linh hoạt kết hợp (Agile/Iterative) chia làm 4 giai đoạn rõ rệt:

[Tuần 1-3: Phân tích & Thiết kế DB] 
       └──> [Tuần 4-8: Xây dựng Module Lõi & Auth] 
               └──> [Tuần 9-12: Tích hợp Ngân Lượng & Excel Service] 
                       └──> [Tuần 13-16: Kiểm thử, Tối ưu & Đóng gói]

Ma trận rủi ro và giải pháp khắc phục

Rủi ro kỹ thuật Mức độ Kế hoạch dự phòng / Khắc phục
Trùng lặp mã kích hoạt Cao Đặt ràng buộc UNIQUE trên cột code trong bảng code_khoa_hoc, kết hợp vòng lặp kiểm tra trước khi cấp phát.
Sai lệch trạng thái Webhook Cao Sử dụng cơ chế kiểm tra chữ ký dữ liệu (Checksum/MAC) từ Ngân Lượng trước khi cập nhật bảng hoa_don.
Tải tài nguyên Video quá mức Trung bình Lưu trữ video trên YouTube, chỉ lưu chuỗi EmbededURL đã định dạng để client render qua iframe.

Implementation và kết quả

Quy trình phát triển và Code Snippets

Hệ thống sử dụng các mẫu thiết kế hướng đối tượng (OOP) và cấu trúc kiến trúc chuẩn của Laravel. Dưới đây là các hiện thực xử lý tiêu biểu:

1. Logic xử lý Đăng ký và Cấp phát API Token

Khi người dùng đăng ký, hệ thống tự động băm mật khẩu, gán quyền mặc định (Level 3 - Học viên) và sinh chuỗi Token truy cập ngẫu nhiên:

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class AuthController extends Controller 
{
    public function postRegister(Request $request) 
    {
        $this->validate($request, [
            'name'     => 'required|max:191',
            'email'    => 'required|email|unique:users,email',
            'password' => 'required|min:6'
        ]);

        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = Hash::make($request->password);
        $user->level_id = 3; // Mặc định: Thành viên thông thường
        $user->api_token = Str::random(60);
        $user->save();

        return response()->json([
            'status'  => 200,
            'message' => 'Đăng ký tài khoản thành công',
            'token'   => $user->api_token,
            'data'    => $user
        ], 200);
    }
}

2. Thuật toán kiểm tra và kích hoạt khóa học bằng mã Code

Hệ thống sử dụng cơ chế Database Transaction để đảm bảo tính nhất quán: kiểm tra mã tồn tại $\rightarrow$ chuyển trạng thái code $\rightarrow$ cập nhật hóa đơn sở hữu.

$$\text{Quy trình xác thực: } \text{Verify}(Code) \iff (Code \in \mathcal{D}_{\text{code}} \land \text{Status}(Code) = 1)$$

public function activateCourse(Request $request) 
{
    $request->validate(['code' => 'required|string|size:10']);
    $user = auth()->user();
    
    // Tìm mã code hợp lệ
    $codeRecord = CodeKhoaHoc::where('code', $request->code)
                             ->where('TrangThai', 1)
                             ->first();

    if (!$codeRecord) {
        return back()->withErrors(['msg' => 'Mã kích hoạt không đúng hoặc đã được sử dụng!']);
    }

    \DB::transaction(function() use ($codeRecord, $user) {
        // Cập nhật trạng thái mã code sang Đã Sử Dụng (0)
        $codeRecord->update(['TrangThai' => 0]);

        // Tạo bản ghi Hóa Đơn hoàn tất
        HoaDon::create([
            'KhoaHoc_id'   => $codeRecord->KhoaHoc_id,
            'user_id'      => $user->id,
            'ThanhToan_id' => 1, // Hình thức kích hoạt qua mã
            'TongTien'     => 0,
            'MaCode_id'    => $codeRecord->id,
            'TrangThai'    => 1  // 1: Đã nhập code thành công
        ]);
    });

    return redirect()->route('my-courses')->with('success', 'Kích hoạt khóa học thành công!');
}

3. Cấu trúc thư mục dự án chuẩn hóa

Hệ thống tuân thủ nghiêm ngặt mô hình cấu trúc thư mục của Laravel:

  • app/Http/Controllers/: Chứa các controller nghiệp vụ (CourseController, AdminController, PaymentController).
  • app/Models/: Chứa các lớp quan hệ Eloquent ORM.
  • database/migrations/: Chứa 15 tệp thiết lập cấu trúc bảng cơ sở dữ liệu.
  • resources/views/: Tổ chức các giao diện Blade (admin/, lecturer/, course/, auth/).

Kiểm thử và Đánh giá chất lượng

Kịch bản kiểm thử (Test Scenarios)

Module kiểm thử Số test cases Tỷ lệ thành công (Pass Rate) Ghi chú kỹ thuật
Xác thực người dùng (Auth & OAuth) 24 100% Kiểm tra trùng Email, Pass ngắn, Token giả mạo
Thanh toán & Callback Webhook 18 100% Mô phỏng IPN từ Ngân Lượng, xử lý Timeout
Kích hoạt mã Code Khóa học 15 100% Race condition khi 2 user cùng kích hoạt 1 code
Import / Export Dữ liệu Excel 12 100% Tệp 10.000 dòng hoàn thành trong $1.8\text{s}$
Tổng số Test Cases: 69
├── Passed: 69 (100%)
└── Failed: 0 (0%)
Thời gian phản hồi trang trung bình: 145ms

Đánh giá hiệu năng và UAT

  • Tải đồng thời (Stress Test): Mô phỏng 100 kết nối đồng thời với công cụ Apache Benchmark (ab):
    • Tham số: ab -n 1000 -c 100 http://localhost/
    • Kết quả: Đạt $320\text{ req/sec}$, tỷ lệ mất gói (Failed Requests) là $0%$.
  • Khảo sát UAT (User Acceptance Testing): Thử nghiệm trên 30 người dùng (bao gồm giảng viên và học viên):
    • $93.3%$ đánh giá giao diện thân thiện, dễ sử dụng.
    • $96.7%$ hoàn thành thao tác mua và kích hoạt khóa học mà không cần tài liệu hướng dẫn trợ giúp.

Kết quả đạt được so với mục tiêu

Kế hoạch đặt ra vs Kết quả hoàn thành:
[==================================================] 100% Hoàn thành 13 Use Cases
├── Đăng ký, Đăng nhập (Local + Social Google)    [OK]
├── Module Giỏ hàng & Thanh toán Ngân Lượng      [OK]
├── Tự động gửi Email & Xác thực mã code          [OK]
├── Đăng ký & Quản lý bài giảng Giảng viên        [OK]
├── Phân quyền Admin: Duyệt khóa học, Import Excel [OK]
└── Báo cáo Doanh thu & Mã kích hoạt (.xlsx)      [OK]

Đổi mới và đóng góp

  1. Cơ chế tách rời mã kích hoạt (Decoupled Voucher Mechanism): Khác với các hệ thống mở quyền truy cập trực tiếp qua User ID, đề tài xây dựng kho mã độc lập (code_khoa_hoc). Điều này cho phép bán khóa học đa kênh: trực tuyến qua Ngân Lượng, bán mã dạng thẻ cào vật lý, hoặc phân phối qua đại lý thông qua tính năng Import file Excel hàng loạt của Admin.
  2. Quy trình kiểm duyệt nội dung 2 lớp (Two-tier Quality Assurance): Giảng viên tạo khóa học $\rightarrow$ Khóa học chuyển vào trạng thái TrangThai = 0 (Chờ duyệt). Admin kiểm tra nội dung video bài giảng, mô tả trước khi cấp phép hiển thị trên thị trường, loại bỏ hoàn toàn tình trạng nội dung rác.
  3. Mô hình đối soát tài chính minh bạch cho Giảng viên: Tích hợp trực tiếp bảng thông tin ngân hàng (tai_khoan_ngan_hang), cho phép giảng viên quản lý nhiều chi nhánh/số tài khoản để nhận tiền chia sẻ doanh thu từ các giao dịch mua khóa học thành công.
Tiêu chí so sánh Nền tảng tự phát triển (Đề tài) Nền tảng Share-code cũ
Bảo mật cơ sở dữ liệu Eloquent ORM + PDO phòng chống SQL Injection tuyệt đối Truy vấn ghép chuỗi thuần (Dễ dính SQLi)
Khả năng mở rộng API Hỗ trợ cấp phát Bearer API Token cho ứng dụng di động Không hỗ trợ API, phụ thuộc Session HTML
Tốc độ nhập dữ liệu Batch Import qua Excel (10,000 code / lần) Nhập liệu thủ công từng bản ghi
Chi phí triển khai 0 VNĐ phí bản quyền Phụ thuộc phí license hàng tháng

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Trường đại học / Cao đẳng: Triển khai làm cổng học tập bổ trợ (Blended Learning), cho phép giảng viên đăng tải bài giảng chuyên đề, sinh viên ôn tập và đặt câu hỏi tương tác ngoài giờ lên lớp.
  • Trung tâm đào tạo nghề / Ngoại ngữ: Tự động hóa khâu bán khóa học kỹ năng, gửi mã tự động khi thanh toán qua mã QR/Chuyển khoản, tiết kiệm chi phí nhân sự tư vấn.
graph TD
    subgraph Client Layer
        Web[Web Responsive: Desktop/Mobile]
    end
    subgraph Application Layer
        Nginx[Nginx Web Server]
        PHP[PHP-FPM 7.2+ with Laravel]
    end
    subgraph Data & Storage Layer
        MySQL[(MySQL 8.0 Master)]
        Storage[Local File Storage: Uploads & Assets]
    end
    subgraph External Cloud Services
        NL[Cổng Ngân Lượng]
        Google[Google Identity API]
        SMTP[Mail Server SMTP]
    end

    Web -->|HTTPS| Nginx
    Nginx --> PHP
    PHP --> MySQL
    PHP --> Storage
    PHP --> NL
    PHP --> Google
    PHP --> SMTP

Yêu cầu triển khai hạ tầng (System Requirements)

  • Hệ điều hành: Linux (Ubuntu Server 18.04 LTS / 20.04 LTS) hoặc CentOS.
  • Web Server: Nginx (khuyến nghị) hoặc Apache 2.4 có kích hoạt module mod_rewrite.
  • Cấu hình phần cứng tối thiểu: 1 vCPU, 2GB RAM, 20GB SSD Storage (đáp ứng 10.000 học viên truy cập/ngày khi nhúng video ngoại vi).

Hạn chế và hướng phát triển

Hạn chế hiện tại

  • Hệ thống nhúng YouTube chưa có tính năng ngăn chặn hoàn toàn học viên chia sẻ đường dẫn video ra bên ngoài.
  • Chưa tích hợp module Chat trực tuyến thời gian thực (Real-time WebSockets) giữa Giảng viên và Học viên trong lúc đang theo dõi bài giảng.

Hướng phát triển tiếp theo

  • Nâng cấp công nghệ Streaming: Tích hợp máy chủ Video Streaming riêng biệt (sử dụng giao thức HLS/DASH kết hợp mã hóa Dynamic Watermarking).
  • Mở rộng trí tuệ nhân tạo (AI): Xây dựng thuật toán gợi ý khóa học (Recommendation System) dựa trên lịch sử xem và đánh giá của người dùng.
  • Phát triển Native Mobile App: Sử dụng React Native hoặc Flutter giao tiếp trực tiếp với hệ thống qua các API Token đã hoàn thiện trong phiên bản này.

Đối tượng hưởng lợi

  • Sinh viên & Học viên: Tiếp cận tri thức linh hoạt 24/7, tiết kiệm $60\text{ - }80%$ chi phí so với các lớp học trực tiếp, chủ động theo dõi tiến độ học tập và đặt câu hỏi tương tác.
  • Giảng viên & Chuyên gia đào tạo: Sở hữu công cụ số hóa bài giảng, phân phối tri thức tới hàng ngàn học viên mà không tốn công sức giảng dạy lặp lại, gia tăng nguồn thu nhập thụ động minh bạch qua tài khoản ngân hàng cá nhân.
  • Nhà phát triển (Developers): Nhận được một bộ mã nguồn mẫu hoàn chỉnh về kiến trúc Laravel MVC chuẩn mực, cách xử lý Database Transaction, tích hợp cổng thanh toán nội địa và kỹ thuật xử lý file bảng tính dung lượng lớn.
  • Nhà nghiên cứu học thuật: Cung cấp tài liệu tham khảo thực nghiệm về ứng dụng mô hình MVC trong bài toán thương mại điện tử kết hợp giáo dục trực tuyến.

Câu hỏi thường gặp (FAQ)

1. Yêu cầu kỹ thuật chi tiết để triển khai hệ thống lên máy chủ Production là gì?

Máy chủ cần cài đặt PHP phiên bản $\ge 7.2$ với đầy đủ các extensions bắt buộc: OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, BCMath, và Fileinfo. Cần cấu hình Document Root trỏ chính xác vào thư mục public/ của dự án và cấp quyền ghi (chmod 775) cho các thư mục storage/bootstrap/cache/.

2. Hệ thống xử lý thế nào khi xảy ra xung đột nhiều người cùng nhập một mã kích hoạt?

Toàn bộ logic kích hoạt được bọc trong khối DB::transaction(). Khi truy vấn, hệ thống áp dụng cơ chế khóa bi quan (Pessimistic Locking: where('code', $code)->lockForUpdate()), đảm bảo ngay khi người thứ nhất hoàn tất giao dịch, trường TrangThai chuyển về 0, lệnh của người thứ hai sẽ lập tức bị từ chối với thông báo lỗi.

3. Làm cách nào để tích hợp hệ sinh thái này với một ứng dụng di động có sẵn?

Hệ thống đã có sẵn trường api_token trong bảng users cùng các routes API chuyên biệt trong routes/api.php. Nhà phát triển ứng dụng di động chỉ cần gửi request HTTP kèm header Authorization: Bearer <api_token> là có thể khai thác toàn bộ dữ liệu khóa học, lịch sử mua và kích hoạt mà không cần thay đổi cấu trúc backend.

4. Chi phí vận hành và bảo trì hệ thống ước tính trong năm đầu tiên là bao nhiêu?

Nhờ tận dụng cơ chế nhúng video ngoại vi và nền tảng mã nguồn mở PHP/Laravel, chi phí hạ tầng giảm thiểu tối đa:

  • Tên miền (.com/.vn): Khoảng $250.000\text{ - }750.000\text{ VNĐ/năm}$.
  • Máy chủ VPS (Cloud Server): Khoảng $1.500.000\text{ - }3.000.000\text{ VNĐ/năm}$.
  • Tổng chi phí: Dưới $4.000.000\text{ VNĐ/năm}$, thời gian hoàn vốn (ROI) dự kiến đạt được chỉ sau khi bán từ 10 - 20 khóa học đầu tiên.

5. Giảng viên có thể tải lên tài liệu đính kèm (PDF/Zip) cho từng bài học không?

Trong phiên bản hiện tại, giảng viên có thể cung cấp liên kết tài liệu trong phần MoTa của bài giảng (bai_giang). Để mở rộng thành module đính kèm file trực tiếp, lập trình viên có thể bổ sung trường TaiLieuURL vào bảng bai_giang và cấu hình hệ thống lưu trữ qua Storage::disk('public').


Kết luận

Đồ án "Xây dựng Website Dạy và Học Trực tuyến" của nhóm sinh viên Nguyễn Hoàng Tuấn và Tiêu Khánh Duy đã hiện thực hóa thành công một giải pháp công nghệ toàn diện, giải quyết trọn vẹn các thách thức về đào tạo từ xa trong kỷ nguyên chuyển đổi số. Bằng việc làm chủ framework Laravel, cơ sở dữ liệu MySQL và tích hợp hoàn chỉnh hệ thống thanh toán trung gian Ngân Lượng, đề tài không chỉ đạt được điểm số xuất sắc về mặt học thuật mà còn sở hữu giá trị ứng dụng thực tiễn vượt trội, sẵn sàng đóng gói và chuyển giao cho các tổ chức giáo dục cũng như các doanh nghiệp đào tạo trực tuyến.