Personal site for Lemmy Lin. Live at https://lemmylin.github.io/.
React 18 + Vite 5 + Tailwind CSS v4, with Framer Motion for the scroll fades. Deployed to GitHub Pages by .github/workflows/deploy.yml on every push to main.
npm install
npm run dev # http://localhost:5173
npm run build # outputs to dist/ (not committed)All the content is in src/data/. Components in src/components/ just render it.
| File | What it holds |
|---|---|
profile.js |
Name, title, hero blurb, status line, "now" card, social links |
about.js |
About section paragraphs and interests |
education.js |
School and degrees |
experience.js |
Jobs, newest first |
projects.js |
work and personal project lists (rendered as separate groups) |
skills.js |
Skill rows, in display order |
public/Resume.pdf is the résumé linked from the header and contact section. Replace the file to update it.
Swiss / International style: white, black, and #ff3000 red, Inter, square corners, heavy rules. Shared helpers:
src/components/Section.jsx:Sectionwrapper with the numbered gray header bar, plususeFadeIn()and the sharedeasecurvesrc/index.css: texture patterns (.swiss-grid,.swiss-dots,.swiss-diagonal,.swiss-noise),.swiss-label,.swiss-wrap, and the.tag/.btncomponent classes