{"id":50371698,"url":"https://github.com/hczs/tiny-url-app","last_synced_at":"2026-05-30T07:04:48.189Z","repository":{"id":271169013,"uuid":"911443238","full_name":"hczs/tiny-url-app","owner":"hczs","description":"🚀 短网址服务 Web App（基于JDK21 + SpringBoot3 + Spring WebFlux + R2DBC + Redisson + GraaLVM Native Image + Next.js + shadcn/ui 开发）","archived":false,"fork":false,"pushed_at":"2025-03-20T07:53:10.000Z","size":233,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T08:37:36.666Z","etag":null,"topics":["graalvm","graalvm-native-image","java","jdk21","nextjs","r2dbc-mysql","react","shadcn-ui","springboot3","tiny-url","typescript","webflux"],"latest_commit_sha":null,"homepage":"https://tiny.powercheng.fun/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hczs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-03T03:12:45.000Z","updated_at":"2025-03-20T07:53:14.000Z","dependencies_parsed_at":"2025-01-06T02:34:14.762Z","dependency_job_id":"38313e8a-188d-4189-9326-ef74a89165ce","html_url":"https://github.com/hczs/tiny-url-app","commit_stats":null,"previous_names":["hczs/tiny-url-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hczs/tiny-url-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hczs%2Ftiny-url-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hczs%2Ftiny-url-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hczs%2Ftiny-url-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hczs%2Ftiny-url-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hczs","download_url":"https://codeload.github.com/hczs/tiny-url-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hczs%2Ftiny-url-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33683025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graalvm","graalvm-native-image","java","jdk21","nextjs","r2dbc-mysql","react","shadcn-ui","springboot3","tiny-url","typescript","webflux"],"created_at":"2026-05-30T07:04:47.337Z","updated_at":"2026-05-30T07:04:48.181Z","avatar_url":"https://github.com/hczs.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 短网址生成器（Tiny Url App）\n![cheng-tiny-url-web-app](https://github.com/user-attachments/assets/d26d18ca-5608-4dd2-a021-9d52617583c7)\n## 主要特性\n- 提供两种网址缩短方案，可根据需要自行选择：\n  - 分布式唯一ID + Base62：短编码最长到 9 位，常规长度在 8 位，优势生成简单快速，劣势就是短编码 8 位，会稍微长一点\n  - MurMurHash3 32 位 + Base62：短编码长度稳定在 6 位，优势是短编码足够短，但是需要额外操作，使用布隆过滤器处理哈希碰撞问题\n- 提供了一套简单易用的 UI 界面\n- 部署简单：后端部署可以直接 Docker 一键部署启动，前端可以直接 Vercel 部署，如果有自己域名可以配置，还免去了申请 SSL 证书、网站备案等繁琐操作\n- 性能强劲：使用 GraaLVM Native Image 打包方式，项目启动时间仅 0.29 秒；使用 Spring WebFlux 框架，应用有更优秀的并发性能\n## 体验站点\n- Vercel 站点：https://tiny-url-app.vercel.app/\n- 国内站点：http://101.126.68.192:31006/\n## 程序部署\n### 后端部署\n环境说明：\n- Docker: Docker version 25.0.5\n- MySQL: MySQL 8.4.3 并自行创建 tiny_url 库，执行初始化脚本 tiny-url-app-backend/src/main/resources/sql/t_url_mapping.sql\n- Redis: v7.4.1\n\n在服务器创建 tiny-url-app 文件夹，建立 config 目录，在 config 目录中创建 application.yml 和 application-prod.yml 文件，写入以下内容，并根据实际情况配置 MySQL 和 Redis 的地址及端口\n\napplication.yml\n```yml\nspring:\n  # app name\n  application:\n    name: tiny-url-app-backend\n\n  profiles:\n    active: dev\n```\napplication-prod.yml\n```yml\nspring:\n  # database info\n  r2dbc:\n    url: r2dbc:mysql://127.0.0.1:3306/tiny_url?useSSL=false\n    username: root\n    password: xxx\n    pool:\n      initial-size: 5\n      max-size: 20\n      max-idle-time: 30m\n\n  # redis\n  data:\n    redis:\n      host: 127.0.0.1\n      port: 6379\n      password: xxx\n\ntiny-url-app:\n  # reference fun.powercheng.url.tiny.enums.ShortenerTypeEnum\n  shortener-type: MURMUR32_WITH_BASE62\n  # 如果用 UNIQUE_ID_WITH_BASE62 必须配置 worker id\n  worker-id: 1\n  # global cache config\n  cache-config:\n    cache-duration: 3\n    duration-unit: hours\n```\n在 config 同级目录下运行下面的命令，启动后端服务\n```shell\ndocker run -d -p 8080:8080  -v ./config:/config -v ./log:/app/log hsunnyc/tiny-url-app-backend\n```\n### 前端部署\n首先 fork 本项目\n\n访问 Vercel 平台：https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme\n\n登录自己的 GitHub 账号后，可选择自己的仓库，点击 import\n![image](https://github.com/user-attachments/assets/c4197f47-f4ff-4467-923b-69d17219f847)\n选择 Next.js 框架，选择项目的 frontend 目录，点击 Deploy 即可开始部署\n![image](https://github.com/user-attachments/assets/38b65488-c4eb-4fab-83ec-2d104fd9e9be)\n部署完成后，在 Vercel 的项目主界面中，点击 Settings 菜单，设置后端 API 的地址：\n- key 是 NEXT_PUBLIC_API_PROXY_URL\n- Value 是你的后端地址，例如 http://x.x.x.x:8080\n![image](https://github.com/user-attachments/assets/f09df23d-9ac6-41ec-b962-1082f0a46c88)\n至此，项目部署完成\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhczs%2Ftiny-url-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhczs%2Ftiny-url-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhczs%2Ftiny-url-app/lists"}