No description
Find a file
ccbikai ac7caf141f fix: correct link copy function and add i18n support
- Updates shortLink copy function to use .value for reactive reference
- Adds i18n translation support in Editor component

The copy function was trying to access the shortLink directly instead of its value, which would fail in Vue's reactive system. This fix ensures proper reactivity handling when copying links.
2025-03-16 13:17:30 +08:00
.github chore: Update package dependencies and optimize imports 2024-07-08 20:28:38 +08:00
.vscode feat: Add internationalization (i18n) support 2025-03-03 11:21:39 +08:00
assets perf: Simple map 2024-06-08 19:07:27 +08:00
components fix: correct link copy function and add i18n support 2025-03-16 13:17:30 +08:00
docs feat: add bot traffic filtering for access logs 2025-03-16 12:57:05 +08:00
i18n refactor(links): extract sort menu and fix sort logic 2025-03-16 11:52:29 +08:00
layouts feat: init 2024-05-25 08:09:30 +08:00
middleware feat: init 2024-05-25 08:09:30 +08:00
pages feat: redirect dashboard to analysis and update nav link 2024-07-20 18:11:38 +08:00
public feat: consolidate time filtering and add advanced filters 2025-03-02 13:40:43 +08:00
schemas feat: consolidate time filtering and add advanced filters 2025-03-02 13:40:43 +08:00
scripts chore: Update package dependencies and optimize imports 2024-07-08 20:28:38 +08:00
server feat: add bot traffic filtering for access logs 2025-03-16 12:57:05 +08:00
utils style: eslint 2024-12-24 21:10:36 +08:00
.editorconfig feat: init 2024-05-25 08:09:30 +08:00
.env.example feat: disable query string redirection by default 2024-07-20 18:34:49 +08:00
.gitignore perf: The map is not packaged into the code to reduce the server size 2024-06-08 17:15:25 +08:00
.node-version fix: standardize .node-version format 2024-11-04 10:31:31 -06:00
.npmrc feat: init 2024-05-25 08:09:30 +08:00
app.config.ts chore: decrease preview link validity to 5 minutes 2025-03-12 20:10:32 +08:00
app.vue feat: add viewport meta and enhance filter styling 2025-03-02 18:10:50 +08:00
CODE_OF_CONDUCT.md feat: add Contributor Covenant Code of Conduct 2024-10-18 12:04:06 +08:00
components.json feat: init 2024-05-25 08:09:30 +08:00
error.vue feat: init 2024-05-25 08:09:30 +08:00
eslint.config.mjs chore: Update package dependencies and optimize imports 2024-07-08 20:28:38 +08:00
LICENSE feat: init 2024-05-25 08:09:30 +08:00
nuxt.config.ts feat: add bot traffic filtering for access logs 2025-03-16 12:57:05 +08:00
package.json feat: add bot traffic filtering for access logs 2025-03-16 12:57:05 +08:00
pnpm-lock.yaml feat: add bot traffic filtering for access logs 2025-03-16 12:57:05 +08:00
README.md docs: update KV Namespace setting path & add docs URL 2025-01-20 14:21:36 +05:30
renovate.json feat: init 2024-05-25 08:09:30 +08:00
tailwind.config.js fix: some style issues 2024-06-02 19:18:22 +08:00
tsconfig.json feat: init 2024-05-25 08:09:30 +08:00
wrangler.toml feat: init 2024-05-25 08:09:30 +08:00

Sink

A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.

ccbikai/Sink | Trendshift Featured on Hacker News Uneed Badge

Cloudflare Nuxt Tailwind CSS shadcn/ui

Hero


Features

  • URL Shortening: Compress your URLs to their minimal length.
  • Analytics: Monitor link analytics and gather insightful statistics.
  • Serverless: Deploy without the need for traditional servers.
  • Customizable Slug: Support for personalized slugs and case sensitivity.
  • 🪄 AI Slug: Leverage AI to generate slugs.
  • Link Expiration: Set expiration dates for your links.

🪧 Demo

Experience the demo at Sink.Cool. Log in using the Site Token below:

Site Token: SinkCool
Screenshots Analytics Links Link Analytics

🧱 Technologies Used

🚗 Roadmap [WIP]

We welcome your contributions and PRs.

  • Browser Extension - Sink Tool
  • Raycast Extension - Raycast-Sink
  • Apple Shortcuts - Sink Shortcuts
  • Enhanced Link Management (with Cloudflare D1)
  • Analytics Enhancements (Support for merging filter conditions)
  • Dashboard Performance Optimization (Infinite loading)
  • Units Test
  • Support for Other Deployment Platforms

🏗️ Deployment

Video tutorial: Watch here

  1. Fork the repository to your GitHub account.

  2. Create a project in Cloudflare Pages.

  3. Select the Sink repository and choose the Nuxt.js preset.

  4. Configure the following environment variables:

    • NUXT_SITE_TOKEN: Must be longer than 8 characters. This token grants access to your dashboard.
    • NUXT_CF_ACCOUNT_ID: Locate your account ID.
    • NUXT_CF_API_TOKEN: Create a Cloudflare API token with at least Account.Account Analytics permissions. See reference.
  5. Save and deploy the project.

  6. Cancel the deployment, then navigate to Settings -> Bindings -> Add:

    • KV Namespace: Bind the variable name KV to a KV namespace (create a new one under Storage & Databases -> KV).
    • Workers AI (Optional): Bind the variable name AI to the Workers AI Catalog.
    • Analytics Engine:
      • In Workers & Pages, go to Account details on the right side, find Analytics Engine, and click Set up to enable the free version.
      • Return to Settings -> Bindings -> Add and select Analytics engine.
      • Bind the variable name ANALYTICS to the sink dataset.
  7. Redeploy the project.

  8. Update code, refer to the official GitHub documentation Syncing a fork branch from the web UI.

⚒️ Configuration

Configuration Docs

🔌 API

API Docs

🙋🏻 FAQs

FAQs

💖 Credits

  1. Cloudflare
  2. NuxtHub
  3. Astroship

Sponsor

  1. Follow Me on X(Twitter).
  2. Become a sponsor to on GitHub.