All projects

Personal project07/2026 - present

dangkhoabach.vn — Personal Platform

The site you are on: one ASP.NET Core API and five Next.js apps on separate subdomains — this portfolio, ToolsHub, an app download centre, a small random-picker game and an admin console that also runs my home lab.

dangkhoabach.vn — Personal Platform
Client
Personal project
Period
07/2026 - present
Built with
.NET 8EF CoreSQL ServerNext.js 16React 19TypeScriptTailwind CSSWebAuthnIIS

What I built

  • Portfolio with server rendering, EN/VI, light and dark themes, structured data and a fallback snapshot when the API is down.
  • Admin console: content editing, contact inbox, users, audit log with before/after diffs, email log and app releases.
  • Insights: cookie-less analytics for all public sites. Visitors are counted with a daily-rotating salted hash, so no IP address is stored.
  • App releases: publish a macOS build, its Sparkle feed and release notes; the download page refreshes immediately and downloads are counted.
  • Home & NAS: live status of my home lab and 21 allowlisted remote commands (see the Home Lab on TrueNAS project).

Security

  • Opaque, hashed, revocable sessions; Argon2id; lockout and rate limits.
  • TOTP MFA with encrypted secrets and single-use recovery codes; passkeys (WebAuthn) for passwordless sign-in and Touch ID step-up.
  • Sensitive commands need a fresh MFA or passkey check; every write is audited in the same database transaction.
  • The admin frontend calls the API only from the server, behind a shared-secret guard and CSRF header, with a per-request nonce CSP.
  • Uploads are checked by magic bytes; SVGs are sanitised and re-serialised.

Delivery

  • 249 API tests (xUnit).
  • Scripted deploys to Windows IIS: standalone Next.js builds under iisnode, incremental uploads, API swaps behind an offline page and post-deploy checks.