Files
portfolio/README.md

2.1 KiB

Portfolio

Personal portfolio website — interactive professional profile, not a CV pasted onto a webpage.

Built per INSTRUCTIONS.md, which is the full build specification: source-of-truth rules (CV/resume files in this workspace are canonical; no invented facts), section architecture, i18n-first design, animation requirements, Docker deployment, and verification checklist.

What it presents

  • About — who I am, professional summary
  • Experience — work history with dedicated timeline/role UI
  • Projects — browsable project details (purpose, role, tech, outcomes, links)
  • Skills — categorized by actual experience, no invented percentages
  • Education / Certifications
  • Contact + external profiles

Key properties

  • Section navigation — persistent nav with addressable URLs (/en/experience, /en/projects, ...), browser Back/Forward support, animated section transitions that are interruptible and respect prefers-reduced-motion
  • i18n-first — canonical content layer separate from translations; locale detection (saved choice → browser languages → region hint → default); visible language selector with persistence; /en/..., /vi/... style URLs with hreflang/canonical metadata
  • Design — clean, technical aesthetic; mobile-first, responsive, accessible, keyboard navigable; dark/light mode; simple at first glance, detailed when explored
  • Performance — small initial bundle, no heavy animation/UI libraries for effects CSS can do

Deployment

Docker-based: multi-stage build, non-root runtime user, health check.

docker build -t portfolio .
docker run --rm -p 8080:8080 portfolio

See INSTRUCTIONS.md → "Docker and deployment" for ports, environment variables, and content-editing guides (adding projects, work history, skills, languages).

Status

Scaffold — repo initialized. Implementation follows the engineering steps in INSTRUCTIONS.md (inspect workspace sources → canonical content model → i18n/routing/section architecture → animation system → implement → verify).