{"id":28344127,"url":"https://github.com/apts-1547/shortlinker","last_synced_at":"2026-02-08T21:18:48.894Z","repository":{"id":295541693,"uuid":"990379744","full_name":"AptS-1547/shortlinker","owner":"AptS-1547","description":"A lightning-fast URL shortener built with Rust, featuring HTTP 307 redirects and a clean, modern UI.","archived":false,"fork":false,"pushed_at":"2025-06-18T21:37:41.000Z","size":4332,"stargazers_count":11,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-18T22:29:29.701Z","etag":null,"topics":["api","docker","hackable","high-performance","lightweight","link-management","redirect","rust","shortener","sqlite"],"latest_commit_sha":null,"homepage":"https://esap.cc/docs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AptS-1547.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-26T03:08:08.000Z","updated_at":"2025-06-18T21:37:45.000Z","dependencies_parsed_at":"2025-06-09T18:33:27.582Z","dependency_job_id":null,"html_url":"https://github.com/AptS-1547/shortlinker","commit_stats":null,"previous_names":["apts-1547/shortlinker"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/AptS-1547/shortlinker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AptS-1547%2Fshortlinker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AptS-1547%2Fshortlinker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AptS-1547%2Fshortlinker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AptS-1547%2Fshortlinker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AptS-1547","download_url":"https://codeload.github.com/AptS-1547/shortlinker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AptS-1547%2Fshortlinker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261084043,"owners_count":23107246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api","docker","hackable","high-performance","lightweight","link-management","redirect","rust","shortener","sqlite"],"created_at":"2025-05-27T08:00:06.257Z","updated_at":"2026-02-01T17:13:43.448Z","avatar_url":"https://github.com/AptS-1547.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shortlinker\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/AptS-1547/shortlinker)](https://github.com/AptS-1547/shortlinker/releases)\n[![Rust Release](https://img.shields.io/github/actions/workflow/status/AptS-1547/shortlinker/rust-release.yml?label=rust%20release)](https://github.com/AptS-1547/shortlinker/actions/workflows/rust-release.yml)\n[![Docker Build](https://img.shields.io/github/actions/workflow/status/AptS-1547/shortlinker/docker-image.yml?label=docker%20build)](https://github.com/AptS-1547/shortlinker/actions/workflows/docker-image.yml)\n[![CodeFactor](https://www.codefactor.io/repository/github/apts-1547/shortlinker/badge)](https://www.codefactor.io/repository/github/apts-1547/shortlinker)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Docker Pulls](https://img.shields.io/docker/pulls/e1saps/shortlinker)](https://hub.docker.com/r/e1saps/shortlinker)\n\nA minimalist URL shortener service supporting HTTP 307 redirection, built with Rust.\n\n[English](README.md) | [中文](README.zh.md)\n\n![admin-panel-dashboard](assets/admin-panel-dashboard.jpeg)\n\n\u003c/div\u003e\n\n## Features\n\n- High performance with Rust + Actix-web\n- Multiple storage backends: SQLite, MySQL, PostgreSQL\n- Dynamic link management without restart\n- Custom and random short codes\n- Expiration support with flexible time formats\n- Password-protected links\n- Admin API with Bearer token authentication\n- Web admin panel\n- TUI mode for terminal users\n- Docker and Unix socket support\n\n## Quick Start\n\n**Docker:**\n\n```bash\ndocker run -d -p 8080:8080 -v $(pwd)/data:/data e1saps/shortlinker\n```\n\n**Local:**\n\n```bash\ngit clone https://github.com/AptS-1547/shortlinker \u0026\u0026 cd shortlinker\ncargo run\n```\n\n## CLI Usage\n\n```bash\n./shortlinker                                    # Start server\n./shortlinker tui                                # TUI mode (requires 'tui' feature)\n./shortlinker add github https://github.com     # Custom code\n./shortlinker add https://example.com           # Random code\n./shortlinker add secret https://example.com --password mypass  # Password protected\n./shortlinker add temp https://example.com --expire 7d          # Expires in 7 days\n./shortlinker list                              # List all links\n./shortlinker remove github                     # Remove link\n./shortlinker export links.json                 # Export to JSON\n./shortlinker import links.json                 # Import from JSON\n```\n\n## Admin API\n\n```bash\n# Set token\nexport ADMIN_TOKEN=your_secret_token\n\n# List all links\ncurl -H \"Authorization: Bearer $ADMIN_TOKEN\" http://localhost:8080/admin/v1/links\n\n# Create link\ncurl -X POST -H \"Authorization: Bearer $ADMIN_TOKEN\" \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"code\":\"github\",\"target\":\"https://github.com\",\"expires_at\":\"7d\"}' \\\n     http://localhost:8080/admin/v1/links\n\n# Delete link\ncurl -X DELETE -H \"Authorization: Bearer $ADMIN_TOKEN\" \\\n     http://localhost:8080/admin/v1/links/github\n```\n\nSee [Admin API docs](docs/en/api/admin.md) for batch operations, runtime config, and more.\n\n## Configuration\n\nGenerate a config file:\n\n```bash\n./shortlinker generate-config\n```\n\nThis creates `config.toml` with server, database, cache, and logging settings.\n\nSee [Configuration docs](docs/en/config/index.md) for all options.\n\n## Documentation\n\n- [Getting Started](docs/en/guide/getting-started.md)\n- [Configuration](docs/en/config/index.md)\n- [Storage Backends](docs/en/config/storage.md)\n- [Admin API](docs/en/api/admin.md)\n- [Health API](docs/en/api/health.md)\n- [Docker Deployment](docs/en/deployment/docker.md)\n- [systemd Service](docs/en/deployment/systemd.md)\n- [CLI Commands](docs/en/cli/commands.md)\n\n## Related\n\n- [Web Admin Panel](admin-panel/) - GUI for link management\n- [Custom Frontend Template](https://github.com/AptS-1547/shortlinker-frontend/) - Build your own frontend\n- [Cloudflare Worker](cf-worker/) - Serverless version\n\n### Custom Frontend\n\nPlace your custom frontend in `./frontend-panel` directory. Shortlinker will automatically detect and serve it instead of the built-in panel. See [Admin Panel docs](docs/en/admin-panel/index.md) for parameter injection details.\n\n## License\n\nMIT License © AptS:1547\n\n\u003cpre\u003e\n        ／＞　 フ\n       | 　_　_|    AptS:1547\n     ／` ミ＿xノ    — shortlinker assistant bot —\n    /　　　　 |\n   /　 ヽ　　 ﾉ      Rust / SQLite / Bloom / CLI\n   │　　|　|　|\n／￣|　　 |　|　|\n(￣ヽ＿_ヽ_)__)\n＼二)\n\n   「ready to 307 !」\n\u003c/pre\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapts-1547%2Fshortlinker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapts-1547%2Fshortlinker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapts-1547%2Fshortlinker/lists"}