跳转至

Shortener

License: Apache-2.0 Rust GitHub

使用 Rust 编写的高性能 URL 短链接服务,提供完整的 Web 服务器、前端界面和命令行管理工具。

✨ 特性

  • 🚀 高性能: 基于 Rust 和 async/await,实现最大吞吐量
  • 💾 多数据库: 支持 SQLite、PostgreSQL 和 MySQL
  • 缓存加速: 集成 Redis/Valkey 提升性能
  • 🌍 地理位置: 使用 ip2region 追踪访客地理信息
  • 🔒 安全认证: API 密钥和 JWT 令牌双重支持
  • 📊 访问分析: 全面的访问历史追踪
  • 🎨 现代前端: 基于 React + Semi Design 的管理界面
  • 💻 CLI 工具: 易用的命令行管理工具
  • 🐳 容器化: Docker 和 Docker Compose 支持
  • 📦 跨平台: 支持 Linux、macOS 和 Windows

📦 项目组成

本项目采用 monorepo 结构,包含以下子项目:

项目 说明 技术栈
shortener-server RESTful API 服务器 Rust + Axum + SeaORM
shortener-frontend Web 管理界面 React + TypeScript + Semi Design
shortener-cli 命令行管理工具 Rust + Clap
shortener-common 共享类型和工具 Rust

🚀 快速开始

一键安装(推荐)

curl -sSL https://raw.githubusercontent.com/jetsung/shortener/main/scripts/install.sh | bash

使用 Docker

# 克隆仓库
git clone https://github.com/jetsung/shortener.git
cd shortener

# 启动服务
docker compose -f docker/docker-compose.yml up -d

访问 http://localhost:8080 开始使用。

从源码构建

# 克隆仓库
git clone https://github.com/jetsung/shortener.git
cd shortener

# 构建并运行服务器
cargo run --release -p shortener-server

# 在另一个终端,初始化 CLI
cargo run -p shortener-cli -- init

# 创建短链接
cargo run -p shortener-cli -- create https://example.com

📚 文档

本地查看文档

# 安装依赖
pip install -r requirements.txt

# 启动文档服务器
mkdocs serve

# 访问 http://127.0.0.1:8000

🛠️ 开发

环境要求

  • Rust 1.90+
  • Node.js 18+ (前端开发)
  • pnpm 8+ (前端开发)

开发服务器

# 后端开发
cargo watch -x 'run -p shortener-server'

# 前端开发
cd shortener-frontend
pnpm dev

代码质量

# 格式化
cargo fmt

# 代码检查
cargo clippy -- -D warnings

# 运行测试
cargo test

# 前端测试
cd shortener-frontend
pnpm test

🤝 贡献

欢迎贡献!请查看 贡献指南 了解详情。

📄 许可证

本项目采用 Apache-2.0 许可证 - 详见 LICENSE 文件。

👤 作者

Jetsung Chan i@jetsung.com

🙏 致谢


使用 ❤️ 和 Rust 构建