Bài Toán
Một trường cao đẳng nghề tại Việt Nam đang vận hành công việc hàng ngày trên năm nền tảng khác nhau — một cho điểm danh, một cho điểm số, công cụ riêng cho thời khóa biểu, bảng tính Excel cho hồ sơ sinh viên, và soạn thảo Word thủ công cho chứng chỉ và bảng điểm.
Hệ quả: nhập liệu trùng lặp, sai sót thường xuyên, lỗ hổng bảo mật, và hơn 300 triệu đồng mỗi năm cho phí thuê bao các công cụ không liên thông với nhau. Không nền tảng nào hỗ trợ đặc thù quy trình giáo dục nghề nghiệp Việt Nam — phân tách khóa học lý thuyết/thực hành, phân cấp khoa-ngành-môn học, hay tạo tài liệu tiếng Việt với dấu thanh chính xác.
Trường cần một hệ thống duy nhất làm tất cả, do họ sở hữu, theo cách của họ.
Cách Tiếp Cận
Hai tuần đầu tiên, chúng tôi làm việc trực tiếp với đội ngũ hành chính, giáo viên và trưởng khoa — lập bản đồ từng quy trình, xác định điểm nghẽđn, và ghi nhận những yêu cầu đặc thù mà giải pháp có sẵn trên thị trường không đáp ứng được.
Điều rõ ràng nhất: đây không phải bài toán quản lý trường học chung chung. Chương trình đào tạo nghề Việt Nam có cấu trúc riêng (khoa → ngành → môn học, phân biệt lý thuyết/thực hành) và yêu cầu định dạng tài liệu nghiêm ngặt. Chúng tôi cần xây dựng từ đầu.
Những Gì Chúng Tôi Xây Dựng
Quản Lý Sinh Viên & Học Vụ
Trung tâm dữ liệu tập trung cho toàn bộ thông tin sinh viên — tuyển sinh, hồ sơ cá nhân, phân lớp và lịch sử học tập. Hệ thống mô hình hóa đầy đủ cấu trúc tổ chức: khoa, ngành, môn học và loại hình đào tạo (lý thuyết và thực hành).
Điểm Danh & Chấm Điểm
Theo dõi điểm danh theo từng buổi học với cập nhật trạng thái thời gian thực. Chấm điểm hỗ trợ nhiều hình thức đánh giá — thi viết, đánh giá thực hành, đồ án — với trọng số tùy chỉnh và tính điểm trung bình tự động.
Thời Khóa Biểu
Tạo thời khóa biểu không xung đột với phân bổ phòng và phân công giáo viên. Giao diện kéo-thả cho phép xây dựng và điều chỉnh lịch học trực quan.
Hệ Thống Tạo Tài Liệu
Đây là phần khó nhất. Chúng tôi xây dựng trình soạn thảo mẫu trực quan bằng TipTap, nơi nhân viên có thể thiết kế bố cục chứng chỉ và bảng điểm với liên kết trường dữ liệu kéo-thả. Phía sau là microservice Python/FastAPI xuất PDF chất lượng cao với hỗ trợ đầy đủ ký tự tiếng Việt.
Tìm Kiếm & Thao Tác Hàng Loạt
MeiliSearch cung cấp tìm kiếm tức thì, chịu lỗi chính tả trên toàn bộ cơ sở dữ liệu. Nhập/xuất hàng loạt qua Excel.
Giao Diện Song Ngữ
Tiếng Việt là ngôn ngữ chính, tiếng Anh là phụ. Xây dựng với react-i18next trên hơn 2.000 khóa dịch.
Quyết Định Kỹ Thuật
| Tầng | Lựa chọn | Lý do |
|---|---|---|
| Framework | Next.js 15 (App Router) | Kết xuất phía máy chủ cho tải trang nhanh; React 19 cho giao diện hiện đại |
| API | tRPC | An toàn kiểu từ đầu đến cuối, từ database đến frontend |
| CSDL | PostgreSQL + Drizzle ORM | 20+ bảng quan hệ với toàn vẹn tham chiếu |
| Tìm kiếm | MeiliSearch | Tìm kiếm toàn văn dưới 100ms với hỗ trợ tiếng Việt |
| Tài liệu | TipTap + WeasyPrint (Python/FastAPI) | Soạn thảo mẫu trực quan + xuất PDF chất lượng cao |
| Xác thực | NextAuth.js v5 | Phân quyền theo vai trò |
| Lưu trữ | AWS S3 | Lưu trữ tệp có phiên bản |
| Runtime | Bun | Nhanh hơn Node.js |
Kết Quả
Hệ thống thay thế năm nền tảng riêng lẻ bằng một:
Hệ thống đang được sử dụng hàng ngày và tiếp tục phát triển.
Công Nghệ Sử Dụng
Frontend: Next.js 15, React 19, Tailwind CSS 4, TipTap Editor
Backend: tRPC, NextAuth.js v5, Python/FastAPI (dịch vụ PDF)
CSDL: PostgreSQL, Drizzle ORM, MeiliSearch
Hạ tầng: Tự quản lý, AWS S3, Bun runtime

