MCPSERV.CLUB
gobookmarks

gobookmarks

Self-Hosted

Personal landing page with GitHub‑backed bookmarks

Active(90)
5stars
0views
Updated 10 days ago
gobookmarks screenshot 1
1 / 5

Overview

Discover what makes gobookmarks powerful

gobookmarks is a lightweight, self‑hosted personal dashboard that renders a structured list of links from a plain‑text file stored in a Git repository. The application is written entirely in Go, leveraging the standard library for HTTP handling and templating while using Git as its data store instead of a traditional SQL database. This design choice eliminates the need for a separate persistence layer, simplifies deployment, and allows developers to version‑control bookmarks alongside code or configuration.

Git‑backed persistence

Declarative bookmark syntax

Dynamic routing

Open‑source extensibility

Overview

gobookmarks is a lightweight, self‑hosted personal dashboard that renders a structured list of links from a plain‑text file stored in a Git repository. The application is written entirely in Go, leveraging the standard library for HTTP handling and templating while using Git as its data store instead of a traditional SQL database. This design choice eliminates the need for a separate persistence layer, simplifies deployment, and allows developers to version‑control bookmarks alongside code or configuration.

Key Features

  • Git‑backed persistence – Bookmarks are stored in a bookmarks.txt file inside a user‑created repository (MyBookmarks). The app clones, pulls, and pushes changes automatically, enabling simple collaboration or remote editing via GitHub/GitLab.
  • Declarative bookmark syntax – A minimal line‑based format supports categories, columns, tabs, pages, and horizontal rules. The parser is intentionally lightweight, making it easy to extend or replace.
  • Dynamic routing – Query parameters (?tab=<index>) switch between tabs without full page reloads. The UI is rendered server‑side, ensuring fast first paint and compatibility with minimal client resources.
  • Open‑source extensibility – The codebase is modular, exposing a clear API for future integrations (e.g., adding authentication providers or custom rendering hooks).

Technical Stack

LayerTechnology
RuntimeGo 1.22+ (compiled binary)
Web frameworknet/http + html/template
Data layerGit (via go-git) – interacts with local clones of user repos
AuthSupports multiple backends: local database, GitHub OAuth2, GitLab, or a local Git repo (via personal access tokens)
DeploymentDocker image published for every release; also runnable as a standalone binary

The application eschews external services (no Redis, no PostgreSQL) which keeps the footprint minimal and makes it ideal for edge or IoT deployments.

Core Capabilities

  • Bookmark CRUD – Create, read, update, and delete bookmarks by editing the bookmarks.txt file. Changes are committed automatically.
  • Tab/Page Management – The parser supports multiple tabs and nested pages, allowing developers to structure dashboards hierarchically.
  • Column Layouts – Simple Column directives split the page into multiple columns, facilitating side‑by‑side comparisons.
  • Horizontal Rules-- inserts a thematic break and resets column layout, useful for visual grouping.

While gobookmarks does not expose a public REST API, its internal functions can be imported into other Go projects. The repository’s clear separation of concerns makes it straightforward to expose a lightweight API layer on top of the existing logic.

Deployment & Infrastructure

  • Self‑hosting – A single binary or Docker container runs on any Linux/Windows/Mac host with Go installed. No database server is required.
  • Scalability – Each instance operates independently; horizontal scaling can be achieved via reverse proxies (NGINX, Traefik) or container orchestration. Since data is stored in Git, concurrent writes are handled by Git’s merge conflicts, which can be resolved manually or programmatically.
  • Containerization – Dockerfiles are provided in the repo, and releases automatically push images to Docker Hub. The image is lightweight (≈ 70 MB) due to Go’s static compilation.

Integration & Extensibility

  • Plugin hooks – The rendering pipeline is composed of a series of Renderer interfaces, allowing developers to inject custom HTML or modify the parsed bookmark structure.
  • Webhooks – GitHub/GitLab webhooks can trigger a rebuild of the dashboard when the bookmarks.txt file changes, enabling real‑time updates without polling.
  • Auth extensions – Adding a new OAuth provider only requires implementing the auth.Provider interface and registering it in the main handler.

Because the core logic is pure Go, developers can fork or embed gobookmarks into larger applications (e.g., a corporate intranet portal) without significant refactoring.

Developer Experience

  • Configuration – A single YAML/JSON file (or environment variables) configures authentication, repository URL patterns, and server ports. No code changes are needed for most use cases.
  • Documentation – The README provides a clear walkthrough, and inline comments in the source code explain each module’s responsibility.
  • Community & Licensing – Licensed under MIT, the project encourages contributions. The GitHub repository hosts issue templates and a roadmap, making it approachable for new contributors.

Use Cases

  1. Personal Start Page – Replace the default browser home page with a custom dashboard that pulls bookmarks from GitHub.
  2. Team Knowledge Base – Store shared resources in a bookmarks.txt file, allowing team members to edit via pull requests.
  3. Embedded Dashboard – Integrate gobookmarks into a larger Go web service as an internal navigation panel.
  4. Edge Device Interface – Run on a Raspberry Pi to provide a local, offline‑first dashboard for IoT devices.

Advantages

  • Zero‑configuration persistence – Eliminates the need to maintain a database, reducing operational overhead.
  • Version‑controlled data – Bookmarks are stored in Git, giving full audit trails and rollback capabilities.
  • Performance – Server‑side rendering with Go’s fast runtime ensures sub‑100 ms response times even under load.
  • Simplicity

Open SourceReady to get started?

Join the community and start self-hosting gobookmarks 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
AGPL-3.0
Stars
5
Technical Specs
Pricing
Open Source
Database
None
Docker
Official
Supported OS
LinuxDocker
Author
arran4
arran4
Last Updated
10 days ago