Files
ystp/README.md

4.8 KiB
Raw Permalink Blame History

ImageForge - Rust 图片压缩服务

一个基于 Rust 的高性能图片压缩服务,提供 Web 界面 + 对外 APIAPI Key+ 计费能力,支持用户系统与管理员后台。

项目概述

核心功能

  • 图片压缩:支持 PNG/JPG/JPEG/WebP/AVIF/GIF/BMP/TIFF/ICOGIF 仅静态)
  • 批量处理:支持多图片同时上传和处理
  • 压缩率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+(前端构建)

本地开发

# 配置环境变量
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 部署

# 该 compose 仅包含 postgres/redis服务本体请按 docs/deployment.md 构建运行
docker compose -f docker/docker-compose.dev.yml up -d

文档索引

已确认清单

  • 支付渠道首期选型Stripe
  • 计费策略:硬配额(无超额按量)
  • 匿名试用:支持,每日 10 次
  • 订阅周期:按订阅周期(非自然月)
  • 邮件服务:注册验证 + 密码重置SMTP预置多服务商模板
  • 默认语言:中文
  • Free 套餐 API不开放仅 Pro/Business 可用)

待完成清单(上线前)

  • 法务页面:隐私政策、服务条款(已提供模板)
  • 域名与品牌名最终确认

License

MIT