dangkhoabach.vn — Nền tảng cá nhân
Chính trang bạn đang xem: một API ASP.NET Core và tám ứng dụng Next.js trên các subdomain riêng — portfolio này, ToolsHub, trang tải ứng dụng, một trò chơi chọn ngẫu nhiên, trang chuyển văn bản tiếng Việt và tiếng Anh thành giọng nói, thư viện phim riêng, một trang tài khoản để đăng nhập vào tất cả, và trang quản trị kiêm bảng điều khiển homelab.

- Loại
- Dự án cá nhân
- Thời gian
- 07/2026 – hiện tại
- Công nghệ
- Liên kết
- dangkhoabach.vn
Những gì tôi làm
- Portfolio render phía máy chủ, EN/VI, giao diện sáng/tối, structured data và bản dữ liệu dự phòng khi API ngừng.
- Accounts: một lần đăng nhập cho mọi trang, bằng email hoặc username rồi mã xác thực hoặc passkey. Mỗi trang nhận một mã dùng một lần và chỉ người được cấp ứng dụng đó mới vào được; ảnh đại diện, mật khẩu, 2FA và phiên đăng nhập của mọi trang được quản lý ở cùng một nơi.
- Text to Speech: chuyển văn bản tiếng Việt và tiếng Anh thành giọng nói ở chế độ nhanh và chất lượng cao, dùng thử miễn phí không cần tài khoản, có Cloudflare Turnstile chống spam; người đăng nhập có API token riêng và thống kê sử dụng theo ngày. Giọng đọc chạy trên NAS tại nhà.
- Movies: thư viện phim riêng theo thư mục, gắn nhãn 4K, HDR, Dolby Vision và Atmos; người được cấp quyền xem trực tiếp từ NAS qua một đường link riêng, đổi link được bất cứ lúc nào.
- Trang quản trị: chỉnh nội dung, hộp thư liên hệ, người dùng và các ứng dụng mỗi người được mở, nhật ký kiểm toán có so sánh trước/sau, nhật ký email và phát hành ứng dụng.
- Insights: thống kê truy cập không dùng cookie cho mọi trang công khai. Khách được đếm bằng hash có salt đổi mỗi ngày, không lưu địa chỉ IP.
- Phát hành ứng dụng: đăng bản build macOS, feed Sparkle và ghi chú phát hành; trang tải cập nhật ngay và đếm lượt tải.
- Home & NAS: trạng thái homelab theo thời gian thực, container, ổ đĩa và dataset, cảnh báo qua email và 15 lệnh điều khiển từ xa theo danh sách cho phép (xem dự án Homelab trên TrueNAS).
Bảo mật
- Phiên đăng nhập dạng opaque, lưu hash, thu hồi được; Argon2id; khoá tài khoản và giới hạn tần suất.
- MFA TOTP với secret được mã hoá và mã khôi phục dùng một lần; passkey (WebAuthn) để đăng nhập không mật khẩu và xác minh lại bằng Touch ID.
- Lệnh nhạy cảm yêu cầu xác minh MFA hoặc passkey gần nhất; mọi thao tác ghi đều được ghi nhật ký trong cùng transaction.
- Trang quản trị, Accounts, Text to Speech và Movies chỉ gọi API từ phía máy chủ, mỗi trang có shared secret và giá trị CSRF riêng, cùng CSP nonce cho từng request.
- Link xem phim là HMAC của người dùng và một số phiên bản, nên API không lưu link nào; đổi link thì link cũ ngừng hoạt động trong vòng một phút.
- File tải lên được kiểm tra magic bytes và mã hoá lại, bỏ hết metadata; SVG được làm sạch và ghi lại.
Phát hành
- 335 test API (xUnit).
- Deploy bằng script lên Windows IIS: Next.js standalone chạy dưới iisnode, tải lên tăng dần, thay API an toàn và kiểm tra sau deploy.