{"id":13720801,"url":"https://github.com/ccbikai/sink","last_synced_at":"2025-05-13T16:12:13.381Z","repository":{"id":241387532,"uuid":"796284842","full_name":"ccbikai/Sink","owner":"ccbikai","description":"⚡ A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.","archived":false,"fork":false,"pushed_at":"2025-04-13T04:21:47.000Z","size":3049,"stargazers_count":4230,"open_issues_count":35,"forks_count":2564,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-23T22:58:27.112Z","etag":null,"topics":["analytics","bitly-alternative","cloudflare","hacktoberfest","link-shortener","nuxt","nuxthub","shadcn-ui","tailwindcss","url-shortener","web-analytics"],"latest_commit_sha":null,"homepage":"https://Sink.Cool","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccbikai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":"ccbikai","buy_me_a_coffee":"ccbikai"}},"created_at":"2024-05-05T13:53:54.000Z","updated_at":"2025-04-23T22:03:37.000Z","dependencies_parsed_at":"2025-04-09T19:04:25.719Z","dependency_job_id":null,"html_url":"https://github.com/ccbikai/Sink","commit_stats":{"total_commits":58,"total_committers":8,"mean_commits":7.25,"dds":0.5,"last_synced_commit":"12e3e7c7bc43f63ded96cc358f5fb1de31f21987"},"previous_names":["ccbikai/sink"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccbikai%2FSink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccbikai%2FSink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccbikai%2FSink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccbikai%2FSink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccbikai","download_url":"https://codeload.github.com/ccbikai/Sink/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250528726,"owners_count":21445514,"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":["analytics","bitly-alternative","cloudflare","hacktoberfest","link-shortener","nuxt","nuxthub","shadcn-ui","tailwindcss","url-shortener","web-analytics"],"created_at":"2024-08-03T01:01:08.186Z","updated_at":"2025-04-23T22:58:49.927Z","avatar_url":"https://github.com/ccbikai.png","language":"Vue","funding_links":["https://github.com/sponsors/ccbikai","https://buymeacoffee.com/ccbikai"],"categories":["Self Hosting Opensource","Apps","Self-Hosted Solutions"],"sub_categories":["Tools","Niche \u0026 Specialized"],"readme":"# ⚡ Sink\n\n**A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.**\n\n\u003ca href=\"https://trendshift.io/repositories/10421\" target=\"_blank\"\u003e\n  \u003cimg\n    src=\"https://trendshift.io/api/badge/repositories/10421\"\n    alt=\"ccbikai/Sink | Trendshift\"\n    width=\"250\"\n    height=\"55\"\n  /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://news.ycombinator.com/item?id=40843683\" target=\"_blank\"\u003e\n  \u003cimg\n    src=\"https://hackernews-badge.vercel.app/api?id=40843683\"\n    alt=\"Featured on Hacker News\"\n    width=\"250\"\n    height=\"55\"\n  /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.uneed.best/tool/sink\" target=\"_blank\"\u003e\n  \u003cimg\n    src=\"https://www.uneed.best/POTW1.png\"\n    alt=\"Uneed Badge\"\n    height=\"55\"\n  /\u003e\n\u003c/a\u003e\n\n![Cloudflare](https://img.shields.io/badge/Cloudflare-F69652?style=flat\u0026logo=cloudflare\u0026logoColor=white)\n![Nuxt](https://img.shields.io/badge/Nuxt-00DC82?style=flat\u0026logo=nuxtdotjs\u0026logoColor=white)\n![Tailwind CSS](https://img.shields.io/badge/Tailwind%20CSS-06B6D4?style=flat\u0026logo=tailwindcss\u0026logoColor=white)\n![shadcn/ui](https://img.shields.io/badge/shadcn/ui-000000?style=flat\u0026logo=shadcnui\u0026logoColor=white)\n\n![Hero](./public/image.png)\n\n----\n\n## ✨ Features\n\n- **URL Shortening:** Compress your URLs to their minimal length.\n- **Analytics:** Monitor link analytics and gather insightful statistics.\n- **Serverless:** Deploy without the need for traditional servers.\n- **Customizable Slug:** Support for personalized slugs and case sensitivity.\n- **🪄 AI Slug:** Leverage AI to generate slugs.\n- **Link Expiration:** Set expiration dates for your links.\n\n## 🪧 Demo\n\nExperience the demo at [Sink.Cool](https://sink.cool/dashboard). Log in using the Site Token below:\n\n```txt\nSite Token: SinkCool\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eScreenshots\u003c/b\u003e\u003c/summary\u003e\n  \u003cimg alt=\"Analytics\" src=\"./docs/images/sink.cool_dashboard.png\"/\u003e\n  \u003cimg alt=\"Links\" src=\"./docs/images/sink.cool_dashboard_links.png\"/\u003e\n  \u003cimg alt=\"Link Analytics\" src=\"./docs/images/sink.cool_dashboard_link_slug.png\"/\u003e\n\u003c/details\u003e\n\n## 🧱 Technologies Used\n\n- **Framework**: [Nuxt](https://nuxt.com/)\n- **Database**: [Cloudflare Workers KV](https://developers.cloudflare.com/kv/)\n- **Analytics Engine**: [Cloudflare Workers Analytics Engine](https://developers.cloudflare.com/analytics/)\n- **UI Components**: [Shadcn-vue](https://www.shadcn-vue.com/)\n- **Styling:** [Tailwind CSS](https://tailwindcss.com/)\n- **Deployment**: [Cloudflare](https://www.cloudflare.com/)\n\n## 🚗 Roadmap [WIP]\n\nWe welcome your contributions and PRs.\n\n- [x] Browser Extension\n      - [Sink Tool](https://github.com/zhuzhuyule/sink-extension)\n- [x] Raycast Extension\n      - [Raycast-Sink](https://github.com/foru17/raycast-sink)\n- [x] Apple Shortcuts\n      - [Sink Shortcuts](https://s.search1api.com/sink001)\n- [ ] Enhanced Link Management (with Cloudflare D1)\n- [ ] Analytics Enhancements (Support for merging filter conditions)\n- [ ] Dashboard Performance Optimization (Infinite loading)\n- [ ] Units Test\n- [ ] Support for Other Deployment Platforms\n\n## 🏗️ Deployment\n\n\u003e Video tutorial: [Watch here](https://www.youtube.com/watch?v=MkU23U2VE9E)\n\n1. [Fork](https://github.com/ccbikai/Sink/fork) the repository to your GitHub account.\n2. Create a project in [Cloudflare Pages](https://developers.cloudflare.com/pages/).\n3. Select the `Sink` repository and choose the `Nuxt.js` preset.\n4. Configure the following environment variables:\n   - `NUXT_SITE_TOKEN`: Must be longer than **8** characters. This token grants access to your dashboard.\n   - `NUXT_CF_ACCOUNT_ID`: Locate your [account ID](https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/).\n   - `NUXT_CF_API_TOKEN`: Create a [Cloudflare API token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) with at least `Account.Account Analytics` permissions. [See reference.](https://developers.cloudflare.com/analytics/analytics-engine/sql-api/#authentication)\n\n5. Save and deploy the project.\n6. Cancel the deployment, then navigate to **Settings** -\u003e **Bindings** -\u003e **Add**:\n   - **KV Namespace**: Bind the variable name `KV` to a [KV namespace](https://developers.cloudflare.com/kv/) (create a new one under **Storage \u0026 Databases** -\u003e **KV**). \n   - **Workers AI** (_Optional_): Bind the variable name `AI` to the Workers AI Catalog.\n   - **Analytics Engine**:\n     - In **Workers \u0026 Pages**, go to **Account details** on the right side, find `Analytics Engine`, and click `Set up` to enable the free version.\n     - Return to **Settings** -\u003e **Bindings** -\u003e **Add** and select **Analytics engine**.\n     - Bind the variable name `ANALYTICS` to the `sink` dataset.\n\n7. Redeploy the project.\n8. Update code, refer to the official GitHub documentation [Syncing a fork branch from the web UI](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork#syncing-a-fork-branch-from-the-web-ui).\n\n## ⚒️ Configuration\n\n[Configuration Docs](./docs/configuration.md)\n\n## 🔌 API\n\n[API Docs](./docs/api.md)\n\n## 🙋🏻 FAQs\n\n[FAQs](./docs/faqs.md)\n\n## 💖 Credits\n\n1. [**Cloudflare**](https://www.cloudflare.com/)\n2. [**NuxtHub**](https://hub.nuxt.com/)\n3. [**Astroship**](https://astroship.web3templates.com/)\n\n## ☕ Sponsor\n\n1. [Follow Me on X(Twitter)](https://404.li/kai).\n2. [Become a sponsor to on GitHub](https://github.com/sponsors/ccbikai).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccbikai%2Fsink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccbikai%2Fsink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccbikai%2Fsink/lists"}