Skip to content

Zoroaaa/Atlas

Repository files navigation

Atlas Logo

Atlas

开源聚合搜索引擎 — JAV / 动漫 / 影视,一站式搜索

License: MIT Version Cloudflare Frontend Backend

目录

快速访问

资源类型 链接 备注
在线体验 https://codeseek.pp.ua 体验完整功能

项目文档

本项目采用模块化文档管理,各专项文档独立维护。

核心文档

文档 说明 链接
API 接口文档 完整的 RESTful API 接口说明,包含搜索接口(JAV/动漫/影视三大类别)、认证方式、源管理等 docs/api/index.md
架构设计文档 前后端目录结构、技术栈版本、部署架构、数据库模块化设计详解 docs/backend-frontend-tree.md
配置说明文档 前端配置、后端配置、环境变量、代理服务、数据库配置、角色权限配置 docs/config.md
部署指南文档 环境要求、本地开发、后端部署、前端部署、数据库配置、常见问题解答 docs/deploy.md
版本变更日志 完整的版本变更记录:v2.0(架构重构)、v3.0(安全增强+功能扩展)、v3.1(Monorepo共享+安全加固+性能优化)、v4.0(动漫&影视搜索+架构升级) docs/changelogv2.0.md / docs/changelogv3.0.md / docs/changelogv3.1.0.md / docs/changelogv4.0.0.md
GitHub 推送指南 Git 操作流程、提交规范、分支管理、GitHub Actions 自动部署配置 docs/github_push.md

前端专项文档

文档 说明 链接
通知组件文档 Toast 通知组件的使用方法、API 文档、配置选项和最佳实践 frontend/docs/notification.md

项目特色

核心优势

1. 开源聚合搜索引擎

  • JAV 搜索: DMM/FANZA 元数据聚合 + JavBus/JavDB 磁力多源搜索
  • 动漫搜索: Bangumi 番剧信息 + Mikan 字幕组 + Nyaa 磁力 + ShowRSS 订阅
  • 影视搜索: TMDB 电影剧集 + YTS 电影种子 + EZTV 剧集种子 + TPB 兜底磁力
  • 一站式体验: 三大类别统一入口,一次搜索聚合多源结果

2. 现代化技术架构

  • React 19 + TypeScript: 采用最新的 React 特性,配合 TypeScript 实现完整的类型安全
  • Vite 极速构建: 毫秒级热更新,开发体验丝滑流畅
  • Tailwind CSS: 原子化 CSS 方案,支持亮色/暗色主题无缝切换
  • Zustand 状态管理: 轻量级状态管理方案,自动持久化存储

3. 云原生边缘计算

  • Cloudflare 全栈部署: 前端 Pages + 后端 Workers + 数据库 D1,完全 Serverless 架构
  • 全球 CDN 加速: 利用 Cloudflare 全球 300+ 边缘节点,用户就近访问
  • 零运维成本: 无需购买服务器,免费额度即可支撑中小型应用
  • 自动弹性伸缩: 流量高峰自动扩容,无需担心服务器宕机

4. 企业级安全防护

  • JWT 无状态认证: 基于 jose 库实现的 Token 认证,支持自动刷新
  • 完整邮箱验证: 注册验证、密码重置、邮箱更改、账户删除,全流程邮箱确认
  • 多层安全机制: 登录失败锁定、验证码频率限制、临时邮箱黑名单、安全事件日志
  • RBAC 权限系统: 四级角色权限(超级管理员/管理员/用户/访客),细粒度权限控制

技术亮点

前端技术栈

React 19              → 并发渲染、Suspense、自动批处理
TypeScript            → 完整类型推断、泛型约束、类型守卫
Vite                  → ESM 原生支持、按需编译、极速 HMR
Tailwind CSS          → JIT 编译、暗色模式、响应式设计
Zustand               → 极简 API、中间件支持、持久化存储
@codeseek/shared      → Monorepo 共享包 (类型、工具、验证规则)
React Router          → 数据路由、懒加载、嵌套布局
Lucide React          → 1000+ 精美图标、Tree-shaking 优化
date-fns              → 轻量级日期处理、国际化支持

