Personal website β yiming1234.cn
Next.js 16 Β· React 19 Β· TypeScript Β· TailwindCSS v4 Β· tRPC Β· Prisma Β· PostgreSQL Β· Better Auth
- Home β landing page with animated background
- Blog β Markdown fetched from Alibaba Cloud OSS, compiled server-side with Shiki syntax highlighting and TOC generation
- Chat β AI assistant powered by OpenAI via Vercel AI SDK
- Moments β personal feed with Mapbox globe visualization
- Terminal β interactive slash-command terminal (
/helpto explore) - Am I OK β real-time activity status pushed from macOS every 30s
- CV β resume page with work, projects, and hackathons
- Story β personal story page with interactive map
- llms.txt β LLM-friendly site summary at
/llms.txt
pnpm install
cp .env.example .env # fill in required values
pnpm db:push
pnpm devSee .env.example for all required variables. Key ones:
| Variable | Purpose |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
BETTER_AUTH_SECRET |
Auth secret key |
OPENAI_API_KEY |
AI chat |
NEXT_PUBLIC_MAPBOX_TOKEN |
Globe visualization |
AM_I_OK_SECRET |
Status push API token |
ALI_OSS_* |
Alibaba Cloud OSS for blog storage |
pnpm dev # dev server (Turbopack)
pnpm build # production build
pnpm lint # Biome lint
pnpm db:studio # Prisma Studioscripts/am-i-ok-agent.sh runs as a macOS LaunchAgent, POSTing current app activity every 30s:
# 1. Edit the plist: set script path, AM_I_OK_SECRET, BETTER_AUTH_URL
cp scripts/cn.yiming1234.am-i-ok.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/cn.yiming1234.am-i-ok.plistThe repo is a pnpm workspace. Shared UI components live in packages/ui:
packages/ui/src/
βββ components/ # CherryBlossom, HelloSignature
βββ terminal/ # Interactive terminal (logic + components)
βββ markdown/ # Blog compiler (Shiki, TOC, directives) + BlogContent