MIT License

项目介绍

itsEricWu/ericwu.me 是一个托管在 GitHub 上的开源项目,主要使用 TypeScript 编写,采用 MIT License 许可证,目前获得 373 个 Star、63 次 Fork。

仓库全名
itsEricWu/ericwu.me
开源许可证
MIT License
Star 数
373
Fork 数
63

README 摘要

ericwu.me The personal site of Eric Wu, an SDE II at AWS building agentic systems and generative UI. Live at ericwu.me. It's a bento grid of liquid-glass cards, built from scratch with Next.js 16, React 19 and Tailwind CSS v4. There's no UI kit: the cards, the glass material and the motion are all hand-made. Highlights The glass period. The period in "Hey, I'm Eric." is a bead of liquid glass. Pull it and it swells…

完整内容见 GitHub 原始 README 或本页 。

常见问题

ericwu.me 用什么语言开发?

主要使用 TypeScript 编写,采用 MIT License 许可证,目前有 373 个 Star。

ericwu.me 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 ericwu.me 的源码?

可以直接克隆仓库:git clone https://github.com/itsEricWu/ericwu.me.git,默认分支为 main;安装与运行步骤见仓库 README。

ericwu.me 最近还在维护吗?

仓库最近一次更新为 10月8日,当前没有未关闭的 Issue;Star 数为 373,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Personal website built with Next.js 16, React 19, HeroUI, and Tailwind CSS v4. Features a Notion-powered blog and Bento-inspired responsive design.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
501
价值分
242
活跃状态
活跃

语言占比

CSS
JavaScript
Python
TypeScript

README

ericwu.me

The personal site of Eric Wu, an SDE II at AWS building agentic systems and generative UI. Live at ericwu.me.

The ericwu.me home page: liquid-glass bento cards with the hero, FinOps Agent, Amazon Q artifacts, the Seattle sky, a globe and SecondSelf

It’s a bento grid of liquid-glass cards, built from scratch with Next.js 16, React 19 and Tailwind CSS v4. There’s no UI kit: the cards, the glass material and the motion are all hand-made.

Highlights

  • The glass period. The period in “Hey, I’m Eric.” is a bead of liquid glass. Pull it and it swells into a lens that magnifies the card and stretches with speed. Let go and it springs back into a period. Chromium bends light through an SVG displacement map, and Safari and iOS get a magnified copy of the card.
  • A grid you can rearrange. Drag a card onto another to swap them (on touch, press and hold first). The All, About and Work views reflow the grid with spring-driven FLIP animations.
  • Cards that do something.
    • Seattle’s sky right now, with the sun’s real position and the moon’s phase.
    • A WebGL globe tracing Purdue → UCLA → Seattle.
    • A toolbox sphere you can spin and a photo deck you can fling.
    • iOS-style FinOps Agent notifications and Amazon Q artifacts you can click through.
    • A 3D MINI that loads only when asked for.
    • An emoji card that picks an emoji for how you feel.
  • A blog on Notion. Posts are written in Notion, rendered with react-notion-x, prerendered and refreshed hourly.
  • English and Chinese. Every page has a Chinese twin under /zh, and the nav, the footer and ⌘K switch between them. Chinese headings are set in Noto Serif SC beside Fraunces, and a post carries its Chinese version as a sub-page in Notion.
  • ⌘K everywhere. A command palette with fuzzy search over views, projects, links and a few tricks.
  • Light and dark. The theme switches with a circular reveal. Safari switches instantly, because it paints view-transition snapshots without glass.
  • Built to be fast.
    • Pages are prerendered and the CSS is inlined.
    • The web fonts load after first paint, and Apple devices use SF Pro.
    • The globe and three.js load only when they’re needed.
    • A tab left open picks up a new deploy when you come back to it.
  • Mount Rainier behind it all. The contour lines come from AWS Terrain Tiles (USGS 3DEP), generated by scripts/gen-topo.py.

The home page on a phone, in light and dark mode

The glass period pulled over the bio, magnifying the words beneath it, in light and dark mode

Tech stack

Part Built with
Framework Next.js 16 (App Router), React 19, TypeScript
Styling Tailwind CSS v4, container queries, hand-built liquid glass
Type Fraunces for display, Figtree for text (SF Pro on Apple devices), Noto Serif SC for Chinese headings
Blog Notion through notion-client and react-notion-x
Graphics cobe for the globe, three.js with React Three Fiber and drei for the MINI
Data Firebase Storage for photos, OpenAI for the emoji card
Search Fuse.js
Hosting Vercel, with Vercel Analytics

Project structure

app/[lang]/       Pages in each language (English at /, Chinese at /zh): home, /blog, /blog/[blogId]
app/              The emoji and version APIs, OG image, sitemap
messages/         Every string on the site, in English and Chinese
components/
  bento/          The grid: layout per view, drag to swap, FLIP view changes
  cards/          Every card on the home page
  glass/          Liquid-glass material, refraction maps, the cursor lens
  nav/            Floating nav and the ⌘K command palette
  backdrop/       The Mount Rainier contour background
  blog/           Blog list and Notion page renderer
config/           Site metadata, links, projects and fonts
lib/              Layouts, Notion and Firebase data, motion springs, theme transition
scripts/          Generators for the contour background and the Rainier skyline
public/           Static files: contour data, the MINI model, emoji

Getting started

You need Node.js 24.

git clone https://github.com/itsEricWu/ericwu.me.git
cd ericwu.me
npm install
npm run dev

Then open localhost:3000.

Environment variables

Copy .env.local.example to .env.local. Both variables are optional.

Variable What it’s for
OPENAI_API_KEY The emoji card (/api/emoji). Without it, only that card shows an error.
NEXT_PUBLIC_FIREBASE_API_KEY The Firebase project that stores the photos, the avatar and the project images (firebase/firebase.ts).

Scripts

Command What it does
npm run dev Dev server with Turbopack
npm run build, npm start Production build and server
npm run lint, npm run typecheck, npm run format ESLint, TypeScript, Prettier
npm run topo Regenerate the Mount Rainier contours

Make it yours

  • Who you are: edit your name, links and projects in config/site.ts, and the bio and every other string in messages/en.ts and messages/zh.ts.
  • Your blog: point notionBlogConfig.blogParentId at your own public Notion page.
  • Your images: point firebase/firebase.ts at your own Firebase project and upload your photos and avatar (the paths are in lib/data.ts).
  • Your cards: cards live in components/cards. app/[lang]/page.tsx lists them with their size at each breakpoint and the views they belong to.
  • Chinese versions of posts: inside a post in Notion, add a sub-page titled with the post’s Chinese title and put the translation in it. An empty sub-page translates only the title. A post without one shows the English original on /zh, under a note.

Deployment

The site runs on Vercel, and every push to main deploys to ericwu.me. Any host that runs Next.js 16 on Node.js 24 works too.

Star history

Star History Chart

License

MIT

评论

暂无评论