文档目的:描述当前站点的技术栈、架构、数据流、核心模块与运维方式,方便后续维护与扩展。
Mirage Site 是一个基于 Next.js App Router 的个人站点,提供主页、壁纸、文章、友链、留言等功能。项目重点在于:
docs/articles 加载 Markdown 文章app/globals.css)data/guestbook.json、docs/articles/*.md)app/api/*)关键目录与文件:
app/:App Router 页面、组件、API 端点app/api/:后端 API 路由app/lib/:文章加载和 Markdown 解析工具app/components/:可复用 UI 组件docs/articles/:文章 Markdown 文件(驱动文章页)data/guestbook.json:留言板持久化数据public/:静态资源与 public/assets/main.jsApp Router 页面:
/:主页(打字机效果 + 社交入口)/wallpaper:Bing 每日壁纸展示/docs:文章列表(读取 docs/articles)/docs/[slug]:文章详情页(渲染 Markdown)/friends:友链展示/guestbook:留言板(客户端渲染)数据来源:docs/articles/*.md
app/lib/docs.jsapp/lib/markdown.js行为:
.md 文件,按 mtime 排序# 作为标题客户端组件:app/guestbook/GuestbookClient.js
后端 API:app/api/guestbook/route.js
数据持久化:data/guestbook.json
接口功能:
GET /api/guestbook:分页返回留言(默认每页 8 条,最大 40)POST /api/guestbook:新增留言(限制字数与昵称长度)安全控制:
客户端组件:app/components/WeatherWidget.js
服务端 API:app/api/qweather/route.js
功能:
API 端点:
type=now:当前天气type=geo:地点搜索(限制范围中国)type=reverse:经纬度反查缓存策略:
页面:app/wallpaper/page.js
API:
/api/bing-wallpaper:返回当天壁纸元信息/api/bing-wallpaper-image:图片代理与防盗链特性:
*.bing.comapp/layout.jsapp/components/Nav.jsapp/components/PageTransition.jsapp/components/WallpaperRouteEffect.js全局 CSS 位于 app/globals.css,包含:
--glass-*)QWEATHER_KEY:和风天气 API Key(必填)npm install
npm run dev
默认地址:http://localhost:3000
npm run build
npm run start
docker build -t mirage-site .
docker run -p 3001:3000 \
-e QWEATHER_KEY=your_key \
-v $PWD/data:/app/data \
-v $PWD/docs:/app/docs \
mirage-site
或使用 docker-compose.yml:
docker-compose up -d --build
docs 渲染采用自定义 Markdown 解析器并先行转义,避免任意 HTML 注入/api/bing-wallpaper-image 强制限制域名,降低 SSRF 风险