Skip to content

About

Personal website

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Jiawei Ye — Portfolio

Personal portfolio for Jiawei (Jacky) Ye, a Computer Engineering student and hardware/software engineer. The site presents embedded systems, FPGA, RF, and AI work through project case studies and playable browser recreations.

Visit the live site

Portfolio preview

Featured projects

Project What it demonstrates Demo
Laser Puzzle A Canvas recreation of a DE1-SoC laser-reflection game, with the original board geometry, mirrors, targets, hazards, timer, and lives Solve the puzzle
Donkey Kong FPGA Game A browser version of a Verilog platform game using its original sprites, movement timing, collision rules, and win condition Play the game
IMU Sandbox A Three.js recreation of an STM32, BNO055, and OLED particle sandbox with roll, pitch, yaw, gravity, and material controls Alter gravity
RF Frequency Downconversion System A case study covering the design, assembly, and validation of an analog receiver PCB Read the case study
Vision-Assisted Adaptive Cruise Control A Raspberry Pi vehicle combining PID control, lane keeping, emergency braking, and stop-sign detection Read the case study

Highlights

  • Responsive, accessible portfolio with light and dark themes
  • Content managed from a single YAML file
  • Keyboard, pointer, and touch support for interactive projects
  • Reduced-motion support for animated project previews
  • Locally hosted Three.js assets with no runtime CDN dependency
  • Static output designed for GitHub Pages
  • Automated tests for all three interactive project engines

Built with

  • Jekyll, Liquid, HTML, and CSS
  • Vanilla JavaScript and Canvas
  • Three.js
  • Node.js' built-in test runner
  • GitHub Pages

Run locally

The repository has no npm package dependencies. To use the included preview builder, install:

  • Node.js 20.11 or newer
  • Ruby with the standard yaml library

Then clone and build the site:

git clone https://github.com/oldyemeister/oldyemeister.github.io.git
cd oldyemeister.github.io
npm run preview:build

The rendered site is written to /private/tmp/personal-website-preview. Serve that directory with any static file server, for example:

python3 -m http.server 8000 --directory /private/tmp/personal-website-preview

Open http://localhost:8000 in a browser.

Development commands

npm test                 # Run the interactive engine tests
npm run assets           # Regenerate game assets from archived hardware sources
npm run preview:build    # Build a local static preview
npm run build            # Build the published site into _site/

The asset conversion scripts expect the original project sources under tools/.reference/demos/. Those reference files are used for local regeneration and are not part of the deployed site.

Updating the portfolio

Edit _data/content.yml to update your profile, experience, and project summaries. Project pages, styling, and interactive demos live in the directories below.

Location Purpose
_data/content.yml Profile, experience, and project content
index.html, projects/, 404.html Homepage, project pages, and error page
_layouts/, _includes/ Base layouts and reusable components
assets/css/, assets/themes/ Styles, themes, and web fonts
templates/ Design templates and page rendering
assets/js/ Game engines and supporting scripts
assets/images/, assets/documents/, assets/vendor/ Images, documents, and bundled libraries
docs/ Editing guide, attribution, and publishing notes
tools/, test/ Build tools, asset converters, and engine tests

Run npm run build and serve _site/ to review the published design locally. For alternate design previews, see the design editing guide.

Forking this as a template

Nearly all personal content lives in _data/content.yml; the layouts, includes, build tooling, and CSS/JS architecture underneath are generic. To reuse this repo for a different portfolio:

  1. Rewrite _data/content.yml with your own profile, experience, skills, and project entries.
  2. Set _config.yml's url: to your own GitHub Pages (or custom) domain.
  3. Replace assets/documents/resume/*.pdf with your own résumé and update resume.url in content.yml to match its filename.
  4. Replace assets/images/site/profile-monogram.svg (or swap about.image.path in content.yml to point at your own portrait/monogram).
  5. Update this README's own personal links, badges, and git clone URL.
  6. Add or remove case studies by adding or removing projects/<name>/index.html or index.md; the build finds them automatically and lists them in sitemap.xml.
  7. Interface wording (menu, keyboard hints, "Start game", card labels, section numbers) lives in the ui: block of content.yml.
  8. Regenerate the link-preview card and favicons with npm run assets:brand, and the playable-project preview videos with npm run assets:previews (both need Chrome; the previews also need ffmpeg).

The build versions every CSS/JS URL with a content hash and bundles each page's stylesheets, so never add ?v= query strings by hand.

The Persona-themed alternate design (templates/persona/, assets/themes/persona/) is optional decoration layered on top of the same content — see the design editing guide if you want to keep, customize, or remove it.

Deployment

Pushing to main runs .github/workflows/pages.yml: engine tests, the Node static build, and deployment to GitHub Pages. GitHub Pages uses GitHub Actions as its publishing source.

npm run build writes the deployable site to _site/, which is ignored by Git. See publishing notes for route details and deployment setup.

About

Personal website

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages