MCPSERV.CLUB
linkding

linkding

Self-Hosted

Self‑hosted bookmark manager for minimal, fast organization

Active(100)
9.4kstars
0views
Updated 6 days ago
linkding screenshot 1
1 / 3

Overview

Discover what makes linkding powerful

linkding is a lightweight, self‑hosted bookmark manager built on top of **Django 4.x**. It exposes a modern, REST‑ful API and a responsive web UI that can be run as a single Docker container. From a developer’s point of view, the project is intentionally minimalistic: it ships with SQLite by default but can be swapped for any supported Django database backend (PostgreSQL, MySQL, MariaDB). The codebase is split into a single Django app called `bookmarks`, which contains all the domain logic, serializers, and API endpoints. The front‑end is a small JavaScript bundle built with Vite (Node.js) that communicates with the back‑end via the same REST API, keeping the separation of concerns clean.

Framework

API Layer

Front‑end

Database

Overview

linkding is a lightweight, self‑hosted bookmark manager built on top of Django 4.x. It exposes a modern, REST‑ful API and a responsive web UI that can be run as a single Docker container. From a developer’s point of view, the project is intentionally minimalistic: it ships with SQLite by default but can be swapped for any supported Django database backend (PostgreSQL, MySQL, MariaDB). The codebase is split into a single Django app called bookmarks, which contains all the domain logic, serializers, and API endpoints. The front‑end is a small JavaScript bundle built with Vite (Node.js) that communicates with the back‑end via the same REST API, keeping the separation of concerns clean.

Architecture & Technical Stack

  • Framework: Django 4.x (Python 3.13) – leverages the ORM, admin interface, and authentication system out of the box.
  • API Layer: Django REST Framework (DRF) – provides token‑based authentication, pagination, and filtering for bookmark resources.
  • Front‑end: Vite + vanilla JS (no heavy SPA framework) – keeps bundle size small and allows the UI to be replaced or extended without touching the back‑end.
  • Database: SQLite for quick starts; fully compatible with PostgreSQL, MySQL, or MariaDB for production workloads.
  • Containerization: A single Dockerfile builds an Alpine‑based image; Docker Compose is provided for local development, exposing only the necessary ports.
  • Background Jobs: Celery (via Redis or RabbitMQ) is optional but supported for tasks such as web‑page archiving and metadata extraction.

Core Capabilities & APIs

  • Bookmark CRUD: Create, read, update, delete bookmarks with tags and Markdown notes.
  • Bulk Operations: API endpoints accept lists of IDs to perform tag assignment, deletion, or status changes in a single request.
  • Metadata Extraction: On bookmark creation, the service scrapes the target URL to populate title, description, favicon, and preview image. This is implemented as an asynchronous task.
  • Archiving: Two strategies are available—save a local static HTML snapshot or submit the URL to the Internet Archive. Both are triggered via API calls and handled by background workers.
  • Import/Export: Supports the Netscape HTML bookmark format, allowing migration from browsers or other managers.
  • Multi‑User & Guest Sharing: Uses Django’s auth system; users can share individual bookmarks or entire collections with other authenticated users or generate guest links.
  • SSO & Proxy Auth: Optional OIDC integration and support for authentication proxies (e.g., Nginx with auth_request).

Deployment & Infrastructure

linkding’s single‑container design makes it trivial to deploy on any platform that runs Docker: VPS, cloud providers (AWS ECS/EKS, GCP Cloud Run), or even on‑premise Docker Swarm. For larger deployments, you can spin up multiple instances behind a load balancer; Django’s session and cache backends (Redis or Memcached) can be shared across workers. The database is externalized, so scaling reads/writes is straightforward with PostgreSQL or MySQL clusters. The optional Celery workers can be scaled horizontally to handle high volumes of archiving or metadata extraction jobs.

Integration & Extensibility

  • Plugin System: While the core does not ship a formal plugin API, its modular Django architecture allows developers to fork the bookmarks app or create separate Django apps that import its models and serializers.
  • Webhooks: Custom endpoints can be added to the API for notifying external services on bookmark events (creation, update, deletion).
  • Browser Extensions & Bookmarklets: Official extensions for Firefox and Chrome expose the same API, enabling seamless integration with browsers.
  • PWA: The front‑end is a fully installable Progressive Web App, so mobile users can pin linkding to their home screens and use it offline.

Developer Experience

The project follows Django conventions closely, making onboarding fast for developers familiar with the framework. The README and in‑repo documentation cover all major features, while the full docs are hosted at linkding.link. Community projects—mobile apps, libraries, and custom integrations—are listed on the main site, fostering an ecosystem. The code is well‑structured: models in bookmarks/models.py, serializers in bookmarks/serializers.py, and views in bookmarks/views.py. Unit tests are included for core logic, and the CI pipeline runs against multiple Python versions.

Use Cases

  1. Personal Knowledge Base – A developer can host linkding locally to archive research articles, code snippets, and documentation links, leveraging the archiving feature for offline reading.
  2. Team Collaboration – In a small company, linkding can serve as a shared bookmark repository where teams tag and categorize resources, with guest links for external partners.
  3. Custom API Integration – Developers building internal tools can consume linkding’s REST API to populate dashboards, generate reports, or sync with other services (e.g., Slack reminders).
  4. Educational Projects – The lightweight stack is ideal for teaching web development concepts: Django models, DRF serializers, and asynchronous tasks.

Advantages Over Alternatives

  • Zero‑Configuration Docker: One image, one container—no external services required for a minimal setup.
  • Open‑Source & MIT Licensed: No licensing fees or vendor lock‑in; full control over data.
  • **Performance &

Open SourceReady to get started?

Join the community and start self-hosting linkding today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
MIT
Stars
9.4k
Technical Specs
Pricing
Open Source
Database
SQLite
Docker
Official
Supported OS
LinuxDocker
Author
sissbruecker
sissbruecker
Last Updated
6 days ago