后端技术栈

Hono 4.x              → 超轻量 Web 框架、多运行时支持
TypeScript            → 类型安全、接口定义、泛型约束
Cloudflare Workers    → 边缘计算、V8 隔离环境、零冷启动
Cloudflare D1         → SQLite 兼容、全球分布、自动备份
JWT (jose)            → 标准化认证、多种算法支持
Resend                → 现代邮件服务、高送达率、实时追踪

用户体验

完美响应式设计

  • 移动端优先: 从 320px 到 4K 显示器,完美适配所有设备尺寸
  • 触摸优化: 手势操作、滑动菜单、长按交互,移动端体验媲美原生 APP
  • 性能优先: 首屏加载 <1s,交互响应 <100ms,Lighthouse 评分 90+

智能交互体验

  • Toast 通知系统: 统一的消息提示,支持成功/错误/警告/信息四种类型
  • 自动数据同步: 跨设备同步搜索历史、收藏夹、个人设置
  • 主题定制: 亮色/暗色/跟随系统,一键切换,状态持久化
  • 快捷键支持: 常用操作支持键盘快捷键,提升操作效率

核心功能

1. 智能搜索系统 (v4.0 三层架构重构)

三大搜索类别

类别 数据源 说明
JAV DMM/FANZA / JavBus / JavDB 成人影片元数据 + 磁力聚合
动漫 Bangumi / Mikan / Nyaa / ShowRSS 番剧元数据 + 字幕组 + 磁力链接
影视 TMDB / YTS / EZTV / TPB 电影剧集元数据 + 种子资源

三层搜索架构

Category (大类)        Classification (分类)         Source (源实例)
┌─────────────┐       ┌──────────────────┐       ┌──────────────┐
│    jav      │ ────> │ metadata         │ ────> │ DMM/FANZA    │
│             │       │ magnet           │       │ JavBus       │
│             │       │                  │       │ JavDB        │
├─────────────┤       ├──────────────────┤       ├──────────────┤
│   anime     │ ────> │ bangumi          │ ────> │ Bangumi API  │
│             │       │ mikan            │       │ Mikan Project│
│             │       │ nyaa             │       │ Nyaa.si      │
│             │       │ showrss          │       │ ShowRSS      │
├─────────────┤       ├──────────────────┐       ├──────────────┤
│   movie     │ ────> │ tmdb             │ ────> │ TMDB API     │
│             │       │ yts              │       │ YTS          │
│             │       │ eztv             │       │ EZTV         │
│             │       │ tpb              │       │ TPB          │
└─────────────┘       └──────────────────┘       └──────────────┘

核心设计:

  • Provider 注册模式:新增搜索类别只需创建 Provider 类并在 backend/src/index.ts 注册一行
  • 分类独立路由:每个分类有独立的搜索逻辑和结果面板
  • 数据库驱动源管理:搜索源的启用/禁用/权重通过后台管理

多源聚合搜索

  • 一键聚合: 选择类别和分类,输入关键词,结果统一展示
  • 智能排序: 根据搜索源优先级、使用频率、可用状态智能排序结果
  • 分类筛选: 支持按大类(JAV/动漫/影视)和子分类筛选搜索源
  • 历史记录: 自动保存搜索历史(含封面图),支持快速重搜和历史统计

搜索建议与热门

  • 智能提示: 输入关键词时自动提示相关搜索建议
  • 热门搜索: 实时展示热门搜索关键词,发现热门资源
  • 搜索统计: 个人搜索统计,了解自己的搜索习惯

