Bỏ qua điều hướng
EN

Quyền riêng tư

Chính sách bảo mật

Cập nhật

Trang này nói rõ DTCode lưu gì về bạn, dùng vào việc gì, gửi cho ai và bạn tự kiểm soát dữ liệu của mình thế nào.

Tóm tắt

  • Đọc bài không cần tài khoản. Blog không chạy quảng cáo và không bán hay chia sẻ dữ liệu của bạn để quảng cáo.
  • Lượt xem trang được đếm ẩn danh, không dùng cookie.
  • Địa chỉ IP dùng để chống spam bình luận, đánh giá, liên hệ được băm (hash) trước khi lưu, không lưu IP thật.
  • Khi dùng tính năng AI, nội dung bạn hỏi được gửi tới nhà cung cấp AI để xử lý — xem mục Trợ lý AI.
  • Bạn tự tải về và tự xoá vĩnh viễn tài khoản trong trang Tài khoản.

Dữ liệu blog lưu

Khi bạn chỉ đọc bài

  • Thống kê truy cập: trang được xem, trang dẫn tới, quốc gia, loại thiết bị và trình duyệt — qua Vercel Web Analytics, ẩn danh, không cookie, không gắn với bạn. Trang tài khoản và trang quản trị không được đếm. Blog tự đếm thêm số lượt đọc mỗi bài mỗi ngày — chỉ là con số, không lưu IP hay thông tin nào về bạn.
  • Đánh giá sao và cảm xúc (👍 🔥 💡): số sao bạn chấm, cảm xúc bạn bấm, kèm mã ngẫu nhiên trong cookie vid và IP đã băm để mỗi người chỉ tính một lần.
  • Bình luận khi chưa đăng nhập: tên bạn nhập, nội dung, thời điểm gửi, thông tin trình duyệt và IP đã băm. Bình luận có thể phải chờ duyệt trước khi hiện.
  • Hỏi Victor hoặc ghim giấy nhớ lên một đoạn văn: đoạn văn đó được ghi lại ẩn danh (không kèm tài khoản hay IP) để tác giả biết đoạn nào khó hiểu mà viết lại.
  • Tin nhắn liên hệ: tên, email, nội dung bạn gửi và IP đã băm.
  • Bản tin (nhận bài mới qua email): email bạn nhập, IP đã băm, thời điểm đăng ký/xác nhận/huỷ. Chỉ gửi khi bạn đã bấm link xác nhận trong email; mỗi email bản tin có link huỷ nhận. Không gắn với tài khoản.
  • Báo cáo bình luận vi phạm: lý do bạn chọn, mã cookie vid (hoặc tài khoản) để mỗi người chỉ báo cáo một lần, và IP đã băm.

