一个基于 Flight PHP + Tailwind CSS + Alpine.js + Vite 的轻量级个人导航网站。
- ✅ 轻量级:Flight PHP 框架,内存占用极低
- ✅ 响应式设计:Tailwind CSS 移动端友好
- ✅ 渐进增强:Alpine.js 实现交互,无需重型前端框架
- ✅ 用户认证:简单安全的登录系统
- ✅ 分类管理:支持分类的增删改查,删除前自动检查关联链接
- ✅ 链接管理:支持 VPN 标记,图标自动抓取 / 手动上传
- ✅ 搜索筛选:快速查找链接,支持按"无图标"等状态筛选
- ✅ 数据统计:后台 Dashboard 实时展示链接、分类及异常状态
- ✅ 导入导出:JSON 原生备份及浏览器 HTML 书签导入,支持预览与选择性入库
- ✅ 审计日志:记录管理员关键操作,确保系统可追溯
- ✅ 单页体验:Hash 路由支持浏览器后退 / 前进
- 后端:Flight PHP 3.17 + PHP 8.1+
- 前端:Tailwind CSS 3.4 + Alpine.js 3.13
- 构建工具:Vite 5.x
- 数据库:MySQL 5.7 / 8.0 或 SQLite 3
| 依赖 | 版本 | 说明 |
|---|---|---|
| PHP | ≥ 8.1 | 需启用 fileinfo,并按数据库选择启用 pdo_mysql 或 pdo_sqlite |
| MySQL | ≥ 5.7 | 使用 MySQL 时需要 |
| SQLite | 3.x | 使用 SQLite 时需要 PHP pdo_sqlite 扩展 |
| Node.js | ≥ 16 | 用于构建前端资源及开发热更新 |
| Composer | 最新版 | PHP 依赖管理 |
项目提供了自动检测环境的启动脚本,推荐优先使用。
该模式会构建前端资源后启动 PHP 服务器,适合快速体验项目功能。
Windows(原生):
start-preview.batLinux / macOS / WSL2:
chmod +x start-preview.sh
./start-preview.sh脚本会自动安装依赖、构建前端、启动服务器。浏览器打开 http://127.0.0.1:8100 即可访问。
WSL2 用户注意:脚本会自动检测 WSL2 环境并绑定到
0.0.0.0,确保 Windows 浏览器可以正常访问。
-
克隆项目
git clone <repository-url> cd feather-nav
-
安装 PHP 依赖
composer install
-
安装前端依赖
npm install
-
配置数据库
cp .env.example .env
编辑
.env文件,配置数据库连接信息及管理员账号。默认使用 MySQL:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=personal_nav DB_USERNAME=root DB_PASSWORD=your_password ADMIN_USERNAME=admin ADMIN_PASSWORD=admin123
如需使用 SQLite:
DB_CONNECTION=sqlite DB_SQLITE_PATH=storage/database/personal_nav.sqlite ADMIN_USERNAME=admin ADMIN_PASSWORD=admin123
执行数据库初始化:
php scripts/setup_db.php
如需将已有 MySQL 数据迁移到 SQLite,先配置好 MySQL 连接信息和
DB_SQLITE_PATH,再执行:php scripts/mysql_to_sqlite.php --fresh
-
构建前端资源
npm run build
-
启动服务器
环境 命令 Linux / macOS php -S 127.0.0.1:8100 -t publicWindows 原生 php -S 127.0.0.1:8100 -t publicWSL2 php -S 0.0.0.0:8100 -t publicWSL2 必须绑定
0.0.0.0,否则 Windows 浏览器无法访问。 -
访问
- 首页:
http://127.0.0.1:8100 - 管理后台:
http://127.0.0.1:8100/admin - 默认账号:
admin/admin123(可在.env中修改)
- 首页:
开发时使用 Vite 的热更新功能,修改 CSS/JS 后浏览器自动刷新。
脚本会自动检测平台并选择正确的绑定地址。
Windows(原生):
start-dev.batLinux / macOS / WSL2:
chmod +x start-dev.sh
./start-dev.sh需要同时运行两个服务(两个终端窗口):
# 终端 1:Vite 开发服务器(热更新)
npm run dev
# 终端 2:PHP 服务器
# Linux / macOS / Windows 原生:
php -S 127.0.0.1:8100 -t public
# WSL2:
php -S 0.0.0.0:8100 -t public| 服务 | 普通环境 | WSL2 |
|---|---|---|
| 网站首页 | http://127.0.0.1:8100 |
http://127.0.0.1:8100(宿主机浏览器) |
| 管理后台 | http://127.0.0.1:8100/admin |
同上 |
| Vite 开发服务器 | http://127.0.0.1:5173 |
http://<WSL2-IP>:5173(脚本自动处理) |
| 文件类型 | 路径 | 效果 |
|---|---|---|
| CSS | resources/css/app.css |
浏览器自动刷新 |
| JS | resources/js/main.js |
浏览器自动刷新 |
| PHP | app/**/*.php |
需手动刷新浏览器 |
| 视图 | resources/views/*.php |
需手动刷新浏览器 |
WSL2 有独立的网络栈,与 Windows 宿主机不在同一网络命名空间,因此有几个需要注意的地方:
- WSL2 内的
127.0.0.1指向 WSL2 自身,Windows 浏览器无法直接访问 - 绑定
0.0.0.0后,Windows 可通过127.0.0.1:8100自动转发访问 WSL2 内的服务
- Vite 开发服务器运行在 WSL2 内部,端口
5173 - 从 Windows 浏览器加载
@vite/client和 JS/CSS 模块时,必须使用 WSL2 的虚拟机 IP - 项目已内置自动检测(
AssetHelper+ CSP 动态构建),无需手动配置
直接使用项目提供的启动脚本(start-dev.sh / start-preview.sh),脚本会自动处理上述所有问题。
如果手动启动,务必:
php -S 0.0.0.0:8100 -t public # 不是 127.0.0.1feather-nav/
├── app/ # 应用代码
│ ├── Controllers/ # 控制器
│ ├── Helpers/ # 帮助类(含 AssetHelper)
│ └── Middleware/ # 中间件
├── config/ # 配置文件
├── database/ # 数据库脚本
│ └── init.sql # 初始化 SQL
├── public/ # Web 根目录
│ ├── assets/ # 构建产物(npm run build)
│ └── index.php # 入口文件
├── resources/ # 前端源码
│ ├── css/ # Tailwind CSS
│ ├── js/ # JavaScript
│ └── views/ # PHP 视图模板
│ ├── admin/ # 管理后台视图
│ ├── auth/ # 登录相关
│ ├── home.php # 首页
│ └── layout.php # 公共布局
├── scripts/ # 工具脚本
│ └── setup_db.php # 数据库初始化
├── storage/ # 运行时存储
│ └── logs/ # 日志
├── start-dev.sh # 开发模式启动(Linux/macOS/WSL2)
├── start-dev.bat # 开发模式启动(Windows)
├── start-preview.sh # 预览模式启动(Linux/macOS/WSL2)
├── start-preview.bat # 预览模式启动(Windows)
├── .env.example # 环境变量模板
├── composer.json # PHP 依赖
├── package.json # 前端依赖
└── vite.config.js # Vite 配置
-
构建前端资源
npm run build
-
配置 Web 服务器
将网站根目录指向
public/,确保 URL 重写正确配置:- Apache:
.htaccess已内置 - Nginx:参考以下配置
location / { try_files $uri $uri/ /index.php?$query_string; }
- Apache:
-
配置环境变量
cp .env.example .env
修改生产环境配置,确保
APP_ENV=production、APP_DEBUG=false。 -
安全建议
- 修改默认管理员密码
- 启用 HTTPS
- 定期备份数据库
确认 PHP 服务器绑定的是 0.0.0.0 而非 127.0.0.1。使用项目提供的启动脚本可自动处理。
这是 Vite 资源路径问题。确保:
- 使用最新代码(
AssetHelper已内置 WSL2 IP 检测) - 浏览器控制台查看 CSP 报错,确认 CSP 允许了正确的 Vite 地址
修改启动脚本中的 PHP_PORT 和 VITE_PORT 变量,同时更新 .env 中的 APP_URL。
MIT License
欢迎提交 Issue 和 Pull Request!