搜索源管理

  • 启用/禁用: 自由控制哪些搜索源参与搜索
  • 优先级调整: 自定义搜索源的显示顺序
  • 状态监控: 实时查看搜索源可用性状态
  • 自定义添加: 支持添加自定义搜索源(URL 模板)

2. 用户系统

认证与安全

  • GitHub OAuth 登录: 一键使用 GitHub 账号登录,自动创建/关联账号
  • JWT Token 认证: 无状态认证,支持 Token 自动刷新
  • 登录保护: 连续失败 5 次自动锁定 15 分钟
  • 会话管理: 查看活跃会话,支持强制登出

个人数据管理

  • 收藏夹: 收藏常用搜索结果(支持 JAV/动漫/影视 全类别),支持分类管理
  • 搜索历史: 自动记录搜索历史(含封面缩略图),支持清空和删除
  • 数据同步: 跨设备同步收藏、历史、设置
  • 数据导出: 支持导出个人数据(JSON 格式)

3. 社区功能

搜索源分享

  • 分享搜索源: 将自己发现的好用搜索源分享给社区
  • 标签管理: 为搜索源添加标签,方便分类查找
  • 审核机制: 管理员审核后才能上架,保证质量

互动功能

  • 评论评分: 对搜索源发表评价,帮助他人选择
  • 点赞收藏: 为优质搜索源点赞,收藏到个人列表
  • 举报机制: 发现违规内容可举报,管理员处理

贡献统计

  • 个人贡献: 查看自己分享的搜索源数量、下载量、评分
  • 社区排行: 热门分享、活跃贡献者排行

4. 用户反馈

反馈提交

  • 多种反馈类型: 问题反馈、优化建议、其他
  • 匿名支持: 未登录用户也可提交反馈
  • 自动收集: 自动记录页面 URL、浏览器信息

反馈管理

  • 状态跟踪: 查看反馈处理状态(待处理/处理中/已解决/已关闭)
  • 邮件通知: 反馈处理完成后自动发送邮件通知
  • 历史记录: 查看自己的反馈历史

5. 管理员功能

用户管理

  • 用户列表: 分页查询、搜索筛选、状态查看
  • 角色权限: 四级角色(超级管理员/管理员/用户/访客)
  • 状态控制: 启用/禁用用户账户
  • 登录日志: 查看用户登录记录和 IP 信息

内容管理

  • 搜索源管理: 增删改查系统搜索源和分类(支持三大类别)
  • 社区审核: 审核用户分享的搜索源
  • 举报处理: 处理用户举报内容

系统监控

  • 仪表盘: 一览系统运行状态、用户活跃度
  • 趋势分析: 用户增长、搜索趋势、活跃度变化
  • 行为日志: 用户操作行为记录和分析
  • 配置管理: 动态修改系统配置,无需重新部署

6. JAV 榜单功能

多维度榜单

  • 有码精选: JavBus 首页前 3 页随机 20 条
  • 无码精选: 无码专区前 3 页随机 20 条
  • 高清榜单: 高清分类前 3 页随机 20 条
  • 字幕榜单: 字幕分类前 3 页随机 20 条
  • 随机类别: 随机 10 个类别,每个类别 12 条
  • 随机女优: 随机 10 个女优,每个女优 12 条

智能推荐

  • 番号建议: 输入关键词自动匹配番号
  • 数据来源: 支持多数据源聚合展示
  • 登录可见: 需要用户登录认证后才能访问

技术栈概览

