MCPSERV.CLUB
SyncMarks

SyncMarks

Self-Hosted

Cross‑browser bookmark sync for Edge, Firefox and Chromium

Stale(40)
0stars
0views

Overview

Discover what makes SyncMarks powerful

SyncMarks is a self‑hosted web application that aggregates and synchronizes browser bookmarks across major engines—Edge, Firefox, and Chromium. From a developer standpoint it is essentially a **bookmark sync service** that exposes both a RESTful API and a browser‑extension frontend. The project is built around PHP on the server side, with a lightweight JavaScript/React‑like stack for the web UI and a WebExtension manifest that handles communication with the browser. The codebase is organized into distinct layers: an API layer (`api.md`), a database abstraction in `sql/`, and the frontend assets under `js/`. The application uses standard web technologies (HTML5, CSS3) and follows a modular approach that allows developers to drop in custom extensions or replace the storage backend with minimal friction.

Backend

Database

API

Frontend

Overview

SyncMarks is a self‑hosted web application that aggregates and synchronizes browser bookmarks across major engines—Edge, Firefox, and Chromium. From a developer standpoint it is essentially a bookmark sync service that exposes both a RESTful API and a browser‑extension frontend. The project is built around PHP on the server side, with a lightweight JavaScript/React‑like stack for the web UI and a WebExtension manifest that handles communication with the browser. The codebase is organized into distinct layers: an API layer (api.md), a database abstraction in sql/, and the frontend assets under js/. The application uses standard web technologies (HTML5, CSS3) and follows a modular approach that allows developers to drop in custom extensions or replace the storage backend with minimal friction.

Technical Stack & Architecture

  • Backend: PHP 8.x, leveraging procedural code with a small set of helper classes for routing and database access. The config.inc.php.dist file demonstrates how environment variables or a .env file can be used to customize the application.
  • Database: MySQL/MariaDB is the default; schema migrations are stored in sql/changes checkdb. The data model consists of users, bookmark folders, and bookmark entries with metadata (tags, timestamps).
  • API: Exposes CRUD endpoints (GET /api/bookmarks, POST /api/bookmarks, etc.) documented in api.md. The API uses JSON payloads and standard HTTP status codes, making it straightforward to consume from any language.
  • Frontend: A single‑page app built with vanilla JavaScript and minimal dependencies (js/). It communicates with the API via fetch and renders bookmarks in a responsive layout.
  • Browser Extension: A WebExtension that hooks into the browser’s bookmarks API, synchronizes changes to the server, and provides a context‑menu entry (manifest.json). Edge’s sidebar support is handled via custom logic in js/.

The architecture follows a classic MVC pattern: the PHP layer handles routing and data persistence, while the JavaScript frontend consumes the API. This separation makes it trivial to swap out the PHP layer for a Node.js or Go implementation without touching the browser extension.

Core Capabilities & Developer APIs

  • Bookmark Synchronization: Automatic sync on change events, with conflict resolution based on timestamps.
  • Folder & Tag Management: CRUD operations for hierarchical folders and tag assignments, all exposed through the API.
  • User Management: Basic authentication (HTTP basic or token‑based) with support for multiple users and shared bookmark collections.
  • Webhook Support: Configurable webhooks that fire on create/update/delete events, enabling integration with CI/CD pipelines or notification services.
  • Export/Import: JSON export of entire bookmark trees and import with conflict handling, useful for migrations or backups.
  • Extensibility Hooks: The api.md file defines custom endpoints that developers can extend, and the PHP code exposes hooks for adding new authentication methods or storage adapters.

Deployment & Infrastructure

SyncMarks is designed to run on any LAMP stack, but it ships with a Dockerfile and docker‑compose snippets in the repo’s root for quick containerization. The application is stateless except for its database, making horizontal scaling straightforward—multiple PHP instances behind a load balancer can share the same MySQL database. It also supports Apache (via .htaccess for FastCGI) and Nginx, with minimal configuration changes. For high‑availability deployments, developers can pair SyncMarks with a managed database cluster and use Redis for session caching if needed.

Integration & Extensibility

  • Plugin System: While the core does not ship a formal plugin API, the codebase is modular enough that developers can fork and add new PHP classes or JavaScript modules.
  • Webhooks & APIs: The REST API is fully documented, and developers can write custom scripts that consume the webhook payloads to trigger downstream actions (e.g., updating a knowledge‑base or syncing with a corporate LDAP).
  • Customization: CSS overrides are supported via the css/ directory, and localization is handled through Weblate‑generated files in locale/.
  • Browser Extension Customization: The extension’s UI can be tweaked by editing the js/ files, and developers can replace the sync logic with OAuth or SAML authentication if required.

Developer Experience

The repository follows semantic versioning and includes a comprehensive changelog (CHANGELOG.md). The API documentation is kept in sync with the code, and the README outlines prerequisites clearly. Community support appears active, with frequent commits (over 500) and a responsive issue tracker. The use of standard PHP practices and plain JavaScript ensures that developers familiar with LAMP stacks can dive in quickly without learning a new framework.

Use Cases

  1. Enterprise Bookmark Management – Companies can host SyncMarks on internal servers to provide a unified bookmark repository for employees, integrating it with corporate SSO.
  2. Open‑Source Collaboration – Project teams can use SyncMarks to share research links, documentation, and resources across contributors with varying browser preferences.
  3. Personal Knowledge Base – Developers can host SyncMarks locally to sync bookmarks across devices while keeping data under their control, avoiding third‑party services.
  4. Educational Platforms – Schools can deploy SyncMarks as a shared resource hub for students and faculty, with fine‑grained access controls.

Advantages Over Alternatives

  • Self‑Hosted Control – No reliance on cloud providers; data stays within the organization’s firewall.
  • Lightweight Footprint

Open SourceReady to get started?

Join the community and start self-hosting SyncMarks today