# OpenList **Repository Path**: snail_tech/open-list ## Basic Information - **Project Name**: OpenList - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenList #### 介绍 OpenList 是一个基于 AList 分叉的项目,旨在应对反垄断危机。它是一个功能丰富的文件列表和管理系统,支持多种存储服务的集成。 #### 软件架构 ## 前端架构 ### 技术栈 - **框架**:SolidJS - **语言**:TypeScript - **构建工具**:Vite - **状态管理**:自定义 store - **UI 库**:@hope-ui/solid - **路由**:@solidjs/router - **网络请求**:axios - **其他依赖**: - 播放器:aplayer, artplayer, hls.js - 编辑器:monaco-editor - 数学公式:katex - 代码高亮:highlight.js - 图片查看:lightgallery - 国际化:@solid-primitives/i18n ### 目录结构 ``` Frontend/ ├── images/ # 图标和图片资源 ├── public/ # 静态资源 │ ├── images/ # 图片 │ ├── static/ # 静态文件 │ └── streamer/ # 流媒体相关 ├── scripts/ # 脚本文件 │ └── i18n.mjs # 国际化脚本 ├── src/ # 源代码 │ ├── app/ # 应用主组件 │ │ ├── App.tsx # 应用入口组件 │ │ ├── MustUser.tsx # 用户认证组件 │ │ ├── i18n.ts # 国际化配置 │ │ ├── index.css # 全局样式 │ │ ├── index.tsx # 应用入口 │ │ └── theme.ts # 主题配置 │ ├── components/ # 通用组件 │ │ ├── Base.tsx # 基础组件 │ │ ├── FolderTree.tsx # 文件夹树组件 │ │ ├── Markdown.tsx # Markdown 组件 │ │ ├── ModalInput.tsx # 模态输入组件 │ │ ├── Paginator.tsx # 分页组件 │ │ └── icons.tsx # 图标组件 │ ├── hooks/ # 自定义 hooks │ │ ├── useCDN.ts # CDN 相关 hook │ │ ├── useDownload.ts # 下载相关 hook │ │ ├── useFetch.ts # 数据获取 hook │ │ ├── useLink.ts # 链接处理 hook │ │ ├── usePath.ts # 路径处理 hook │ │ └── useRouter.ts # 路由相关 hook │ ├── pages/ # 页面组件 │ │ ├── home/ # 首页相关 │ │ │ ├── file/ # 文件页面 │ │ │ ├── folder/ # 文件夹页面 │ │ │ ├── uploads/ # 上传相关 │ │ │ ├── Body.tsx # 主体内容 │ │ │ ├── Nav.tsx # 导航栏 │ │ │ └── Sidebar.tsx # 侧边栏 │ │ ├── login/ # 登录页面 │ │ ├── manage/ # 管理页面 │ │ └── test/ # 测试页面 │ ├── store/ # 状态管理 │ │ ├── archive.ts # 归档状态 │ │ ├── history.ts # 历史记录 │ │ ├── obj.ts # 对象状态 │ │ ├── settings.ts # 设置状态 │ │ └── user.ts # 用户状态 │ ├── types/ # 类型定义 │ │ ├── driver_item.ts # 驱动项目类型 │ │ ├── item_type.ts # 项目类型 │ │ ├── meta.ts # 元数据类型 │ │ ├── obj.ts # 对象类型 │ │ └── user.ts # 用户类型 │ ├── utils/ # 工具函数 │ │ ├── api.ts # API 相关 │ │ ├── config.ts # 配置相关 │ │ ├── handle_resp.ts # 响应处理 │ │ ├── path.ts # 路径处理 │ │ └── request.ts # 请求相关 │ ├── index.d.ts # 类型声明文件 │ └── main.tsx # 应用入口文件 ├── .env.development # 开发环境配置 ├── .env.production # 生产环境配置 ├── package.json # 项目配置和依赖 ├── tsconfig.json # TypeScript 配置 └── vite.config.ts # Vite 配置 ``` ### 核心功能模块 1. **文件管理**:支持文件的查看、下载、上传、删除等操作 2. **文件夹管理**:支持文件夹的创建、重命名、删除等操作 3. **多存储服务集成**:通过驱动机制支持多种存储服务 4. **用户认证**:支持用户登录、注册、权限管理 5. **国际化**:支持多语言切换 6. **媒体播放**:支持音频、视频文件的在线播放 7. **文件预览**:支持图片、文档等文件的在线预览 8. **搜索功能**:支持文件和文件夹的搜索 ## 后端架构 ### 技术栈 - **语言**:Go 1.24 - **Web 框架**:Gin - **数据库**:SQLite, MySQL, PostgreSQL - **缓存**:go-cache - **认证**:JWT, WebAuthn - **其他依赖**: - 存储服务 SDK:aws-sdk-go, azure-sdk-for-go, aliyun-oss-go-sdk - 搜索:blevesearch - 文件处理:rclone, archives - 网络:websocket, quic-go ### 目录结构 ``` Serivce/ ├── cmd/ # 命令行工具 │ ├── flags/ # 命令行参数 │ ├── admin.go # 管理命令 │ ├── server.go # 服务器命令 │ ├── start.go # 启动命令 │ └── version.go # 版本命令 ├── drivers/ # 存储服务驱动 │ ├── 115/ # 115 网盘驱动 │ ├── aliyundrive/ # 阿里云盘驱动 │ ├── baidu_netdisk/ # 百度网盘驱动 │ ├── local/ # 本地存储驱动 │ ├── onedrive/ # OneDrive 驱动 │ ├── s3/ # S3 兼容存储驱动 │ ├── webdav/ # WebDAV 驱动 │ └── ... # 其他存储服务驱动 ├── internal/ # 内部包 │ ├── archive/ # 归档相关 │ ├── authn/ # 认证相关 │ ├── bootstrap/ # 启动相关 │ ├── cache/ # 缓存相关 │ ├── conf/ # 配置相关 │ ├── db/ # 数据库相关 │ ├── driver/ # 驱动相关 │ ├── errs/ # 错误处理 │ ├── fs/ # 文件系统相关 │ ├── fuse/ # FUSE 相关 │ ├── message/ # 消息相关 │ ├── model/ # 数据模型 │ ├── net/ # 网络相关 │ ├── op/ # 操作相关 │ ├── search/ # 搜索相关 │ ├── setting/ # 设置相关 │ ├── sharing/ # 分享相关 │ ├── sign/ # 签名相关 │ ├── stream/ # 流处理 │ ├── task/ # 任务相关 │ └── task_group/ # 任务组相关 ├── pkg/ # 公共包 │ ├── aria2/ # Aria2 相关 │ └── buffer/ # 缓冲相关 ├── .air.toml # Air 配置 ├── go.mod # Go 模块配置 ├── go.sum # Go 依赖校验 └── main.go # 应用入口 ``` ### 核心功能模块 1. **存储服务集成**:通过驱动机制支持多种存储服务,如本地存储、云存储等 2. **文件系统操作**:支持文件和文件夹的各种操作,如创建、读取、更新、删除等 3. **用户管理**:支持用户的创建、认证、权限管理 4. **分享功能**:支持文件和文件夹的分享 5. **搜索功能**:支持文件和文件夹的搜索 6. **任务管理**:支持文件上传、下载等任务的管理 7. **流处理**:支持大文件的流式处理 8. **缓存机制**:支持缓存以提高性能 9. **国际化**:支持多语言 ## 前后端交互 前端通过 API 与后端进行交互,主要包括: 1. **认证相关**:登录、注册、登出等 2. **文件操作**:上传、下载、删除、移动等 3. **文件夹操作**:创建、重命名、删除等 4. **存储服务管理**:添加、编辑、删除存储服务 5. **用户管理**:创建、编辑、删除用户 6. **分享管理**:创建、编辑、删除分享 7. **搜索操作**:搜索文件和文件夹 ## 二次开发建议 1. **前端开发**: - 熟悉 SolidJS 和 TypeScript - 了解项目的状态管理机制 - 了解 API 接口设计 - 关注组件的复用性和可维护性 2. **后端开发**: - 熟悉 Go 语言和 Gin 框架 - 了解驱动机制的工作原理 - 了解数据库设计和操作 - 关注性能和安全性 3. **集成开发**: - 了解前后端的交互方式 - 关注 API 接口的设计和文档 - 测试新功能的兼容性 4. **部署和维护**: - 了解项目的构建和部署流程 - 关注日志和监控 - 了解常见问题的排查和解决方法 #### 安装教程 1. 克隆仓库:`git clone https://github.com/OpenListTeam/OpenList.git` 2. 前端安装依赖:`cd Frontend && pnpm install` 3. 后端安装依赖:`cd ../Serivce && go mod download` 4. 构建前端:`cd ../Frontend && pnpm build` 5. 构建后端:`cd ../Serivce && go build -o openlist main.go` 6. 运行服务:`./openlist server` #### 使用说明 1. 访问 `http://localhost:5244` 进入 OpenList 界面 2. 首次访问需要设置管理员账号和密码 3. 添加存储服务:在管理界面 -> 存储 -> 添加 4. 开始使用:在首页浏览和管理文件 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md 2. 项目基于 AList 分叉,保留了 AList 的核心功能 3. 支持多种存储服务的集成,包括本地存储、云存储等 4. 提供丰富的文件管理功能,如在线预览、媒体播放等 5. 支持多语言国际化 6. 提供用户认证和权限管理功能