Khi bạn có tài khoản

  • Hồ sơ: tên hiển thị, email và ảnh đại diện (ảnh bạn tải lên, ảnh Victor, hoặc ảnh từ tài khoản mạng xã hội). Mật khẩu được mã hoá một chiều — không ai đọc được, kể cả tác giả blog.
  • Đăng nhập bằng GitHub, Discord, GitLab hoặc Google: blog chỉ nhận tên, email và ảnh đại diện; không nhận mật khẩu hay quyền nào khác trên tài khoản đó.
  • Phiên đăng nhập: cookie phiên, kèm địa chỉ IP và trình duyệt lúc đăng nhập để bảo vệ tài khoản. Các trang đăng nhập, đăng ký, quên mật khẩu còn dùng IP để giới hạn số lần thử trong thời gian ngắn, chống dò mật khẩu.
  • Bình luận, đánh giá và cảm xúc bạn gửi khi đã đăng nhập.
  • Bài đã lưu: các bài bạn bấm "Lưu đọc sau" và thời điểm lưu.
  • Thông báo trên chuông: khi có người trả lời bình luận của bạn — tên người trả lời, tên bài, trích đoạn trả lời, thời điểm và bạn đã xem chưa (giữ 50 thông báo mới nhất). Việc cần làm trên chuông (câu cần ôn, việc hôm nay, bài mới trong loạt đang học) được tính từ dữ liệu học tập lúc bạn mở, không lưu thêm.
  • Chứng nhận hoàn thành loạt bài (chỉ khi bạn bấm nhận): tên của bạn lúc nhận, tên loạt bài, ngày cấp. Ai có link chứng nhận đều xem được — đó là để bạn chia sẻ; trang chứng nhận không được đưa lên Google.
  • Dữ liệu học tập: thời gian học, chuỗi ngày học, bài đã học xong, kết quả luyện tập, lịch ôn tập, thẻ ghi nhớ, ghi chú, giấy nhớ và đoạn đánh dấu trên bài, việc trong Lịch học, mục tiêu học mỗi ngày.
  • Bài học của tôi (PRO): khi bạn tải tài liệu lên, máy chủ trích phần chữ rồi bỏ file gốc — chỉ lưu phần chữ, các bài học được tạo ra, môn học và lộ trình của bạn.
  • Chuẩn bị phỏng vấn: mô tả công việc và kết quả bạn chọn lưu lại.
  • Nhạc học: các playlist của bạn (video YouTube, tên bài, kênh). Từ khoá tìm nhạc được lưu chung cho cả site trong 7 ngày để đỡ tìm lại, không gắn với tài khoản của bạn.
  • Gói PRO, ủng hộ và thanh toán: gói đang dùng, ngày hết hạn và các đơn hàng (mã đơn, số tiền, trạng thái, mã giao dịch, thời điểm thanh toán). Bạn chuyển khoản trong ứng dụng ngân hàng của mình qua mã VietQR của payOS; blog không lưu số tài khoản, số thẻ hay mật khẩu ngân hàng của bạn.
  • Tuỳ chọn: có nhận email trả lời bình luận hay email nhắc học không, đồ đang mặc cho Victor.

Dùng dữ liệu vào việc gì

  • Chạy các tính năng bạn dùng: hiện bình luận, lưu tiến trình học, playlist, bài học riêng…
  • Chống spam và lạm dụng (giới hạn số lần gửi theo IP đã băm, duyệt bình luận).
  • Gửi email bạn cần:
    • xác minh email và đặt lại mật khẩu;
    • biên nhận thanh toán khi bạn mua gói PRO (mã đơn, số tiền, mã giao dịch, hạn dùng);
    • báo khi có người trả lời bình luận của bạn — bật sẵn, tắt bằng link trong email hoặc trong trang Tài khoản;
    • nhắc việc và nhắc giữ chuỗi ngày học — chỉ khi bạn bật trong Tiến trình học tập;
    • bản tin báo bài mới — chỉ khi bạn đăng ký và xác nhận, huỷ bằng link cuối mỗi email.
  • Trả lời tin nhắn liên hệ.
  • Xem thống kê ẩn danh (lượt xem, đoạn văn hay được hỏi) để viết bài tốt hơn.

Trợ lý AI

Victor (khung chat, Hỏi Victor, lên kế hoạch học), câu hỏi luyện tập, Bài học của tôi, Chuẩn bị phỏng vấn và Chấm CV dùng AI của Google Gemini; khi Gemini hết lượt, yêu cầu được chuyển sang Groq hoặc OpenRouter.

  • Được gửi đi: câu bạn hỏi Victor kèm nội dung bài đang đọc, đoạn văn bạn bôi đen, nội dung bài khi tạo câu hỏi luyện tập, phần chữ trong tài liệu bạn tải lên, mô tả công việc và câu trả lời luyện phỏng vấn; nội dung CV khi chấm CV (email và số điện thoại trong CV được tự che trước khi gửi, CV không được lưu lại; tải file CV lên thì máy chủ chỉ trích phần chữ để bạn xem lại rồi bỏ file, chưa gửi gì cho AI cho tới khi bạn bấm chấm); tên, thời lượng đọc và tiêu đề các mục của những bài bạn chọn khi lên kế hoạch học (kèm khoảng ngày học — không gửi lịch hay giấy nhớ của bạn); tên và nội dung bình luận đang chờ duyệt (để AI gợi ý cho admin bình luận nào có thể là spam — admin vẫn là người quyết định).
  • Không gửi đi: tên, email, mật khẩu hay thông tin tài khoản của bạn (trừ những gì chính bạn ghi trong CV hay câu hỏi — nên xoá họ tên, địa chỉ trước khi chấm CV).
  • Thử regex, JSON · JWT · Base64, so sánh văn bản chạy hoàn toàn trên trình duyệt — nội dung bạn dán không được gửi lên máy chủ hay cho AI.
  • Lịch sử chat với Victor chỉ nằm trong tab trình duyệt của bạn và mất khi đóng tab — máy chủ không lưu nội dung chat.
  • Theo dõi chất lượng AI: mỗi lượt gọi AI (câu hỏi, nội dung kèm theo, câu trả lời, model, số token, lỗi) được ghi lại ở Langfuse để admin tìm lỗi, câu trả lời kém và theo dõi chi phí. Bản ghi không kèm tên, email, IP hay mã tài khoản của bạn.
  • Nhà cung cấp AI xử lý dữ liệu theo chính sách riêng của họ; với gói dùng miễn phí, một số nhà cung cấp có thể dùng nội dung để cải thiện dịch vụ. Đừng gửi thông tin nhạy cảm (mật khẩu, khoá API, dữ liệu cá nhân của người khác) cho Victor hay trong tài liệu tải lên.

