# ImageForge - Rust 图片压缩服务 一个基于 Rust 的高性能图片压缩服务,提供 Web 界面 + 对外 API(API Key)+ 计费能力,支持用户系统与管理员后台。 ## 项目概述 ### 核心功能 - **图片压缩**:支持 PNG/JPG/JPEG/WebP/AVIF/GIF/BMP/TIFF/ICO(GIF 仅静态) - **批量处理**:支持多图片同时上传和处理 - **压缩率**:1-100(数值越大压缩越强) - **用户系统**:注册、登录、API Key 管理 - **计费与用量**:套餐/订阅/配额/发票 - **管理员后台**:用户管理、系统监控、配置管理 ### 技术栈 | 层级 | 技术选型 | 说明 | |------|----------|------| | 后端框架 | Axum | 高性能异步 Web 框架 | | 图片处理 | image-rs + oxipng + webp + ravif | PNG/WebP/AVIF 编解码与优化 | | 数据库 | PostgreSQL + SQLx | 类型安全的异步数据库 | | 缓存/队列 | Redis | 会话管理、限流、任务队列(Streams) | | 前端 | Vue3 + TypeScript | SPA 单页应用 | | 认证 | JWT + API Key | 双重认证机制 | | 存储 | S3 兼容 / 本地 | 对象存储 + 预签名 URL(推荐) | | 计费 | Stripe | Checkout/Portal/Webhook | ## 目录结构 > 说明:以下为目标目录结构(规划),会随实现逐步补齐。 ``` imageforge/ ├── Cargo.toml ├── src/ │ ├── main.rs # 入口 │ ├── config.rs # 配置管理 │ ├── error.rs # 错误处理 │ ├── lib.rs │ │ │ ├── api/ # API 路由 │ │ ├── mod.rs │ │ ├── auth.rs # 认证相关 │ │ ├── compress.rs # 压缩相关 │ │ ├── user.rs # 用户相关 │ │ └── admin.rs # 管理员相关 │ │ │ ├── services/ # 业务逻辑 │ │ ├── mod.rs │ │ ├── compress.rs # 压缩服务 │ │ ├── auth.rs # 认证服务 │ │ ├── user.rs # 用户服务 │ │ └── storage.rs # 存储服务 │ │ │ ├── models/ # 数据模型 │ │ ├── mod.rs │ │ ├── user.rs │ │ ├── image.rs │ │ └── api_key.rs │ │ │ ├── compress/ # 压缩核心 │ │ ├── mod.rs │ │ ├── png.rs # PNG 压缩(oxipng + pngquant) │ │ ├── jpeg.rs # JPEG 压缩(mozjpeg) │ │ ├── webp.rs # WebP 压缩 │ │ └── avif.rs # AVIF 压缩 │ │ │ └── middleware/ # 中间件 │ ├── mod.rs │ ├── auth.rs # 认证中间件 │ └── rate_limit.rs # 限流中间件 │ ├── migrations/ # 数据库迁移 ├── static/ # 静态资源 ├── frontend/ # 前端项目 └── docker/ # Docker 配置 ``` ## 快速开始 ### 环境要求 - Rust(建议使用最新 stable;当前依赖链要求较新的 Rust,建议 `>= 1.85`) - PostgreSQL 16+ - Redis 7+ - Node.js 20+(前端构建) ### 本地开发 ```bash # 配置环境变量 cp .env.example .env # 启动 PostgreSQL / Redis(开发) docker compose -f docker/docker-compose.dev.yml up -d # 初始化数据库 psql "$DATABASE_URL" -f migrations/001_init.sql # 启动后端 cargo run # 启动前端(另一个终端) cd frontend && npm run dev ``` ### Docker 部署 ```bash # 该 compose 仅包含 postgres/redis,服务本体请按 docs/deployment.md 构建运行 docker compose -f docker/docker-compose.dev.yml up -d ``` ## 文档索引 - [开工前确认清单](./docs/confirm.md) - [产品需求(PRD)](./docs/prd.md) - [技术架构设计](./docs/architecture.md) - [API 接口文档](./docs/api.md) - [数据库设计](./docs/database.md) - [前端设计](./docs/frontend.md) - [UI/UX 设计](./docs/ui.md) - [计费与用量设计](./docs/billing.md) - [安全与风控](./docs/security.md) - [邮件服务](./docs/email.md) - [可观测性](./docs/observability.md) - [部署指南](./docs/deployment.md) - [服务条款(模板)](./docs/terms.md) - [隐私政策(模板)](./docs/privacy.md) ## 已确认清单 - [x] 支付渠道首期选型:Stripe - [x] 计费策略:硬配额(无超额按量) - [x] 匿名试用:支持,每日 10 次 - [x] 订阅周期:按订阅周期(非自然月) - [x] 邮件服务:注册验证 + 密码重置(SMTP,预置多服务商模板) - [x] 默认语言:中文 - [x] Free 套餐 API:不开放(仅 Pro/Business 可用) ## 待完成清单(上线前) - [x] 法务页面:隐私政策、服务条款(已提供模板) - [ ] 域名与品牌名最终确认 ## License MIT