这是一套完整的婚礼电子邀请函系统,包含前台展示页面和后台管理系统。基于 Next.js 构建,支持全屏翻页浏览、背景音乐、视频播放、祝福留言、RSVP 回复等功能。
开发者: 李连宸
开源地址: https://github.com/lilianchen1991/wedding-invitation
更新日志: https://your-domain.com/changelog
前台地址: https://your-domain.com
后台管理: https://your-domain.com/admin
| 技术 | 用途 |
|---|---|
| Next.js 16 | 全栈框架(SSR + API Routes) |
| React 19 | 前端 UI |
| Tailwind CSS 4 | 样式系统 |
| SQLite (better-sqlite3) | 数据库 |
| JWT + Cookie | 后台认证 |
| Sharp | 图片处理 |
| PM2 + Nginx | 生产环境部署 |
邀请函采用全屏翻页(Scroll Snap)设计,从上到下依次为:
| 模块 | 说明 |
|---|---|
| 首页 Hero | 全屏背景视频 + 新人姓名 + 翻页时钟倒计时 |
| 婚礼邀约 | 婚礼邀约视频(支持封面图) |
| 我们的故事 | 时间线展示恋爱经历(出生、相识、订婚等节点,含照片) |
| 甜蜜瞬间 | 横向瀑布流自动滚动照片墙,点击可放大左右切换 |
| 婚礼照片 | 正式婚纱照展示 |
| 婚礼详情 | 仪式时间(含农历)、地点、交通指引(嵌入 Leaflet 地图 + 三平台导航) |
| 天气预报 | 婚礼地点未来 7 天天气 + 穿衣建议 |
| 附近景点 | 自定义推荐景点列表,点击跳转地图或旅游平台 |
| 敬请回复 (RSVP) | 宾客填写出席信息(姓名、亲友类型、人数、电话)+ 一键拨号联系新人 |
| 送上祝福 | 祝福留言 + 中国地图点亮可视化 + 发红包功能 |
| 关于 Logo | Logo 介绍 |
| 页脚 | 更新日志入口 |
访问 /admin,输入管理密码登录。首次部署默认密码为 admin,登录后请立即修改。
后台侧边栏分为四大类:
| 页面 | 功能 |
|---|---|
| 仪表盘 | 网站访问统计(PV/UV、趋势图、城市排行、设备分布、近期访问记录) |
| 页面 | 功能 |
|---|---|
| 婚礼信息 | 新人姓名(含英文名)、联系电话、婚礼日期、仪式地点、交通指引等基础信息 |
| 父母邀请函 | 配置新郎方/新娘方/回门宴邀请函(正文、称呼、署名、照片、BGM、日期地点) |
| Logo 配置 | 上传/更换导航栏 Logo |
| 背景音乐 | 上传音乐文件,切换当前播放曲目 |
| 首页视频 | 上传/更换首页全屏背景视频 |
| 故事时间轴 | 管理「我们的故事」中各节点文案和照片 |
| 婚礼邀约 | 上传婚礼邀约视频 + 封面图配置 |
| 甜蜜瞬间 | 上传/排序/删除照片,支持拖拽排序 |
| 婚礼照片 | 上传/管理正式婚纱照 |
| 收款码配置 | 上传微信收款码 + 配置弹窗文案(需 ICP 备案后方可长按识别) |
| 附近景点 | 自定义婚礼地点附近景点推荐(名称、地址、链接) |
| 分享封面 | 配置微信分享缩略图和文案 |
| 页面 | 功能 |
|---|---|
| RSVP | 查看/删除宾客回复(姓名、亲友类型、人数),支持 CSV 导出 |
| 祝福留言 | 查看/管理访客祝福留言 |
| 地图点亮 | 查看所有点亮城市记录,按类型筛选,支持删除 |
| 页面 | 功能 |
|---|---|
| 系统配置 | 高德地图 Key、和风天气 Key / API Host、穿衣建议 |
1. 进入后台 → 页面配置 → 婚礼信息
2. 修改新人姓名、婚礼日期、仪式地点等
3. 点击「保存」
婚礼日期修改后,前台首页倒计时会自动更新。
1. 进入后台 → 甜蜜瞬间(或婚礼照片)
2. 点击「上传照片」选择图片文件
3. 拖拽调整显示顺序
4. 不需要的照片点击删除
1. 进入后台 → 背景音乐
2. 上传新的 MP3 文件
3. 点击「设为当前」切换播放曲目
1. 进入后台 → RSVP
2. 可查看所有宾客的回复信息(含亲友类型:新郎亲友/新娘亲友)
3. 点击「导出 CSV」可下载完整数据
1. 进入后台 → 系统配置
2. 填入和风天气 Key(在 [和风天气开发平台](https://dev.qweather.com/) 申请)
3. 填入和风天气 API Host(登录控制台 → 项目管理 → 查看项目 → API Host 栏)
4. 可选:填写穿衣建议文字,会展示在天气卡片中
5. 确保后台「婚礼信息」中已配置婚礼地点经纬度
1. 进入后台 → 附近景点
2. 点击「+ 添加景点」
3. 填写景点名称(必填)、地址或描述(选填)、链接(选填,可粘贴地图导航/飞猪/去哪儿等链接)
4. 点击「保存」,前台婚礼详情页会自动展示
用于设置微信「发送给朋友」和「分享到朋友圈」时显示的缩略图和文案。
操作步骤:
1. 进入后台 → 分享封面
2. 上传一张封面图片(系统自动压缩为 600×600 正方形 JPEG)
3. 填写分享标题和描述(可选,留空使用默认模板)
4. 保存
生效原理:
系统通过 HTML 的 Open Graph 标签(og:image、og:title、og:description)实现,微信分享链接时会自动抓取页面的 OG 标签作为分享卡片内容。
前置条件:
常见问题:
| 现象 | 原因 & 解决 |
|---|---|
| 更换封面后微信仍显示旧图 | 微信有缓存,等几分钟或用 `?v=2` 参数刷新 |
| 发送给朋友有封面,朋友圈没有 | 朋友圈缓存更久,换一个链接参数(如 `?t=1`)或等待 |
| 想用 JS-SDK 精确控制分享 | 需要「认证服务号」(订阅号/未认证服务号没有权限),OG 标签方案已足够 |
| 封面图太大导致不显示 | 系统上传时已自动压缩,无需手动处理 |
父母邀请函是独立于主邀请函的简版页面,供父母分享给各自亲友。支持新郎方、新娘方、回门宴三种独立配置。
操作步骤:
1. 进入后台 → 页面配置 → 父母邀请函
2. 切换 Tab 选择「新郎方」「新娘方」或「回门宴」
3. 开启启用开关
4. 配置内容:新人照片、背景音乐(BGM)、正文措辞、称呼、邀请语、父母姓名、署名后缀
5. 回门宴额外配置:独立的日期时间、宴会厅、地址
6. 保存后点击「预览」查看效果
分享链接:
特色功能:
1. 进入后台 → 收款码配置
2. 上传微信收款码图片
3. 可选:配置弹窗提示文案(如"感谢您的心意 🧧")
4. 上传后,前台祝福区会自动显示「发个红包」按钮
1. 点击侧边栏底部「修改密码」
2. 输入当前密码和新密码
3. 确认修改
项目提供了 deploy.sh 部署脚本,使用前需修改脚本顶部的服务器地址和 SSH 密钥路径:
SERVER="root@your-server-ip"
KEY="~/.ssh/your-key.pem"然后执行:
bash deploy.sh脚本自动完成:
1. 本地构建 (npm run build)
2. 上传构建产物到服务器(rsync)
3. 确保服务器端原生模块正常(better-sqlite3, sharp)
4. 重启 PM2 服务
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建
npm run build
# 启动生产模式
npm start开发服务器默认运行在 http://localhost:3000
所有数据存储在 SQLite 数据库中(data.db),包括:
上传的文件存储在 public/uploads/ 下:
访客访问网站时,系统通过 IP 自动定位城市并在中国地图上点亮对应位置。地图采用四色光点系统:
采用悬浮黑胶唱片样式播放器,首次进入显示播放提示,支持静音/取消静音切换。
系统已针对 iOS 微信浏览器做了专项优化:
分享封面采用 Open Graph 标签方案(无需 JS-SDK 权限):
技术说明:
Q: 忘记管理密码怎么办?
登录服务器,删除数据库中 `settings` 表里 `key = 'admin_password'` 的记录,系统会恢复默认密码 `admin`。
Q: 微信里长按二维码没有"识别"选项?
需要完成网站 ICP 备案。微信会对未备案域名禁用长按识别二维码功能。
Q: 如何备份数据?
登录服务器,复制部署目录下的 `data.db` 文件和 `public/uploads/` 目录即可完整备份。
Q: 页面打开很慢?
检查首页视频文件大小,建议使用 ffmpeg 压缩到 1.5Mbps 以下。图片上传后系统会自动压缩。
Q: 如何修改页面的视觉风格?
修改 `src/app/globals.css` 中的 CSS 变量(颜色、字体等),需要重新部署。
Q: 如何适配自己的婚礼信息?
部署后进入后台「婚礼信息」页面,修改新人姓名、日期、地点等即可,无需改代码。