Dịch vụ bên thứ ba

Dịch vụDùng để
VercelChạy website, thống kê truy cập ẩn danh
NeonCơ sở dữ liệu (máy chủ đặt tại Mỹ)
CloudinaryẢnh, video trong bài và ảnh đại diện bạn tải lên
ResendGửi email
payOSThanh toán gói PRO
Google Gemini, Groq, OpenRouterTính năng AI
LangfuseGhi lại các lượt gọi AI (nội dung gửi đi, câu trả lời, số token) để kiểm tra chất lượng và chi phí — không kèm thông tin tài khoản
YouTubeVideo trong bài, trình phát Nhạc học, tìm nhạc
GitHub, Discord, GitLab, GoogleĐăng nhập (nếu bạn chọn)
SentryGhi lại lỗi máy chủ để sửa (đường dẫn trang bị lỗi và thông báo lỗi — không kèm cookie, IP hay thông tin tài khoản)
Have I Been PwnedKiểm tra mật khẩu bạn đặt có nằm trong các vụ rò rỉ dữ liệu không — chỉ gửi 5 ký tự đầu của mã băm SHA-1, không gửi mật khẩu hay email
Cloudflare TurnstileKiểm tra bạn không phải bot khi bình luận chưa đăng nhập và khi đăng ký (Cloudflare nhận IP và thông tin trình duyệt của bạn)

Dữ liệu của bạn được lưu và xử lý trên máy chủ của các dịch vụ này, phần lớn ở nước ngoài.

Về YouTube: video trong bài viết dùng chế độ hạn chế cookie (youtube-nocookie) và chỉ tải khi bạn bấm phát. Trình phát Nhạc học dùng trình phát YouTube chính thức — khi phát nhạc, YouTube có thể đặt cookie theo chính sách của Google. Khi bạn tìm nhạc, máy chủ blog gửi từ khoá tới YouTube để lấy kết quả.

Về nút Nghe bài: bài được đọc bằng giọng đọc có sẵn trong trình duyệt hoặc hệ điều hành của bạn, không qua máy chủ blog. Blog ưu tiên giọng cài trên máy; nếu máy chỉ có giọng trực tuyến (ví dụ "Google Tiếng Việt" trên Chrome), chính trình duyệt gửi chữ của đoạn đang đọc tới nhà cung cấp giọng đó.

Cookie của blog:

  • Phiên đăng nhập — chỉ có khi bạn đăng nhập, bắt buộc để giữ đăng nhập.
  • vid — mã ngẫu nhiên, giữ 1 năm, để tránh một người chấm sao hay bấm cảm xúc nhiều lần.
  • dtcode-app — chỉ có khi mở bằng ứng dụng DTCode trên Android/iOS (hoặc bản dùng thử qua Expo Go), ghi "android", "ios" hoặc "expo", mất khi đóng ứng dụng/trình duyệt. Dùng để ẩn phần thanh toán mà cửa hàng ứng dụng không cho phép.

