A modern, responsive, and animated portfolio built with React, TypeScript, and Vite, deployed via Vercel. Designed to showcase personal coding projects, photography collections, and blog posts clearly, intuitively, and efficiently.
- Landing Page β Minimalistic and engaging intro.
- Coding Projects β Dynamic showcases built from structured data.
- Photography Collections β Optimized, precomputed gallery layouts.
- Blog Posts β Markdown-based with enhanced readability and navigation.
-
Live Website yuetingliao.com
-
DNS Management: Squarespace Domains
-
DNS Check: Global DNS Checker
- Framework: React, TypeScript, Vite
- Styling: Tailwind CSS, CSS Modules
- Icons: Material Icons, Custom SVG Icons
- Markdown: React Markdown
- Deployment: Vercel
- Image Processing: Sharp
- Metadata: JSON config, Markdown front-matter
- High Performance: Vite-powered builds and dynamic imports for fast loading.
- Optimized Image Handling: Automated scripts for resizing, formatting (WebP), and metadata extraction.
- Smooth Navigation: Consistent user experience with reusable components.
- SEO Optimized: Semantic markup, structured data, optimized images, and Lighthouse audits.
- Flexible Content System: Markdown posts with JSON configuration for scalability.
- Integrated Analytics: Vercel Web Analytics and performance monitoring.
.
βββ public
β βββ images
β βββ features.json
β βββ highlightedRegions.csv
β βββ logo.svg
βββ scripts
β βββ images-config.json
β βββ process-images-reformat.js
β βββ process-images-rename.js
β βββ process-images-update.js
βββ src
β βββ assets
β βββ components
β βββ data
β βββ hooks
β βββ pages
β βββ styles
β βββ App.tsx
β βββ main.tsx
β βββ custom.d.ts
β βββ vite-env.d.ts
βββ tailwind.config.mjs
βββ tsconfig.json
βββ vite.config.ts
βββ eslint.config.js
βββ postcss.config.js
βββ vercel.json
βββ index.html
βββ package.json
βββ README.md
βββ LICENSE
Images are optimized via custom Node scripts leveraging Sharp:
-
Export Images
Export images from CaptureOne (or other photo editing software) as JPEG.
-
Folder Preparation
- Create a folder named
source
containing all images for import. - Move the
source
folder into the relevant subdirectory underpublic/images/
.
Example:public/images/gallery/collection1/source/
- Create a folder named
-
Run Optimization Scripts
Use scripts provided in
./scripts
. See instructions below under Running Image Script. -
Resulting
.webp
Image Specifications:
Type | Width | Quality | Target Size |
---|---|---|---|
Gallery Preview | 1600px | 80β90% JPEG | 300β500 KB |
Thumbnail/Grid | 600px | 80% JPEG | 100β150 KB |
Example: adding images to the Gallery page.
-
From the repository root, run:
npm run images-update gallery
-
This executes two scripts:
process-images-rename.js
: Renames images sequentially.process-images-reformat.js
: Converts and resizes images to WebP.
-
Images located under
public/images/gallery/
are processed, resulting in filenames like001.webp
,002.webp
, etc. -
Optimized images are output to:
public/images/gallery/collection1/ βββ preview/ # WebP images, 1600px width βββ thumbnail/ # WebP images, 600px width βββ source/ # Original JPEG images (can be deleted post-processing)
-
After successful processing, safely delete the original
source
folder before deployment. -
Advanced configurations are adjustable via:
./scripts/images-config.json
- Direct edits to script files in
./scripts/
Lighthouse reports are regularly run during development to ensure high scores in:
- Performance
- Accessibility
- SEO
- Best Practices
The site consistently achieves top-tier scores (95β100 range) across all metrics.
- Vercel Web Analytics provides real-user metrics such as page views, device usage, and geographical distribution.
- Speed Insights tracks loading behavior, Core Web Vitals, and real-time performance issues across devices and locations.
Together, these tools guide iterative optimizations and ensure a fast, smooth user experience.
The homepage serves as a minimal and engaging entry point, setting the tone for the rest of the site with clean layout, smooth animations, and responsive design.
- Welcome introduction and quick overview
- Smooth scroll navigation to key sections
- Call-to-action links to explore projects, gallery, and blog
Projects dynamically rendered from structured JSON:
- Project details (title, description, tags)
- Image carousel and feature highlights
- Links to GitHub repos and live demos
Photo collections organized with custom pagination and masonry layouts, utilizing precomputed image metadata to avoid layout shifts and enhance UX.
- Masonry Layout: Dynamic, visually appealing arrangement without layout jumps.
- Pagination: Intuitive navigation through collections, optimized for user exploration.
- Performance-Oriented: Precomputed dimensions and optimized images for fast loading and smooth interactions.
Markdown-based blogging system:
- Markdown front-matter for metadata
- Syntax-highlighted code blocks
- Internal navigation for seamless reading experience
This site was planned, developed, tested, and launched over the course of three weeks β from initial sketches to full deployment.
β Paper Sketching & Planning
Defined core features, drafted UI design, and selected libraries/tools.
β Initial Development
Set up project structure, page routing, and global configuration.
β Content Architecture
Built data-driven systems for elements like projects, images, and blog posts.
β Mobile-first Styling
Implemented responsive layouts and components optimized for mobile devices.
β Desktop & Tablet Layouts
Extended layout and style adjustments for larger viewports.
β Animations & UI Effects
Integrated Framer Motion and custom hooks for enhanced interactivity.
β Performance Auditing
Ran Lighthouse reports, debugged issues, and improved accessibility and SEO.
β Image Optimization Workflow
Built scripts for automated image renaming, resizing, and metadata generation.
β Production Testing
Validated build output, handled edge cases, and verified all content rendering.
β Custom Domain & First Deployment
Configured DNS and deployed the first live version via GitHub Pages.
β Migration to Vercel
Switched deployment to Vercel for faster builds and built-in analytics.
β Ongoing Monitoring
Live site analytics, performance insights, and iteration based on real-world usage.
π¬ βWhat started on paper became a digital canvas β a clean, responsive space that reflects how I think and build.β
Licensed under the MIT License.