{"id":13618234,"url":"https://github.com/cxumol/URLinkCat","last_synced_at":"2025-04-14T10:31:15.665Z","repository":{"id":46317615,"uuid":"417718746","full_name":"cxumol/URLinkCat","owner":"cxumol","description":"URL Link Catalog, lightweight multi-user cloud bookmark app running on serverless platform, made for speed and easy-to-use","archived":false,"fork":false,"pushed_at":"2023-11-25T03:47:54.000Z","size":138,"stargazers_count":26,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-08T03:36:41.651Z","etag":null,"topics":["cf-pages","cf-workers","cloudflare","cloudflare-workers","linktree","linktree-alternative","self-hosted","svelte"],"latest_commit_sha":null,"homepage":"https://urlinkcat.pages.dev/#demo","language":"Svelte","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/cxumol.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}},"created_at":"2021-10-16T04:45:52.000Z","updated_at":"2024-07-31T08:24:35.000Z","dependencies_parsed_at":"2023-11-25T04:25:52.223Z","dependency_job_id":null,"html_url":"https://github.com/cxumol/URLinkCat","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cxumol%2FURLinkCat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cxumol%2FURLinkCat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cxumol%2FURLinkCat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cxumol%2FURLinkCat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cxumol","download_url":"https://codeload.github.com/cxumol/URLinkCat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248862610,"owners_count":21173838,"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":["cf-pages","cf-workers","cloudflare","cloudflare-workers","linktree","linktree-alternative","self-hosted","svelte"],"created_at":"2024-08-01T20:01:56.766Z","updated_at":"2025-04-14T10:31:13.173Z","avatar_url":"https://github.com/cxumol.png","language":"Svelte","funding_links":[],"categories":["Svelte"],"sub_categories":[],"readme":"\u003cimg alt=\"logo\" style=\"float: right;right: 0px\" src=\"https://github.com/cxumol/URLinkCat/assets/8279655/e5ca018e-83bf-4cf9-aca3-edcac619d666\" width=\"120\" div align=right\u003e\n\n# URL Link Catalog\n\nhttps://urlinkcat.pages.dev/#demo\n\nURL Link Catalog, or URLinkCat, is a **free, open-source, fully customizable, multi-user, cloud-synced and easy-to-use** bookmark web app.\n\n\u003e 🏆 This project won [Cloudflare Developer Summer Challenge 2021](https://challenge.developers.cloudflare.com/). Thank you Cloudflare for the prize box!\n\n## Who wants it?\n\nYou need it if you want to:\n- Acess personal bookmarks **across browsers and devices**\n- Acess bookmarks **across work and personal accounts**\n- **Share** links with a group of people\n- **Collaboratively** create a internet directory with firends\n- Publish your up-to-date collection of your favorite AIs since 2023!\n\n### Comparison \n\n| Feature | URLinkCat | [Linktree](https://linktr.ee) |\n|-|-|-|  \n| Cost | ✓ Free | ✓ Free + Paid plans |\n| Cloud sync | ✓ | ✓ |\n| Cross-device access | ✓ | ✓ | \n| Sharing links | ✓ | ✓ |\n| Thumbnails | ✓ Emoji / Material Design Icons | ✓ Image upload / Icons  |  \n| Manage links | ✓ One-click editing mode toggle | ✗ Complex admin backstage |  \n| Multi-pages | ✓ As many as you want | ✗ Create only 1 page per account |  \n| Collaboration | ✓ Anyone authorized can edit  | ✗ |\n| Authorization | ✓ No need accounts\u003csup\u003e1\u003c/sup\u003e | ✓ Requires accounts ✗ less convenient|\n| Open source | ✓ | ✗ | \n| App size | ✓ Lightweight | ✗ Heavy | \n\n1: Optional password protection coming soon™\n\n## User Guide\n\nCheck out our official examples listed on \u003chttps://urlinkcat.pages.dev/#demo\u003e. \n\n1. Visit `https://urlinkcat.pages.dev/#ImSuperHero123` to view the page of `ImSuperHero123`.\u003csup\u003e1,2\u003c/sup\u003e\n2. Manage. No need accounts. Just click bottom-right 🔒 button to toggle editing mode.\u003csup\u003e3\u003c/sup\u003e\n3. Preview. Click 🔒 button again to toggle viewer mode.\n4. Save to Cloud. Click the ☁️ cloud button in viewer mode. If ☁️ shift to ✔️, congratulations, your masterpiece is in the could!\n\nTips:\n1. To make bookmark \"private\", use a page id hard to guess like `SUxPVkVV`. Search engines won't know unless you speak it out loud.  \n2. Visiting https://urlinkcat.pages.dev/ barely will give you a random ID.\n3. You will need codename to change thumbnails and colors, and the codenames can be found from the default \"How to Use\" section.\n\n## Host your own instance\n\n| Infrastructure | Cost |\n|-|-|  \n| Cloudflare Pages | $0 |\n| Cloudflare Workers | $0 |\n| Cloudflare KV database | $0 |\n| Cloudflare subdomain | $0 |\n| Total | $0 |\n\n### Front-end hosting on Cloudflare Pages\n\n1. [Fork me on GitHub](https://github.com/cxumol/URLinkCat/fork)\n2. Change the config at \"src/routes/App.svelte\" and/or \"static/data_default.json\"\n3. Follow the steps on [Cloudflare Pages document](https://developers.cloudflare.com/pages/get-started)\n4. Setup \"Build Configurations\" as below.\n\n```\nFramework preset: Svelte\nBuild command: pnpm run build\nBuild output directory: /static\n```\n\nYour instance is now ready to use, but only within a browser tab session. To enable cloud storage, keep following steps blow.\n\n### Back-end hosting on Cloudflare Workers and KV\n\n1. Create a new Cloudflare Workers instance on https://workers.dev/\n2. Create a [KV namespace](https://developers.cloudflare.com/workers/learning/how-kv-works) and bind it to this workers instance. Default name is `URLinkCat`.\n3. Copy \u0026 paste \".cf_workers/main.js\" to [Cloudflare Workers Quick Edit](https://blog.cloudflare.com/improved-quick-edit/).\n4. Click \"Save and deploy\" on Quick Edit. (`wrangler` not required)\n\nDouble-check if `cf_workers` value in \"src/routes/App.svelte\" matches your back-end address.\n\nNow you should find your instance up and running!\n\n## Developer notes\n\n| Infrastructure | Purpose |\n|-|-|  \n| [Cloudflare Pages](https://pages.dev/) | Static web files |\n| [Cloudflare Workers](https://workers.dev/) |  Network requests handler, database connector |\n| [Cloudflare KV](https://developers.cloudflare.com/kv/) | NoSQL database |\n\n| Front-end | Purpose |\n|-|-|  \n| [Svelte](https://svelte.dev) | Framework / Compiler |\n| [Papier](http://gugel.io/papier/) | CSS library |\n| [Material Design Icons](https://fonts.google.com/icons) | Icon library |\n\nArchitecture:\n\n```\n                ┌────────────x.pages.dev──┐\n                │                         │\n                │   ┌────────┐            │\n                │   │.svelte │            │\n                │   └─┬──────┘            │\n                │     │                   │\n                │     │ compile           │\n                │     ▼                   │\n┌─────────┐     │   ┌───────────────┐     │   ┌───────────────┐    ┌──────────┐\n│  User   ├─────┼──►│.html/.css/.js │◄────┼──►│y.z.workers.dev│◄──►│Workers KV│\n└─────────┘     │   └───────────────┘     │   └───────────────┘    └──────────┘\n                │                         │       middleware         database\n                └─────────────────────────┘\n                      frontend\n```\n\n### Contribution\n\nFeel free to send PR. Consider following improvements:\n\n- [x] Change orders by dragging\n- [ ] Optional password protection\n- [ ] Depolyment on other playforms (vercel, deno deploy, render.com, etc.)\n- [ ] Open a group of links at once by a single click (firefox bookmark toolbar \"Open All in Tabs\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcxumol%2FURLinkCat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcxumol%2FURLinkCat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcxumol%2FURLinkCat/lists"}