DailyWallpaperHub
多源壁纸聚合平台 · 自动归档 Bing + Unsplash 精选壁纸 · AI 视觉故事生成 · 企业微信推送 · GitHub Pages 在线画廊
基于 Vue 3 + Vite 7 的高清壁纸展示网站。支持 4K 预览下载、GSAP 动画、响应式设计、暗黑主题。
git clone https://github.com/IT-NuanxinPro/wallpaper-gallery.gitIT-NuanxinPro/wallpaper-gallery一个专注精选 4K 高清壁纸质感与浏览体验的壁纸项目,覆盖电脑、手机、头像、动态壁纸与每日 Bing 壁纸场景
🌐 访问体验站 | 项目文档在线解析 | 🏗️ 架构在线文档 | 🤝 鸣谢社区 LINUX DO | ✨ 功能亮点 | 🛠️ 技术栈实现
不追求内容堆砌,也不与鱼龙混杂的壁纸站混在一起。
更看重精选、清晰度、系列划分与完整浏览体验。
适合直接使用,也适合作为个人内容站、壁纸站或前端展示项目继续扩展。
GitHub、Google、Linux.do OAuth 登录收藏夹 与 我的喜欢 两个独立入口
img.061129.xyz,避免大文件依赖 GitHub CDNvideo 系列category=desktop / mobile / social-cover 区分具体子系列已喜欢 / 已收藏 汇总/login、/signup、/auth/callback、/account、/library| 类别 | 技术 |
|---|---|
| 框架 | Vue 3.5 (Composition API + script setup) |
| 构建工具 | Vite 7 |
| UI 组件 | Element Plus (PC端 + Bing 日期选择) + Vant (移动端) |
| 动画 | GSAP + Flip 插件 |
| 图片裁剪 | Cropper.js |
| 样式 | Sass + postcss-pxtorem (移动端适配) |
| 路由 | Vue Router 4 |
| 状态管理 | Pinia |
| 数据统计 | Supabase (PostgreSQL) |
| 部署 | Cloudflare Pages (全球分发) |
| CI/CD | GitHub Actions (高性能构建) |
| CDN 加速 | Cloudflare + jsDelivr |
| 统计分析 | Cloudflare Web Analytics + Umami |
cdnTag 版本标签cdnTag 稳定不变# 1. 克隆项目 git clone https://github.com/your-username/wallpaper-gallery.git cd wallpaper-gallery # 2. 安装依赖 pnpm install # 3. 同步数据(从线上 CDN) pnpm sync # 4. 启动开发服务器 pnpm dev
# 开发 pnpm dev # 启动开发服务器 pnpm build # 构建生产版本 pnpm build:seo # 构建并生成预渲染 SEO 页面 pnpm preview # 预览构建结果 # 数据同步 pnpm sync # 从线上 CDN 同步最新数据 pnpm export:hot-tags # 导出热门标签数据 # 代码质量 pnpm lint # 检查代码规范 pnpm lint:fix # 自动修复代码问题 pnpm test # 运行测试
所有壁纸数据统一从线上 CDN / 图床仓库导出结果拉取:
https://wallpaper.061129.xyz/datavideo/desktop(电脑动态壁纸)、video/mobile(手机动态壁纸)、video/social-cover(朋友圈封面)public/data 目录,支持离线开发Fork 本项目后,无需任何配置即可使用:
Fork 仓库
# 在 GitHub 上点击 Fork 按钮
克隆到本地
git clone https://github.com/your-username/wallpaper-gallery.git cd wallpaper-gallery
安装依赖并同步数据
pnpm install pnpm sync
启动开发
pnpm dev
部署到 Cloudflare Pages
main 分支会自动触发部署如果需要启用账号登录、个人中心、收藏夹、我的喜欢,以及浏览量 / 下载量统计,需要配置 Supabase:
创建 Supabase 项目
配置 GitHub Secrets
VITE_SUPABASE_URL:你的 Supabase Project URLVITE_SUPABASE_ANON_KEY:你的 Supabase anon public keySUPABASE_SERVICE_ROLE_KEY:用于同步壁纸资源与后台任务,请勿暴露到前端创建数据库表
本地开发环境变量
.env.exampleVITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYpnpm sync:assets 时额外需要:
SUPABASE_SERVICE_ROLE_KEY执行前确认数据源是最新的
pnpm sync:assets 会把当前 public/data 解析出的全部资产全量 upsert 到远端 wallpaper_assetsseries='video',再通过 category 标记 desktop / mobile / social-coverpublic/data 会覆盖远端元数据pnpm sync 或使用 CI 从最新 nuanXinProPic/data 拷贝数据pnpm sync:assets注意:这些能力都是渐进增强,不配置也不影响网站基础浏览与下载。
详细配置请参阅 Fork 部署指南,包含:
wallpaper-gallery/
├── .github/workflows/ # GitHub Actions 配置
│ ├── deploy.yml # 自动构建部署
│ └── export-stats.yml # 统计数据导出
├── public/
│ └── data/ # 壁纸数据 JSON(从 CDN 同步)
│ ├── desktop/ # 电脑壁纸分类数据
│ ├── mobile/ # 手机壁纸分类数据
│ ├── avatar/ # 头像分类数据
│ ├── video/ # 动态壁纸分类数据
│ │ ├── desktop.json # 电脑动态壁纸
│ │ ├── mobile.json # 手机动态壁纸
│ │ └── social-cover.json # 朋友圈封面
│ ├── bing/ # 每日 Bing 壁纸数据
│ └── stats/ # 热门统计数据
├── scripts/
│ ├── config/ # 脚本配置
│ ├── sync-data.js # 数据同步脚本(从 CDN 拉取)
│ ├── export-stats.js # 统计数据导出脚本
│ ├── export-hot-tags.js # 热门标签导出脚本
│ ├── supabase-init.sql # 新项目一键初始化 SQL
│ ├── supabase-migration.sql # 统计结构迁移脚本
│ └── supabase-retire-legacy.sql # 旧结构下线脚本
├── docs/
│ ├── Fork部署指南.md # Fork 用户部署指南
│ ├── Supabase统计系统.md # Supabase 统计架构说明
│ └── ...
├── WORKFLOW.md # 开发工作流程说明
├── src/
│ ├── assets/styles/ # 全局样式(Sass)
│ ├── components/
│ │ ├── avatar/ # 头像相关组件
│ │ │ ├── DiyAvatarBanner.vue # DIY 头像横幅
│ │ │ └── AvatarMakerModal/ # 头像制作弹窗
│ │ │ ├── index.vue # 主弹窗
│ │ │ ├── composables/ # 弹窗业务逻辑(useAvatarMakerWorkflow)
│ │ │ ├── panel/ # 控制面板
│ │ │ ├── preview/ # iPhone 预览
│ │ │ ├── shared/ # 裁剪区域等共享组件
│ │ │ └── source/ # 图片来源面板
│ │ ├── common/
│ │ │ ├── feedback/ # 反馈组件(Loading、通知、横幅)
│ │ │ ├── form/ # 通用表单控件
│ │ │ ├── navigation/ # 导航组件(返回顶部、分页)
│ │ │ └── ui/ # 基础 UI 组件(WallpaperSeriesIcon 等)
│ │ ├── login/ # 登录体验与认证场景
│ │ │ ├── AuthExperience.vue # 登录 / 注册统一体验页
│ │ │ └── LoginCharacterScene.vue # 登录动效场景
│ │ ├── home/ # 首页组件
│ │ │ ├── HomeModalHost.vue # 弹窗宿主
│ │ │ ├── MobileSeriesNotice.vue # 移动端系列提示
│ │ │ └── HotTagsPanel.vue # 热门标签面板
│ │ ├── layout/
│ │ │ ├── AppHeader.vue # 顶栏主组件
│ │ │ └── header/
│ │ │ ├── mobile/ # 移动端抽屉、搜索弹窗
│ │ │ └── theme/ # 主题切换器
│ │ ├── search/ # 搜索模块
│ │ │ ├── index.vue # 搜索栏主组件
│ │ │ ├── composables/ # useSearchSuggestions
│ │ │ └── shared/ # 搜索建议面板
│ │ └── wallpaper/ # 壁纸相关组件
│ │ ├── card/ # 壁纸卡片(CardInfo、CardMedia)
│ │ ├── crop/ # 智能裁剪(7 个子组件)
│ │ ├── filter/ # 筛选系统
│ │ │ ├── index.vue # 筛选主组件
│ │ │ ├── desktop/ # 桌面端筛选控件
│ │ │ ├── mobile/ # 移动端筛选栏与弹窗
│ │ │ ├── fields/ # 日期选择器、分类下拉框
│ │ │ └── shared/ # FilterSummary、ViewModeToggle
│ │ ├── PortraitWallpaperModal/ # 竖屏壁纸弹窗
│ │ │ ├── desktop/ # 桌面端弹窗
│ │ │ ├── mobile/ # 移动端弹窗
│ │ │ └── shared/ # 共享组件(PhoneFrame、ModalInfo 等)
│ │ ├── WallpaperGrid/ # 壁纸网格
│ │ │ ├── index.vue # 网格主组件
│ │ │ ├── composables/ # 动画、分页、触摸模式
│ │ │ └── shared/ # 空状态、加载状态
│ │ └── WallpaperModal/ # 横屏壁纸弹窗
│ │ ├── desktop/ # 桌面端弹窗
│ │ └── shared/ # BingWallpaperInfo
│ ├── composables/ # 组合式函数
│ │ ├── header/ # useHeaderNavSlider
│ │ ├── home/ # useHomeDataLoader、useHomeSeriesSync、useWallpaperNavigator
│ │ ├── useInteraction.js # 壁纸喜欢 / 收藏交互封装
│ │ ├── useDevice.js # 设备检测
│ │ ├── useTheme.js # 主题管理
│ │ ├── useViewMode.js # 视图模式
│ │ ├── useScrollLock.js # 滚动锁定
│ │ └── ...
│ ├── services/ # 服务层
│ │ ├── interactionService.js # 喜欢 / 收藏 / Library 数据服务
│ │ ├── userActivityService.js # 用户行为相关服务
│ │ └── wallpaper/ # 壁纸数据获取与解码
│ ├── stores/ # Pinia 状态管理
│ │ ├── auth.js # 用户认证与资料状态
│ │ ├── interaction.js # 喜欢 / 收藏 / 统计状态
│ │ └── ...
│ ├── router/ # Vue Router 路由配置
│ ├── views/ # 页面视图
│ │ ├── Home.vue # 首页
│ │ ├── About.vue # 关于页
│ │ ├── Login.vue # 登录页
│ │ ├── Signup.vue # 注册页
│ │ ├── AuthCallback.vue # 认证回调页
│ │ ├── Account.vue # 账号中心
│ │ ├── Library.vue # 收藏夹 / 我的喜欢
│ │ └── NotFound.vue # 404 页
│ ├── workers/ # Web Worker
│ └── utils/ # 工具函数(按领域分类)
│ ├── auth/ # 认证与身份工具
│ ├── avatar/ # 头像制作工具
│ ├── cache/ # LRU 缓存
│ ├── common/ # 通用工具(analytics、codec、format、sorting)
│ ├── config/ # 常量配置
│ ├── filter/ # 筛选默认值
│ ├── integrations/ # 第三方集成(Supabase)
│ ├── platform/ # 平台适配(flexible)
│ └── wallpaper/ # 壁纸相关(errors、transformers)
└── index.html
每张壁纸的 JSON 数据包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
string | 唯一标识符 |
filename |
string | 文件名 |
category |
string | 分类名称 |
subcategory |
string? | 二级分类(可选) |
path |
string | 原图相对路径 |
thumbnailPath |
string | 缩略图相对路径 |
previewPath |
string? | 预览图相对路径(可选) |
size |
number | 文件大小(字节) |
format |
string | 图片格式(JPG/PNG) |
createdAt |
string | 首次添加时间(ISO 8601) |
cdnTag |
string? | CDN 版本标签(用于精准缓存控制) |
resolution |
object? | 分辨率信息(可选) |
tags |
string[] | 搜索标签 |
热门模块数据位于 public/data/stats/hot-tags-*.json,按系列拆分:
| 字段 | 类型 | 说明 |
|---|---|---|
tag |
string | 标签文本 |
score |
number | 综合热度分数 |
views |
number | 浏览量 |
downloads |
number | 下载量 |
wallpaperCount |
number | 关联壁纸数量 |
series |
string[] | 标签所属系列 |
topWallpapers |
string[] | 热门预览壁纸文件名列表 |
说明:
pnpm export:hot-tags 重新导出。| 系列 | 路由 | 设备可见性 | 宽高比 | 数据来源 |
|---|---|---|---|---|
| 电脑壁纸 | /desktop |
PC 端 | 16:10 | 自有图床 |
| 动态壁纸 | /video |
PC / 平板优先 | 16:9 / 9:16 | 图床导出 + R2 资源 |
| 手机壁纸 | /mobile |
移动端 | 9:16 | 自有图床 |
| 头像 | /avatar |
全设备 | 1:1 | 自有图床 |
| 每日 Bing 壁纸 | /bing |
PC / 平板优先 | 16:9 | Bing CDN |
如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕
本项目完全开源免费,所有壁纸资源均可自由使用。维护开源项目需要投入大量时间和精力,你的支持是我持续更新的动力!
感谢每一位支持者 ❤️
MIT
more like this
多源壁纸聚合平台 · 自动归档 Bing + Unsplash 精选壁纸 · AI 视觉故事生成 · 企业微信推送 · GitHub Pages 在线画廊
Enable real-time SSH debugging of GitHub Actions using upterm, providing direct access to the runner system for enhance…
search projects, people, and tags