┌─────────────────────────────────────────────────────────┐
│                    前端层 (v4.0.0)                      │
│  • React 19 + TypeScript                                │
│  • Vite 构建工具                                         │
│  • Tailwind CSS 样式框架                                 │
│  • Zustand 状态管理                                      │
│  • React Router 路由管理                                 │
│  • AnimeSearchResultPanel / MovieSearchResultPanel      │
│  • 部署:Cloudflare Pages                                │
├─────────────────────────────────────────────────────────┤
│                  Provider 层 (v4.0 新增)                 │
│  • SearchProvider 接口 + ProviderRegistry 注册中心       │
│  • anime-provider (Bangumi/Mikan/Nyaa/ShowRSS)          │
│  • movie-provider (TMDB/YTS/EZTV/TPB)                   │
│  • jav-provider (Metadata/Magnet)                       │
├─────────────────────────────────────────────────────────┤
│                  后端服务层 (v4.0.0)                     │
│  • Hono 框架 (轻量级 Web 框架)                           │
│  • TypeScript 类型安全                                   │
│  • Cloudflare Workers (边缘计算)                         │
│  • Cloudflare D1 (SQLite 数据库)                         │
│  • JWT Token 认证 (jose)                                 │
│  • Resend 邮件服务                                       │
└─────────────────────────────────────────────────────────┘

查看完整架构设计

快速开始

环境要求

  • Node.js: >= 18.0.0
  • pnpm: >= 8.0.0
  • Cloudflare 账户: 用于部署 Workers 和 D1 数据库
  • Wrangler CLI: Cloudflare 开发工具 (>= 3.x)

快速部署

# 克隆项目
git clone https://github.com/Zoroaaa/Atlas.git
cd Atlas

# 安装依赖
pnpm install

# 初始化数据库(含 v4.0 新增的动漫/影视搜索源)
npx wrangler d1 create atlas-db
npx wrangler d1 execute atlas-db --file=database/schema.sql
npx wrangler d1 execute atlas-db --file=database/06_data_search_sources.sql
npx wrangler d1 execute atlas-db --file=database/13_schema_history_cover.sql

# 本地开发
pnpm dev

# 生产部署
pnpm build && cd backend && npx wrangler deploy

查看详细部署指南 查看配置说明 查看完整 API 文档 查看 v4.0 变更日志

性能优化

前端性能优化

  • React 19 并发特性 + Vite 快速构建
  • 代码分割,路由级别懒加载,Tree-shaking
  • Zustand 持久化状态 + API 响应缓存
  • React.memo 和 useMemo 优化重渲染

后端性能优化

  • Cloudflare 全球边缘节点就近处理
  • 数据库索引优化 + 参数化查询
  • 响应压缩 (gzip/brotli) + 批量操作支持
  • 请求限流 + 并发控制 + 降级策略

安全特性

前端安全

  • XSS 防护 + CSRF 保护
  • 内容安全策略 (CSP) + 子资源完整性 (SRI)
  • JWT Token 认证 + 请求签名验证

后端安全

  • JWT Token 认证 (jose 库) + RBAC 权限控制
  • SQL 注入防护 + 密码加密存储 (bcrypt)
  • 登录失败锁定机制 + 安全事件日志
  • CORS 配置 + 速率限制 + IP 记录

许可证

本项目基于 MIT License 开源协议。

您可以自由地:

  • 使用 - 用于任何目的,包括商业用途
  • 修改 - 修改源代码以适应您的需求
  • 分发 - 分享项目或其修改版本
  • 私有使用 - 在私有项目中使用

但您必须:

  • 保留版权声明 - 保留原始版权声明和许可证文本
  • 声明修改 - 说明对源代码所做的修改

致谢

技术平台

  • Cloudflare - 提供优秀的边缘计算平台
  • GitHub - 代码托管和协作平台
  • Resend - 邮件发送服务

开源社区

感谢所有为开源社区做出贡献的开发者们!

联系与支持

官方渠道

如何贡献

我们欢迎各种形式的贡献:

  • 报告 Bug
  • 提出新功能建议
  • 改进文档
  • 提交代码
  • 翻译文档

贡献步骤

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

Atlas — 开源聚合搜索引擎

JAV / 动漫 / 影视,一站式搜索

Made with ❤️ by Zoro

About

开源聚合搜索引擎 — JAV / 动漫 / 影视,一站式搜索

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages