{"repo":"xywml/PaperGrid","free":true,"listed":false,"github":"https://github.com/xywml/PaperGrid","clone":"git clone https://github.com/xywml/PaperGrid.git","description":"执笔为剑 - 一款基于NEXT.js的轻量化博客","language":"TypeScript","stars":198,"topics":["blog","nextjs","notes"],"license":"MIT","category":"productivity","readme_excerpt":"PaperGrid - 执笔为剑 一个基于 Next.js App Router 的轻量化个人博客与后台管理系统。 内置认证、文章管理、评论与系统设置，支持中文/英文与深色模式。 主要特性 - Next.js App Router + React 19 - Prisma ORM - NextAuth 认证 - 管理后台（文章、标签、分类、评论、用户、系统设置、文件管理） - 文件管理（本地图片上传、预览、删除、URL 回填） - MDX 内容支持、代码高亮、数学公式与图表 - 国际化与深色模式 - 内置多套前台主题，可在 管理后台 - 样式 一键切换（纸格笔记 / 终端机能 / 清透视窗 / 像素账本） 快速开始 方式一：Docker（推荐） 1. 准备目录： 2. 创建 docker-compose.yml （内容如下，与当前镜像运行配置一致）： 3. 首次启动： 4. 更新到最新镜像： 默认管理员账号： - 邮箱： admin@example.com - 密码： admin123 首次登录请立即修改密码。 方式二：本地开发 1. 安装依赖： 安装完成后会自动执行数据库准备，见下方「数据库自动初始化」。 2. 启动开发服务器： 如需示例文章数据，执行 tsx prisma/seed-posts.ts 。 环境变量 复制 .env.example 到 .env 并按需修改： OAuth 回调填写（GitHub/Google）： - Homepage URL 填你的站点地址（例如 https://blog.miyako.space ） - GitHub Authorization callback URL 固定为： {站点地址}/api/auth/callback/github - Google Authorized redirect URI 固定为： {站点地址}/api/auth/callback/google - 本地开发示例： - GitHub 回调： http://localhost:6066/api/auth/callback/github - Google 回调： http://localhost:6066/api/auth/callback/google - NEXTAUTH URL 必须与 OAuth 平台里配置的站点地址一致（协议、域名、端口都要一致） SMTP 邮件通知说明： - 需在后台开启 邮件通知开启 - 实际发件地址固定使用 SMTP USER - email.from 仅作为邮件显示名 - 收件人优先读取 EMAIL TO ，未配置时自动发送到管理员账号邮箱 - 可开启“回复评论邮件通知”，系统会给被回复人发提醒 - 回复通知支持退订链接（ /api/comments/unsubscribe ） 图片上传与文件管理 后台新增“文件管理”子目录，支持： - 上传图片（仅 jpg/jpeg/png/webp/avif ） - 预览、复制 URL、删除文件 - 删除时自动检查引用（文章封面、作品图、用户头像、站点设置） 默认限制： - 单文件上限： 10MB - 压缩策略默认： 平衡 - 游客权限：仅可通过图片 URL 查看（无上传/删除权限） 图片访问路径： - GET /api/files/:id 后台文章编辑器 后台文章编辑页已升级为 Markdown 所见即所得编辑器： - 实时预览（桌面端默认编辑+预览，移动端支持编辑/预览切换） - 支持截图粘贴、图片拖拽、工具栏上传 - 上传后自动回填图片 URL（ ） - ","default_branch":null,"files":null,"tree":[],"storefront":"/r/xywml","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/xywml/PaperGrid/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}