237899745 03b3a08185
Some checks failed
CI / verify (push) Has been cancelled
fix: bound large WebP lossless probe cost
2026-07-26 12:22:53 +08:00
2026-07-25 18:42:51 +08:00

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                # API / Worker 进程入口
│   ├── auth.rs                # JWT 签发与解析
│   ├── config.rs              # 环境变量配置
│   ├── error.rs               # 统一错误响应
│   ├── api/                   # HTTP 路由、鉴权、压缩、管理后台
│   ├── services/              # 压缩、存储、计费、限速、邮件等服务
│   └── worker/                # Redis Streams 消费与任务处理
├── migrations/                # SQLx 数据库迁移
├── frontend/src/              # Vue3 管理端与用户端
├── docker/                    # 镜像、Compose 与 Nginx 配置
├── docs/                      # 设计、API、部署与运维文档
└── scripts/                   # 部署和质量回归脚本

快速开始

环境要求

  • 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%