起步
Day 01 - 10 · 定框架、搭骨架,让程序先完整跑起来
10 天
Day 1
选型与项目骨架
把项目定位成「一个能长期维护的导航站」,先把目录结构和请求链路跑通。
- 选定 ThinkPHP 8 + PHP 8.1,路由集中在 route/app.php,业务统一放在 app/controller。
- 确立「后台纯 HTML 视图 + PHP 接口」的前后端分离结构,静态资源统一放 public/static。
- 第一天就把安全层写进架构:登录态、接口守卫、登录限速,为后续加密传输留好位置。
ThinkPHP 8
PHP 8.1
MVC
Day 2
数据库设计
先想清楚数据怎么存,后面所有功能才不用反复改表。
- 设计站点、分类、标签、文章、公告、设置、管理员等核心表。
- 同一套 Schema 兼容 SQLite 与 MySQL,表前缀自动读取 .env。
- 所有表统一 create_time / update_time,方便排序、统计与审计。
SQLite
MySQL
表前缀
Day 3
安装向导
让程序可以脱离开发者环境,在任意服务器上安装。
- 环境检测:PHP 版本、扩展、目录可写权限逐项检查。
- 填写数据库信息后自动建表,并把配置写入项目根目录 .env。
- 生成默认管理员 admin / 123456,首次登录提醒立即修改。
/install
环境检测
.env
Day 4
后台登录与布局
后台是每天都要用的地方,先把骨架和登录态做稳。
- 使用服务端 Token 登录态,退出登录后立即失效。
- 登录失败次数限速,避免被暴力破解。
- 后台侧边栏与移动端抽屉布局一次搭好,后续页面直接复用。
Token
登录限速
Cookie
Day 5
分类与二级标签
导航站的骨架是分类,先让内容有地方放。
- 一级分类 + 二级标签树,图标同时支持 emoji 与 Bootstrap Icons。
- 支持排序、批量启停与站点数量统计。
- 前台左侧菜单按树形展示,子分类可展开收起。
分类
标签
排序
Day 6
站点管理
把「收录一个站点」这件事做到最省力。
- 站点的名称、URL、图标、封面、描述、标签、徽章等完整字段。
- 一键抓取图标与站点信息,支持批量上下架。
- 前台提供详情页与直达链接两种跳转模式。
CRUD
图标抓取
批量操作
Day 7
首页骨架
先把首页的信息层级和视觉节奏定下来。
- Hero 搜索区、分类快捷入口、精选卡片与推荐位一次排布完成。
- 右侧栏:站点数据、人气排行、最近收录、公告、赞助榜。
- 先用占位数据把布局跑通,再接真实查询,避免边改样式边查库。
Hero
精选
侧栏
Day 8
主题系统
让同一个站点有多种气质,但只需要维护一套样式。
- 六套预设主题,支持自定义主色与底色。
- 全部颜色走 CSS 变量,切换主题不刷新页面。
- 内联脚本提前还原主题,避免首屏闪白。
CSS 变量
localStorage
Day 9
三端响应式
手机访问占比很高,移动端不能是桌面端的缩小版。
- 桌面、平板、手机三套断点,分别调整栅格与间距。
- 手机端使用抽屉式侧栏与底部 Dock,主操作保持单手可达。
- 触控区域不小于 44px,避免误触。
响应式
抽屉
Dock
Day 10
公共函数层
把重复逻辑收敛,后面做插件和支付才不会越写越乱。
- common.php 统一封装设置读取、统计、排行与导航数据。
- 统一 JSON 返回结构 code / msg / data,前端只写一套请求逻辑。
- 设置项读取后做请求级缓存,减少重复查库。
common.php
设置缓存
导航核心
Day 11 - 20 · 把「找站点」的完整链路做顺
10 天
Day 11
站内搜索
搜索是导航站最高频的入口。
- 站内同时搜索站点与文章,结果按相关度与热度排序。
- 搜索框可切换 Bing / 百度 / Google 等外部引擎。
- 补充输入联想与空结果兜底,避免用户走进死胡同。
搜索
联想
多引擎
Day 12
站点详情页
详情页承担 SEO 与转化,不能只是简单跳转。
- /site/:slug 详情页,标题、关键词与描述按站点内容自动生成。
- 相关推荐按分类与标签匹配,提升停留时长。
- 访问计数与外部跳转分别统计,方便判断站点价值。
/site/:slug
SEO
相关推荐
Day 13
文章系统
导航站需要内容来沉淀搜索流量。
- 文章分类、列表、详情与 Markdown 编辑器。
- 封面图、摘要、阅读量、发布时间等基础字段一次补齐。
- 文章与站点互相导流:文章里可引用站点,站点页可挂相关文章。
文章
Markdown
封面
Day 14
人气排行
排行是用户发现好站点的第二条路径。
- 日 / 周 / 月 / 总榜四种周期。
- 定时聚合浏览量,避免每次请求都做全表统计。
- 榜单做缓存与空数据回落,冷启动也不出现空白。
日榜
周榜
月榜
Day 15
公告与单页
运营需要能随时发通知、挂说明页。
- 首页顶部滚动公告条,后台可一键关闭。
- 公告列表与详情页,支持时间排序。
- 单页管理支持自定义 HTML、访问密码与来源校验。
公告
单页
访问密码
Day 16
SEO 细节
把搜索引擎关心的细节逐项补齐。
- 每页独立 title / keywords / description。
- 语义化链接:/c/:slug、/site/:slug、/article/:id。
- 统一 404 页面与跳转逻辑,避免出现软 404。
meta
语义化链接
404
Day 17
导航与 Dock
让站长可以自由调整站点的导航结构。
- 顶部、底部导航支持二级菜单、图标与描述。
- 底部 Dock 支持站点 / 分类 / 网址标签 / 自定义链接四种入口。
- 后台可视化排序,保存后前台即时生效。
顶部导航
底部 Dock
Day 18
赞助墙
给愿意支持站点的人一个体面的展示位置。
- 雪花飘落背景、赞助列表与金额档位。
- 赞助播报、榜上有名门槛与永久收录入口。
- 移动端降级为静态列表,减少动画开销。
赞助
动画
榜单
Day 19
后台仪表盘
每天打开后台,第一眼要看到关键数据。
- 站点、文章、待审、订单、赞助数据集中展示。
- 近 7 天趋势图与常用功能快捷入口。
- 待审核、待收款等事项集中提醒,避免漏单。
统计
趋势图
待办
Day 20
性能第一轮
功能齐了之后,回头处理「能用但不快」的地方。
- 图片与图标懒加载,首屏只加载必要资源。
- 合并公共查询并补索引,排行榜与首页明显变快。
- 静态资源统一带版本号,解决浏览器缓存导致样式不更新。
懒加载
索引
缓存
工具箱
Day 21 - 30 · 把插件体系做出来,让功能可以持续生长
10 天
Day 21
插件框架
先定规则,再批量做工具,效率会高很多。
- 约定 widget.json 清单:名称、分类、入口、依赖资源。
- 后台自动发现、安装、启用 / 停用插件。
- 插件页面独立运行,样式与脚本不污染主站。
widget.json
插件管理
Day 22
文本类工具
第一批插件从最常用、最容易验证的开始。
- 记事本、Markdown 预览、编码转换、二维码生成。
- 纯前端运行,输入内容不上传服务器。
- 工具箱首页使用 2x2 / 2x4 图标布局,功能一眼可辨。
记事本
Markdown
二维码
Day 23
站长工具
把站长每天要查的东西集中到一个页面。
- 权重、友链、备案、SEO 查询入口。
- IP 查询与 Ping 工具,支持批量检测。
- 死链批量检测,结果可一键复制。
权重
友链
备案
Day 24
图片工具
图片处理全部放在浏览器里完成。
- 图片压缩、格式转换、水印、在线编辑。
- 封面制作与贴图工具,满足日常运营需求。
- Canvas 本地处理,避免上传原图带来的隐私与带宽问题。
压缩
水印
编辑
Day 25
音频工具
音频处理是工具箱里最容易被忽略的一类。
- 音频压缩与裁剪,支持波形预览与试听。
- 输出格式与码率可选,兼顾体积与音质。
- 长音频分段处理,避免浏览器卡死。
压缩
裁剪
试听
Day 26
视频与解析
这一批插件最考验稳定性和合规边界。
- m3u8 播放器支持多套内核与自定义配置。
- 蓝奏云、飞寄盘、青数云解析入口。
- token 与代理接口分离,前台不暴露真实资源地址。
m3u8
云盘解析
Day 27
效率工具
把重复劳动交给页面完成。
- 文件批量改名与格式转换。
- iOS 描述文件生成,方便内测分发。
- 卡密与随机口令生成,支持自定义字符集。
改名
描述文件
口令
Day 28
内容与娱乐
除了工具,也要有让人愿意多停一会的页面。
- KPL 赛事数据、赛程与直播入口。
- 热搜榜聚合,按平台分类展示。
- 数据做缓存,避免频繁请求源站被封。
KPL
热搜
Day 29
工具箱体验
插件数量变多后,如何找到才是关键。
- 工具搜索、分类筛选与插件弹窗一体化。
- 重排中栏布局,减少空白区,操作说明与示例数据分区展示。
- 横向筛选栏支持鼠标拖动与滚轮滚动,新工具排在前面。
搜索
筛选
布局
Day 30
上传与素材
所有插件都要上传,安全必须统一收口。
- 统一上传接口,校验文件类型、大小与后缀。
- 上传目录权限收紧,文件名随机化。
- 图片与文件预览、清理入口集中管理。
上传接口
文件校验
商业化
Day 31 - 37 · 收录、广告、友链与支付,让站点可以自己造血
7 天
Day 31
收录系统
把「申请收录」做成一条完整流水线。
- 前台 /submit 提交收录,后台「待审站点」集中处理。
- 免审开关与收录费用说明,免费与付费两套流程。
- 审核通过后自动写入站点管理并上架前台。
/submit
待审
免审
Day 32
广告系统
广告位既是收入,也是首页的视觉组成部分。
- 横幅与固定位两种广告位,分别设置价格与列数。
- 套餐、月价、投放时长与「虚位以待」占位卡。
- 强制广告标识、排序与到期自动下线。
横幅
固定位
套餐
Day 33
友链系统
友链是最轻量的互换合作方式。
- /friend 申请页、后台审核、付费与免费两种模式。
- 免费单可设置免审,提交即展示。
- 友链展示区与权重说明集中维护。
/friend
审核
付费
Day 34
聚合支付
先接最容易落地的通道,把支付链路跑通。
- 易支付协议接入,同时支持支付宝与微信。
- 下单、签名、回调验签全链路跑通。
- 支付成功后写订单并自动完成投放。
易支付
MD5 签名
Day 35
支付宝当面付
官方通道能减少对第三方网关的依赖。
- 调用 precreate 生成二维码,前台直接扫码。
- RSA2 签名与支付宝公钥验签。
- 异步回调做幂等处理,避免重复入账。
precreate
RSA2
Day 36
微信 Native
微信 APIv3 的坑最多,单独安排一天。
- APIv3 下单与二维码生成。
- 回调用 AES-256-GCM 解密,平台证书验签。
- 证书轮换后后台会提示同步更新。
APIv3
AES-GCM
Day 37
订单与人工收款
不是所有人都用在线支付,人工通道必须顺手。
- 订单列表、状态流转与按类型筛选。
- 收款码回填单号,人工确认后入账。
- 赞助记录与永久收录联动,付款即上墙。
订单
收款码
人工确认
安全与打磨
Day 38 - 45 · 最后八天,全部用来补安全、修体验、做复盘
8 天
Day 38
加密传输
接口里的数据不该以明文躺在网络面板里。
- 自研 nav-sec-v1:ECDH 协商 + HKDF 派生 + AES-256-GCM 加密。
- 接口返回加密信封,前端握手后还原密钥再解密。
- 站点密钥分片存储,降低单点泄露风险。
ECDH
HKDF
AES-256-GCM
Day 39
会话与降级
安全要强,但不能让正常用户打不开页面。
- 会话密钥 30 分钟轮换,过期返回 419 由前端自动重连。
- HTTP 或浏览器能力不足时自动降级为明文。
- 调试模式支持 ?debug=1 临时明文,方便排查接口。
会话轮换
419 重连
明文降级
Day 40
后台安全
后台是权限最集中的地方,逐项加固。
- 密码哈希存储,登录限速与服务端 Token 校验。
- 所有后台接口统一 guard,未登录直接拒绝。
- APP_DEBUG 开关直接写入 .env,避免线上暴露堆栈与配置。
密码哈希
接口守卫
APP_DEBUG
Day 41
防抓包与防查看源码
把「随手 F12」这道门槛立起来。
- 全站拦截 F12 与 Ctrl+Shift+I / J / C。
- 检测到开发者工具打开时弹出遮罩阻断页面,关闭后自动恢复。
- 防查看源码额外禁用右键菜单、Ctrl+U 与 Ctrl+S。
F12
防抓包
右键拦截
Day 42
设置页体验
设置项越来越多,不能让站长在一堆输入框里迷路。
- 设置拆成 9 个标签页,右侧说明随当前标签联动。
- 支付通道分组展示,启用状态一目了然。
- 永久收录价签实时预览,保存后用服务端真实值回填。
标签页
说明联动
价签预览
Day 43
移动端打磨
最后统一检查手机上的交互细节。
- 抽屉、弹窗、Dock 的手势与层级统一。
- 播放器交互对齐主流视频平台的用户习惯。
- 横向筛选栏支持鼠标拖动与滚轮滚动,新选项优先展示。
手势
播放器
横向滚动
Day 44
兼容与修复
把开发过程中记下的问题清单逐条清掉。
- 修复支付回调验签、时区与缓存导致的问题。
- 处理空数据、超长文本与异常图片等边界情况。
- 补齐 Windows 与 Linux 的部署差异说明。
Bug 修复
兼容
Day 45
上线复盘
最后一天不写新功能,只做收尾与规划。
- 整理部署步骤、备份与恢复策略。
- 输出后台使用说明与常见问题。
- 列出下一阶段计划:更多插件、数据备份、内容运营。
部署
备份
复盘
Day 45 · 全部计划已完成
接下来继续加插件、做内容、修细节 —— 慢一点没关系,每天都在往前。