Skip to content

目录结构

SakuraNav/
├── public/                          # 静态资源
│   ├── browser-tab-logo.png         # 浏览器标签 Logo
│   └── default-site-logo.png        # 站点默认 Logo

├── src/
│   ├── app/                         # Next.js App Router
│   │   ├── page.tsx                 # 首页(SSR 初始数据加载)
│   │   ├── layout.tsx               # 根布局(3 种 Google 字体、主题初始化脚本)
│   │   ├── not-found.tsx            # 404 页面(复用登录页背景和 UI 风格)
│   │   ├── globals.css              # 全局样式(Tailwind CSS 4、自定义动画)
│   │   ├── icon.png                 # App Icon
│   │   ├── editor/page.tsx          # 编辑器管理后台(需管理员认证)
│   │   ├── card/[id]/page.tsx       # 社交卡片详情页(通用,支持所有 ID+二维码类型及邮箱)
│   │   ├── [...slug]/page.tsx       # 兜底路由(未匹配路径返回 404)
│   │   ├── login/page.tsx           # 登录/注册页面(固定路由,支持 OAuth 第三方登录)
│   │   ├── profile/                 # 个人空间
│   │   │   ├── page.tsx             # 页面入口(认证检查)
│   │   │   ├── profile-client.tsx   # 个人空间客户端组件(主逻辑 + UI)
│   │   │   └── profile-dialogs.tsx  # 弹窗组件集合(密码/解绑/注销/用户名等)
│   │   ├── register-switch/         # 切换用户场景专用注册页
│   │   │   └── page.tsx             # 注册后返回主页(非登录页)
│   │   ├── setup/                   # 管理员初始化引导(首次启动)
│   │   │   └── page.tsx             # 引导页面(创建管理员账号)
│   │   └── api/                     # 后端接口
│   │       ├── health/              # 健康检查
│   │       ├── auth/                # 认证接口
│   │       │   ├── login/           # 登录
│   │       │   ├── logout/          # 登出
│   │       │   ├── register/        # 注册
│   │       │   ├── switch/          # 免密码切换用户
│   │       │   ├── session/         # 会话状态
│   │       │   ├── oauth-providers/ # 公开 OAuth 供应商列表
│   │       │   └── oauth/[provider]/ # OAuth 登录(重定向 + 回调)
│   │       ├── sites/               # 网站管理
│   │       │   ├── route.ts         # CRUD
│   │       │   ├── batch/           # 批量创建网站(书签导入)
│   │       │   ├── check-online/      # 批量在线检测
│   │       │   ├── check-online-single/ # 单站点在线检测(即时检测)
│   │       │   ├── memo/              # 备忘便签更新(PATCH notes/todos)
│   │       │   └── reorder-global/  # 全局排序
│   │       ├── tags/                # 标签管理
│   │       │   ├── route.ts         # CRUD
│   │       │   ├── reorder/         # 标签排序
│   │       │   └── [tagId]/sites/   # 标签下站点操作
│   │       │       ├── reorder/     # 标签内排序
│   │       │       └── restore/     # 恢复标签站点关联(撤销删除)
│   │       ├── appearance/          # 外观配置
│   │       ├── settings/            # 应用设置
│   │       ├── navigation/          # 导航数据(公开接口)
│   │       │   ├── cards/           # 全部卡片列表(网站 + 社交 + 笔记)
│   │       │   ├── site-cards/      # 网站卡片列表(仅 card_type 为空)
│   │       │   ├── social-cards/    # 社交卡片列表
│   │       │   ├── note-cards/      # 笔记卡片列表
│   │       │   └── tags/            # 可见标签列表
│   │       ├── assets/              # 资源管理
│   │       │   ├── wallpaper/       # 壁纸上传
│   │       │   ├── cleanup/        # 孤立 icon 资源清理(延迟删除)
│   │       │   └── [assetId]/file/  # 资源文件访问
│   │       ├── config/              # 配置导入导出(管理员全局级)
│   │       │   ├── detect/          # 导入文件类型检测
│   │       │   ├── export/          # 导出 ZIP
│   │       │   ├── import/          # 导入 ZIP
│   │       │   └── reset/           # 重置默认
│   │       ├── search/              # 搜索功能
│   │       │   └── suggest/         # 搜索建议
│   │       ├── cards/               # 社交卡片管理
│   │       │   ├── route.ts         # CRUD(GET / POST / PUT / DELETE)
│   │       │   ├── [id]/route.ts    # 单卡片公开接口(无需认证)
│   │       │   ├── note/            # 笔记卡片管理(CRUD,存储在 sites 表 card_type='note')
│   │       │   │   ├── img/         # 笔记图片访问(伪装 URL,不暴露 asset 系统)
│   │       │   │   ├── file/        # 笔记文件下载(伪装 URL,Content-Disposition: attachment)
│   │       │   │   ├── attach/      # 笔记附件下载(兼容旧数据,kind='note-attachment')
│   │       │   │   ├── attachment/  # 笔记附件管理(保留兼容,上传/列表/重命名/删除,最大 100MB)
│   │       │   │   ├── upload-image/  # 笔记图片上传(编辑器内粘贴或 / 指令,最大 10MB)
│   │       │   │   └── upload-file/   # 笔记文件上传(编辑器内粘贴或 / 指令,最大 100MB)
│   │       │   └── reorder/         # 卡片排序
│   │       ├── admin/               # 管理员接口
│   │       │   ├── bootstrap/       # 初始化引导数据
│   │       │   ├── registration/    # 注册开关管理
│   │       │   ├── users/           # 用户管理(列表/角色/删除)
│   │       │   └── oauth/           # OAuth 配置管理
│   │       │       ├── route.ts     # GET/PUT 供应商配置
│   │       │       └── test/        # POST 测试连通性
│   │       ├── user/                # 用户接口(需认证)
│   │       │   ├── profile/         # 获取/更新用户资料(昵称)
│   │       │   ├── avatar/          # 上传/删除头像
│   │       │   ├── password/        # 修改密码
│   │       │   ├── username/        # 修改用户名(仅一次)
│   │       │   ├── oauth-bind/      # OAuth 绑定管理(GET/DELETE)
│   │       │   ├── data/            # 用户级数据操作(导入/导出/重置/检测)
│   │       │   │   ├── export/      # 导出用户数据为 ZIP
│   │       │   │   ├── import/      # 从 ZIP 导入用户数据
│   │       │   │   ├── reset/       # 重置用户数据
│   │       │   │   ├── clear/       # 清除用户标签和站点
│   │       │   │   └── detect/      # 检测导入文件类型
│   │       │   └── delete-account/  # 注销账号
│   │       ├── setup/               # 管理员初始化引导(首次启动)
│   │       ├── floating-buttons/    # 悬浮按钮配置(GET/PUT)
│   │       ├── snapshots/           # 快照管理(GET/POST/DELETE/PATCH)
│   │       ├── notifications/       # 通知配置(Webhook 通知渠道 CRUD + 测试)
│   │       │   ├── route.ts         # GET 列表 / POST 创建
│   │       │   ├── test-preview/    # POST 用表单数据直接测试(创建弹窗中使用)
│   │       │   └── [id]/            # 单条操作
│   │       │       ├── route.ts     # PUT 更新 / PATCH 切换启用 / DELETE 删除
│   │       │       └── test/        # POST 发送测试通知
│   │       └── ai/                  # AI 接口
│   │           ├── recommend/       # AI 智能推荐
│   │           ├── workflow/        # AI 工作流规划(根据用户需求串联网站步骤)
│   │           ├── analyze-site/    # AI 网站分析
│   │           ├── check/           # AI 连通性检查
│   │           └── import-bookmarks/ # AI 书签分析
│   │
│   ├── components/                  # React 组件
│   │   ├── sakura-nav/              # 主应用组件(Composition Root 架构)
│   │   ├── admin/                   # 管理面板组件
│   │   ├── auth/                    # 认证相关组件
│   │   ├── dialogs/                 # 对话框组件
│   │   └── ui/                      # UI 基础组件
│   │
│   ├── lib/                         # 工具库
│   │   ├── base/                    # 基础模块(types/api/auth/logger)
│   │   ├── config/                  # 配置模块(server-config/schemas/config)
│   │   ├── database/                # 数据库核心(adapter/dialect/连接/迁移/种子)
│   │   ├── utils/                   # 工具函数
│   │   └── services/                # 服务层(Repository 模式)
│   │
│   ├── hooks/                       # 自定义 Hooks
│   │   ├── use-sakura-nav-orchestrator.ts # 编排 Hook(Composition Root)
│   │   ├── use-theme.ts             # 主题切换
│   │   ├── use-site-list.ts         # 网站列表管理(分页加载)
│   │   ├── use-appearance.ts        # 外观配置
│   │   ├── use-drag-sort.ts         # 拖拽排序
│   │   ├── use-search-bar.ts        # 搜索栏状态管理
│   │   ├── use-search-engine-config.ts # 搜索引擎配置管理
│   │   ├── use-ai-recommend.ts      # AI 智能推荐
│   │   ├── use-toast-notify.ts      # 通知提示
│   │   ├── use-config-actions.ts    # 配置操作
│   │   ├── use-site-tag-editor.ts   # 网站标签编辑器
│   │   ├── use-site-name.ts         # 站点名称管理
│   │   ├── use-online-check.ts      # 网站在线检测
│   │   ├── use-undo-stack.ts        # 操作撤销栈
│   │   ├── use-editor-console.ts    # 编辑器控制台
│   │   ├── use-social-cards.ts      # 社交卡片管理
│   │   ├── use-switch-user.ts       # 切换用户
│   │   ├── use-session-expired.ts   # 会话失效检测与弹窗管理
│   │   ├── use-tag-delete.ts        # 标签删除
│   │   └── use-snapshots.ts         # 快照管理
│   │
├── storage/                         # 数据存储(运行后生成,禁止手动修改)
│   ├── database/
│   │   └── sakuranav.sqlite         # SQLite 数据库
│   └── uploads/                     # 上传文件目录

├── config.example.yml               # 配置文件模板
├── build-and-run.js                 # 构建并运行脚本
└── package.json                     # 项目配置