ImageForge - Rust 图片压缩服务

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

项目概述

核心功能

  • 图片压缩:支持 PNG/JPG/JPEG/WebP/AVIF/GIF/BMP/TIFF/ICO仅静态图片支持格式转换
  • 批量处理:支持多图片同时上传和处理
  • 压缩率1-100JPEG/WebP/AVIF 以该比例为体积上限;无损格式按安全方式尽力优化)
  • 用户系统注册、登录、可开关邮箱验证、API Key 管理
  • 兑换码:套餐卡、限时次数卡、批量生成、停用与兑换审计
  • 计费与用量:套餐/订阅/配额/发票
  • 管理员后台用户管理、系统监控、配置管理、S3 多端点管理与连通性测试
  • 对象存储Garage/MinIO/AWS S3 兼容,私有 Bucket + 短期签名直连下载

技术栈

层级 技术选型 说明
后端框架 Axum 高性能异步 Web 框架
图片处理 image-rs + oxipng + webp + ravif PNG/WebP/AVIF 编解码与优化
数据库 PostgreSQL + SQLx 类型安全的异步数据库
缓存/队列 Redis 会话管理、限流、任务队列Streams
前端 Vue3 + TypeScript SPA 单页应用
认证 JWT + API Key 双重认证机制
存储 本地文件系统 + AWS S3 SDK 支持动态 S3 端点、分片上传、签名下载和本地回退
计费 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当前依赖链要求 >= 1.91,生产镜像使用 1.92
  • PostgreSQL 16+
  • Redis 7+
  • Node.js 22+(前端构建)

本地开发

# 配置环境变量
cp .env.example .env

# 启动 PostgreSQL / Redis开发
docker compose -f docker/docker-compose.dev.yml up -d

# 首次启动时会自动按顺序执行 migrations/ 下的全部迁移

# 启动后端
cargo run

# 启动前端(另一个终端)
cd frontend && npm run dev

Docker 部署

cp docker/.env.production.example .env.production
# 修改全部密钥与 PUBLIC_BASE_URL 后启动完整生产栈
docker compose --env-file .env.production -f docker/docker-compose.prod.yml up -d --build
curl --fail http://127.0.0.1:8080/health

详细配置、更新、备份与真实图片质量回归见 部署指南

文档索引

已确认清单

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

待完成清单(上线前)

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

License

MIT

Description
No description provided
Readme 2.6 MiB
Languages
Rust 76.8%
Vue 16.3%
TypeScript 2.8%
PLpgSQL 1.7%
Python 1.4%
Other 0.9%