使用 Next.js 14、TypeScript、Tailwind CSS 和 MySQL 构建的现代个人博客。
- 现代技术栈:Next.js 14(App Router)、TypeScript、Tailwind CSS
- 数据库:MySQL + Prisma ORM
- UI 组件:shadcn/ui 组件库
- 暗色模式:支持跟随系统主题切换
- Markdown 支持:使用 Markdown 撰写文章,支持 GitHub Flavored Markdown
- 分类与标签:用分类和标签组织文章
- 全文搜索:按标题、内容或摘要搜索文章
- 评论系统:访客可留言评论
- 管理后台:管理文章、分类和标签
- SEO 优化:站点地图、robots.txt、Open Graph、Twitter Card
- Node.js 18+
- MySQL 数据库
npm install复制 .env.example 为 .env 并填入实际配置:
cp .env.example .env更新 MySQL 连接字符串 DATABASE_URL:
DATABASE_URL="mysql://user:password@localhost:3306/blog"
生成 Prisma 客户端并将表结构同步到数据库:
npm run db:generate
npm run db:pushnpm run db:seednpm run dev在浏览器打开 http://localhost:3000 查看博客。
| 命令 | 说明 |
|---|---|
npm run dev |
启动开发服务器 |
npm run build |
构建生产版本 |
npm run start |
启动生产服务器 |
npm run lint |
运行 ESLint |
npm run db:generate |
生成 Prisma 客户端 |
npm run db:push |
将表结构推送到数据库 |
npm run db:migrate |
创建并执行迁移 |
npm run db:studio |
打开 Prisma Studio |
npm run db:seed |
填充示例数据 |
blog/
├── prisma/
│ ├── schema.prisma # 数据库模型
│ └── seed.ts # 种子脚本
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── admin/ # 管理后台
│ │ ├── api/ # API 路由
│ │ ├── categories/ # 分类页面
│ │ ├── posts/ # 文章页面
│ │ ├── search/ # 搜索页面
│ │ └── tags/ # 标签页面
│ ├── components/ # React 组件
│ ├── lib/ # 工具函数
│ └── types/ # TypeScript 类型
└── public/ # 静态资源
访问 /admin 可进行以下操作(需先到 /login 登录):
- 创建、编辑、删除文章
- 管理分类
- 管理标签
在 src/app/layout.tsx 中修改站点元数据:
export const metadata: Metadata = {
title: {
default: "你的博客名称",
template: "%s | 你的博客名称",
},
description: "博客描述",
// ...
};| 变量 | 说明 |
|---|---|
DATABASE_URL |
MySQL 连接字符串 |
NEXT_PUBLIC_SITE_URL |
站点公网地址(用于 sitemap) |
ADMIN_PASSWORD |
管理后台登录密码 |
npm run buildnpm run start推荐使用 Vercel 部署:
- 将代码推送到 Git 仓库
- 在 Vercel 导入项目
- 配置环境变量
- 部署
MIT License