37 lines
2.1 KiB
Markdown
37 lines
2.1 KiB
Markdown
# Portfolio
|
|
|
|
Personal portfolio website — interactive professional profile, not a CV pasted onto a webpage.
|
|
|
|
Built per [INSTRUCTIONS.md](./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.
|
|
|
|
```sh
|
|
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](./INSTRUCTIONS.md) (inspect workspace sources → canonical content model → i18n/routing/section architecture → animation system → implement → verify).
|