https://urlinkcat.pages.dev/#demo
URL Link Catalog, or URLinkCat, is a free, open-source, fully customizable, multi-user, cloud-synced and easy-to-use bookmark web app.
🏆 This project won Cloudflare Developer Summer Challenge 2021. Thank you Cloudflare for the prize box!
You need it if you want to:
- Acess personal bookmarks across browsers and devices
- Acess bookmarks across work and personal accounts
- Share links with a group of people
- Collaboratively create a internet directory with firends
- Publish your up-to-date collection of your favorite AIs since 2023!
Feature | URLinkCat | Linktree |
---|---|---|
Cost | ✓ Free | ✓ Free + Paid plans |
Cloud sync | ✓ | ✓ |
Cross-device access | ✓ | ✓ |
Sharing links | ✓ | ✓ |
Thumbnails | ✓ Emoji / Material Design Icons | ✓ Image upload / Icons |
Manage links | ✓ One-click editing mode toggle | ✗ Complex admin backstage |
Multi-pages | ✓ As many as you want | ✗ Create only 1 page per account |
Collaboration | ✓ Anyone authorized can edit | ✗ |
Authorization | ✓ No need accounts1 | ✓ Requires accounts ✗ less convenient |
Open source | ✓ | ✗ |
App size | ✓ Lightweight | ✗ Heavy |
1: Optional password protection coming soon™
Check out our official examples listed on https://urlinkcat.pages.dev/#demo.
- Visit
https://urlinkcat.pages.dev/#ImSuperHero123
to view the page ofImSuperHero123
.1,2 - Manage. No need accounts. Just click bottom-right 🔒 button to toggle editing mode.3
- Preview. Click 🔒 button again to toggle viewer mode.
- Save to Cloud. Click the ☁️ cloud button in viewer mode. If ☁️ shift to ✔️, congratulations, your masterpiece is in the could!
Tips:
- To make bookmark "private", use a page id hard to guess like
SUxPVkVV
. Search engines won't know unless you speak it out loud. - Visiting https://urlinkcat.pages.dev/ barely will give you a random ID.
- You will need codename to change thumbnails and colors, and the codenames can be found from the default "How to Use" section.
Infrastructure | Cost |
---|---|
Cloudflare Pages | $0 |
Cloudflare Workers | $0 |
Cloudflare KV database | $0 |
Cloudflare subdomain | $0 |
Total | $0 |
- Fork me on GitHub
- Change the config at "src/routes/App.svelte" and/or "static/data_default.json"
- Follow the steps on Cloudflare Pages document
- Setup "Build Configurations" as below.
Framework preset: Svelte
Build command: pnpm run build
Build output directory: /static
Your instance is now ready to use, but only within a browser tab session. To enable cloud storage, keep following steps blow.
- Create a new Cloudflare Workers instance on https://workers.dev/
- Create a KV namespace and bind it to this workers instance. Default name is
URLinkCat
. - Copy & paste ".cf_workers/main.js" to Cloudflare Workers Quick Edit.
- Click "Save and deploy" on Quick Edit. (
wrangler
not required)
Double-check if cf_workers
value in "src/routes/App.svelte" matches your back-end address.
Now you should find your instance up and running!
Infrastructure | Purpose |
---|---|
Cloudflare Pages | Static web files |
Cloudflare Workers | Network requests handler, database connector |
Cloudflare KV | NoSQL database |
Front-end | Purpose |
---|---|
Svelte | Framework / Compiler |
Papier | CSS library |
Material Design Icons | Icon library |
Architecture:
┌────────────x.pages.dev──┐
│ │
│ ┌────────┐ │
│ │.svelte │ │
│ └─┬──────┘ │
│ │ │
│ │ compile │
│ ▼ │
┌─────────┐ │ ┌───────────────┐ │ ┌───────────────┐ ┌──────────┐
│ User ├─────┼──►│.html/.css/.js │◄────┼──►│y.z.workers.dev│◄──►│Workers KV│
└─────────┘ │ └───────────────┘ │ └───────────────┘ └──────────┘
│ │ middleware database
└─────────────────────────┘
frontend
Feel free to send PR. Consider following improvements:
- Change orders by dragging
- Optional password protection
- Depolyment on other playforms (vercel, deno deploy, render.com, etc.)
- Open a group of links at once by a single click (firefox bookmark toolbar "Open All in Tabs")