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.txtfile 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
| Layer | Technology |
|---|---|
| Runtime | Go 1.22+ (compiled binary) |
| Web framework | net/http + html/template |
| Data layer | Git (via go-git) – interacts with local clones of user repos |
| Auth | Supports multiple backends: local database, GitHub OAuth2, GitLab, or a local Git repo (via personal access tokens) |
| Deployment | Docker 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.txtfile. Changes are committed automatically. - Tab/Page Management – The parser supports multiple tabs and nested pages, allowing developers to structure dashboards hierarchically.
- Column Layouts – Simple
Columndirectives 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
Rendererinterfaces, 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.txtfile changes, enabling real‑time updates without polling. - Auth extensions – Adding a new OAuth provider only requires implementing the
auth.Providerinterface 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
- Personal Start Page – Replace the default browser home page with a custom dashboard that pulls bookmarks from GitHub.
- Team Knowledge Base – Store shared resources in a
bookmarks.txtfile, allowing team members to edit via pull requests. - Embedded Dashboard – Integrate gobookmarks into a larger Go web service as an internal navigation panel.
- 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Zim
Desktop wiki editor for notes, tasks and brainstorming

Chasquid
Simple, secure SMTP server for individuals and small groups
Sync-in
Self‑hosted, secure file collaboration for teams and enterprises
Leon
Open‑source personal assistant for your server
Alf.io
Open‑source ticketing for privacy‑first events
SeaweedFS
Fast, distributed file system for cloud storage
