English | 繁體中文
A production-ready, recruiter-friendly portfolio for LEO0331. The site is driven by curated project data, supports English and Traditional Chinese routes, and deploys statically to GitHub Pages.
- React 18 and TypeScript
- React Router 7 with static route entrypoints for GitHub Pages
- Vite 8 and Tailwind CSS
- Playwright E2E tests with a functional coverage gate
- GitHub Actions for build, Lighthouse, E2E, and Pages deployment
- Built for quick recruiter scanning: clear sections, focused project cards, direct demo/repo links
- Data-driven content: update portfolio info in data files, not JSX
- Bilingual ready: English + Traditional Chinese UI and project content support
- Static deployment: crawlable routes with generated GitHub Pages entrypoints
- Quality guardrails: Playwright E2E + CI workflows
- Review who you are and your engineering focus
- Filter projects by category, technology, and status
- Open project details in-page without losing filters/scroll state
- Switch language between English and Traditional Chinese
- Open live demos and source repositories directly
npm install
npm run devnpm run validate:harness
npm ci
npm audit
npm run build
npm run test:e2e- Confirm
baseinvite.config.tsmatches the deployed repo path. - Build with your public site URL so sitemap and robots metadata are generated correctly:
SITE_URL=https://<username>.github.io/<repo> npm run build- this auto-generates both
public/sitemap.xmlandpublic/robots.txt - for security, only
http/httpsSITE_URL values are accepted
- Push to
main. - In repository settings, enable GitHub Pages with GitHub Actions.
- Route-level metadata is handled by
usePageSeoinsrc/utils/seo.ts. public/sitemap.xmlis auto-generated fromsrc/routes/routeConfig.jsonduring build.public/robots.txtis auto-generated fromSITE_URLduring build.- After deployment, submit:
https://<username>.github.io/<repo>/sitemap.xmlto Google Search Console- same URL to Bing Webmaster Tools
src/data/profile.tssrc/data/skills.ts
- Run
npm run sync:projectsto preview GitHub metadata changes. New repositories are listed as review-only candidates and are never inserted automatically. Usenpm run sync:projects -- --writeonly for reviewed demo URL updates to existing entries; curated descriptions are never overwritten. - Curate the canonical project record in
src/data/projects.ts; do not keep automatically generated placeholder copy. - Add/update Traditional Chinese text in
src/data/projects.zh.tswhen localized copy is required. Missing entries fall back to the canonical English record. - Add the live-demo preview to
src/assets/images/projects/<id>.png(or.webp) and visually verify that data-heavy pages finished loading.- Capture automation only visits public hosts approved in
tools/public-demo-url.mjs; review and explicitly add custom deployment domains.
- Capture automation only visits public hosts approved in
- Capture selected previews in PowerShell:
$env:TARGET_IDS="project-id,another-id"
node tools/capture-project-previews.mjs- Update
progress.mdin the same change with the IDs added, sources checked, files changed, verification evidence, blockers, and next action. - Run the full verification gate shown above plus
git diff --check.
Notes:
- If
demoUrlis missing, the Live Demo button is hidden. - If
repoUrlis missing, the GitHub Repo button is hidden. - If image is missing, cards render a graceful placeholder.
- Traditional Chinese README: README.zh-TW.md
- Repository agent rules: AGENTS.md
- Feature state: feature_list.json
- Restartable work log: progress.md
- Current-session handoff: session-handoff.md
- Full verification entrypoint for Git Bash/CI (
bash init.sh): init.sh - Workflow skill template: skill.md
- Template usage guide: wiki.md