一个现代化的企业级网络文件系统,支持团队协作、文件共享和权限管理。
- 📁 文件管理: 完整的文件和文件夹管理(上传、下载、重命名、移动、删除)
- 👥 团队协作: 创建团队、管理成员、角色权限控制
- 🔗 文件共享: 支持文件共享到团队,团队成员可访问
- 🔐 权限管理: 基于角色的访问控制(Owner、Admin、Member)
- 📊 存储统计: 实时存储空间使用统计
- 🗑️ 回收站: 删除的文件可恢复
- 📝 审计日志: 完整的操作日志记录
- 🚀 高性能: MinIO对象存储 + PostgreSQL数据库
- 🔒 安全性: JWT认证、密码加密、HTTPS支持
- 📱 响应式: 支持桌面和移动端访问
- 🎨 现代UI: Material-UI设计,流畅的用户体验
- 🐳 容器化: Docker部署,易于扩展
- 框架: FastAPI (Python 3.12)
- 数据库: PostgreSQL 15
- 对象存储: MinIO
- 缓存: Redis
- 认证: JWT
- ORM: SQLAlchemy
- 进程管理: Supervisor
- 框架: React 18 + TypeScript
- UI库: Material-UI (MUI)
- 构建工具: Vite
- 状态管理: React Hooks
- HTTP客户端: Axios
- Docker & Docker Compose
- Node.js 18+ (用于前端开发)
- Python 3.12+ (用于后端开发)
- 克隆仓库
git clone git@github.com:lll-hhh/-.git
cd newkeshe- 启动服务
docker-compose up -d- 访问应用
- 前端: http://localhost:5173
- 后端API: http://localhost:8000
- MinIO控制台: http://localhost:9001
cd server
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python -m gateway.appcd client
npm install
npm run dev系统预置了5个测试用户和3个团队:
| 用户 | 邮箱 | 密码 | 角色 |
|---|---|---|---|
| Alice | alice@example.com | Alice123! | 管理员 |
| Bob | bob@example.com | Bob123! | 开发者 |
| Charlie | charlie@example.com | Charlie123! | 设计师 |
| Diana | diana@example.com | Diana123! | 测试员 |
| Eve | eve@example.com | Eve123! | 产品经理 |
- 技术开发团队 - Alice(Owner), Bob(Admin), Charlie(Member)
- 产品设计团队 - Charlie(Owner), Diana(Admin)
- 测试团队 - Diana(Owner), Eve(Member)
newkeshe/
├── client/ # 前端代码
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API服务
│ │ └── types/ # TypeScript类型
│ └── package.json
├── server/ # 后端代码
│ ├── gateway/ # API网关
│ ├── services/ # 微服务
│ │ ├── auth/ # 认证服务
│ │ ├── meta/ # 元数据服务
│ │ ├── storage/ # 存储服务
│ │ ├── team/ # 团队服务
│ │ └── share/ # 分享服务
│ ├── common/ # 公共模块
│ └── migrations/ # 数据库迁移
├── docker-compose.yml # Docker编排文件
└── README.md
启动服务后访问:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /auth/register- 用户注册POST /users/login- 用户登录GET /users/me- 获取当前用户信息
GET /files/root- 获取根目录文件列表POST /files/directories- 创建文件夹POST /files/upload/init- 初始化文件上传PUT /files/{node_id}/move- 移动文件DELETE /files/{node_id}- 删除文件
GET /teams/- 获取我的团队列表POST /teams/- 创建团队GET /teams/{team_id}- 获取团队详情GET /teams/{team_id}/files- 获取团队共享文件POST /teams/{team_id}/members- 添加团队成员
POST /files/{node_id}/share-to-team- 共享文件到团队DELETE /files/{node_id}/share-from-team- 取消团队共享
创建 .env 文件配置以下变量:
# 数据库
POSTGRES_USER=nfs_user
POSTGRES_PASSWORD=nfs_password
POSTGRES_DB=nfs_db
# MinIO
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123
# Redis
REDIS_PASSWORD=redis_password
# JWT
JWT_SECRET=your-secret-key-change-in-production- 遵循PEP 8代码规范
- 使用类型提示
- 编写单元测试
- 记录审计日志
- 遵循React Hooks最佳实践
- 使用TypeScript严格模式
- 组件化开发
- 响应式设计
参考以下文档:
欢迎提交Issue和Pull Request!
MIT License
如有问题,请提交Issue或联系维护者。
注意: 这是一个课程设计项目,请勿用于生产环境。