Ứng dụng DTCode (Google Play, App Store) chỉ mở chính website này: dữ liệu được thu thập và xử lý đúng như mô tả trong chính sách, ứng dụng không thu thập thêm gì (không vị trí, danh bạ, ảnh hay mã quảng cáo). Đăng nhập GitHub/Google trong bản dùng thử Expo Go mở trình duyệt của điện thoại, rồi trả phiên đăng nhập về ứng dụng bằng một mã dùng một lần (lưu dạng băm trên máy chủ, hết hạn sau 3 phút).

Lưu trong trình duyệt (không gửi lên máy chủ): giao diện sáng/tối, bố cục trang chủ, tên bạn đã nhập khi bình luận, số sao bạn đã chấm, tuỳ chọn trình phát nhạc (âm lượng, playlist gần nhất), ẩn/hiện giấy nhớ, đồ của Victor, tiến độ trang ôn tập của từng bài (thẻ đã thuộc/đang học, số lần trả lời đúng/sai mỗi câu), dấu "đã đếm lượt đọc bài này" (chỉ trong tab đang mở, để một lần đọc không bị đếm nhiều lần). Lịch sử chat với Victor nằm trong bộ nhớ của tab và mất khi đóng tab.

Blog không dùng cookie quảng cáo hay cookie theo dõi. Xoá dữ liệu trang web trong trình duyệt sẽ xoá các mục trên (và đăng xuất bạn).

Lưu bao lâu

  • Tài khoản và dữ liệu học tập: đến khi bạn xoá tài khoản.
  • Phiên đăng nhập: tự hết hạn sau 30 ngày không dùng. Link xác minh email hết hạn sau 24 giờ.
  • Kết quả tìm nhạc dùng chung: 7 ngày.
  • IP đã băm và thông tin trình duyệt kèm bình luận, đánh giá, cảm xúc, báo cáo vi phạm, tin nhắn liên hệ: 90 ngày, sau đó bị xoá (nội dung bình luận và số sao vẫn giữ).
  • Tin nhắn liên hệ: xoá 1 năm sau khi được đọc.
  • Thông báo trên chuông: xoá 90 ngày sau khi bạn đã xem.
  • Đăng ký bản tin chưa xác nhận: xoá sau 30 ngày. Đã huỷ nhận thì chỉ giữ email để không gửi nhầm; muốn xoá hẳn, gửi yêu cầu qua trang Liên hệ.
  • Đơn thanh toán chưa hoàn tất: xoá sau 30 ngày. Đơn đã thanh toán được giữ để đối soát.
  • Khi bạn xoá tài khoản:
    • hồ sơ, phiên đăng nhập, dữ liệu học tập, bài học riêng, playlist, ghi chú, lịch học… bị xoá ngay; ảnh đại diện bạn tải lên bị xoá khỏi Cloudinary;
    • bình luận vẫn được giữ để cuộc trò chuyện dưới bài không bị đứt, nhưng tên đổi thành Thành viên đã xoá;
    • lượt đánh giá sao và cảm xúc được giữ ẩn danh; danh sách bài đã lưu bị xoá;
    • đơn thanh toán được giữ để đối soát, nhưng không còn gắn với tài khoản nào.

Quyền của bạn

  • Xem và tải về dữ liệu: Tài khoản → Dữ liệu của bạn → Tải dữ liệu của tôi (file JSON).
  • Sửa thông tin: đổi tên, ảnh đại diện, mật khẩu trong Tài khoản. Muốn đổi email thì gửi yêu cầu qua trang Liên hệ.
  • Xoá bình luận của bạn trong Bình luận của tôi.
  • Tắt email: email trả lời bình luận tắt bằng link trong email hoặc trong Tài khoản; email nhắc học tắt trong Tiến trình học tập.
  • Xoá tài khoản vĩnh viễn: Tài khoản → Dữ liệu của bạn → Xoá tài khoản.
  • Yêu cầu khác — ví dụ xoá bình luận bạn gửi khi chưa đăng nhập hay tin nhắn liên hệ — gửi qua trang Liên hệ.

Thay đổi chính sách

Khi blog thêm tính năng hoặc dịch vụ mới liên quan tới dữ liệu của bạn, trang này sẽ được cập nhật và ngày Cập nhật ở đầu trang thay đổi theo.