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.distfile demonstrates how environment variables or a.envfile 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 inapi.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 viafetchand 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 injs/.
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.mdfile 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 inlocale/. - 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
- Enterprise Bookmark Management – Companies can host SyncMarks on internal servers to provide a unified bookmark repository for employees, integrating it with corporate SSO.
- Open‑Source Collaboration – Project teams can use SyncMarks to share research links, documentation, and resources across contributors with varying browser preferences.
- Personal Knowledge Base – Developers can host SyncMarks locally to sync bookmarks across devices while keeping data under their control, avoiding third‑party services.
- 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
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
HomeServerHQ
All‑in‑one home server, secure and simple
Statping-ng
Self‑hosted status page and monitoring server
Baby Buddy
Track baby milestones, sleep, feedings, and more to predict needs
SHKeeper
Self-hosted crypto payment processor without fees
Kibitzr
Self‑hosted web watcher & notifier
txtdot
Text‑only web proxy for faster, ad‑free browsing