LinkSnapper
is a sleek and minimalist bookmark manager designed for homelab use. It supports a hierarchical category system with a simple and intuitive web interface. It's available for all operating systems and architectures as a binary as well as a multi-architecture container image.
There are numerous bookmark managers available, and they're great. My personal favorites are Hoarder and Linkwarden. But I wanted an even simpler solution that I could integrate my AI-Context project with, mainly to get text-based backups of my links and repositories. I also wanted a significantly simpler format of links to create a shareable repository from my bookmarks. LinkSnapper was created to be that lightweight, no-nonsense bookmark manager that just works. (Integration of AI-Context is a WIP)
- Simple bookmark management with essential details (URL, name, description, and categories)
- Multi-level path-based category support, with fuzzy match for new links
- UUID-based link identification in the backend
- REST API for bookmark management
- Intuitive search and navigation for links
- Clean and responsive web interface with light and dark mode support
- Flat file storage system (
data/links.json
)
- Hierarchical Category System
- Create unlimited nested categories
- Organize links in a tree-like structure
- Easy navigation with breadcrumb trails
- Smart (fuzzy) Category Suggestions
- Auto-suggests existing categories while adding new links
- Prevents category fragmentation
- Quick Access Interface
- Fast link addition with minimal clicks
- Efficient search through browser's built-in search
Desktop View | Mobile View | |
---|---|---|
Light | ![]() |
![]() |
Dark | ![]() |
![]() |
Tip
The interface automatically adapts to system preferences for themes. The views are optimized for both desktop and mobile use.
go install github.com/tanq16/linksnapper/cmd@latest
docker pull tanq16/linksnapper:main
docker run -d \
--name linksnapper \
-p 8080:8080 \
-v linksnapper_data:/app/data \
tanq16/linksnapper:main
To use it with Docker compose or a container-management system like Portainer or Dockge, use this YAML definition:
version: "3.8"
services:
linksnapper:
image: tanq16/linksnapper:main
restart: unless-stopped
ports:
- 8080:8080
volumes:
- /home/user/linksnapper:/app/data # CHANGE DIR
git clone https://github.com/tanq16/linksnapper.git && \
cd linksnapper && \
go build ./cmd/linksnapper
Access the web interface through your browser at http://localhost:8080/
Note
This app has no authentication, so deploy carefully. It works well with a reverse proxy like Nginx Proxy Manager and is mainly intended for homelab use.
Add Link:
curl -X POST http://localhost:8080/api/links \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"name": "Example Site",
"description": "An example website",
"path": ["Tech", "Resources"]
}'
Get All Links:
curl http://localhost:8080/api/links
Delete Link:
curl -X DELETE http://localhost:8080/api/links/{id}
Update Link:
curl -X PUT http://localhost:8080/api/links/{id} \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"name": "Updated Name",
"description": "Updated description",
"path": ["New", "Category", "Path"]
}'
- Build using Go for the backend
- Flat JSON file for storage
- Vanilla JavaScript, HTML, and CSS for the frontend
- REST API and Web UI for interaction