# hoelee-profile Personal profile and animated resume for **Lee Teong Hoe (Mr Hoelee)** — Full Stack Engineer · AI & Automation · DevOps. **Live:** https://me.hoelee.com [![Live](https://img.shields.io/badge/live-me.hoelee.com-0b4a6f)](https://me.hoelee.com) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE) ## What this is An animated developer profile: the page types its own stylesheet in a code editor on the left while rendering the resume on the right, then finishes with a thank-you / contact panel. It's a personal site — the content is my resume, not a reusable template. The *technique* is adapted from [jirengu-inc/animating-resume](https://github.com/jirengu-inc/animating-resume) (Apache-2.0); see Credits. ## Tech stack | Technology | Role | | --- | --- | | Vue 3 | UI framework | | Vite 6 | Dev server and build tool | | Prism.js | Syntax highlighting in the code panel | | marked | Markdown → HTML rendering | ## Project structure | Path | Purpose | | --- | --- | | `src/App.vue` | Desktop layout — orchestrates the typewriter sequence | | `src/Mobile.vue` | Mobile layout (used when viewport ≤ 500px) | | `src/config/profile.js` | **All content lives here** — details, Markdown, animation speed, typed CSS | | `src/components/StyleEditor.vue` | Left panel: highlighted, self-typing CSS | | `src/components/ResumeEditor.vue` | Right panel: resume markdown → HTML | | `src/components/ThankEditor.vue` | Footer: thank-you / contact panel | | `src/main.js` | Entry point, picks desktop vs mobile | | `src/assets/reset.css` | Reset + border-box baseline | | `public/robots.txt` | Crawler directives (copied into the build) | ## Editing the content Everything you'd want to change is in `src/config/profile.js`: - `name`, `title` — identity and headline - `typingSpeed` — ms per character (`1` = near-instant, `20` = slow and dramatic) - `resumeMarkdown` — the resume body - `thanksMarkdown` — the thank-you / contact panel - `desktopStyles` / `mobileStyles` — **arrays** of CSS strings, typed in sequence > **Note on the CSS arrays.** Each array is typed in order and every stage is *appended to the same > injected `