1
0
mirror of https://codeberg.org/diginaut/digimarks.git synced 2026-03-22 00:00:48 +01:00
2026-02-11 16:11:30 +01:00
2026-02-11 16:11:30 +01:00
2026-02-11 15:50:48 +01:00
2025-11-06 13:53:00 +01:00
2026-01-04 14:59:50 +01:00
2025-09-12 12:03:07 +02:00
2025-09-23 21:58:38 +02:00
2016-07-07 14:42:48 +02:00
2026-02-11 16:07:28 +01:00
2026-02-11 14:25:17 +01:00
2026-01-03 23:45:56 +01:00

🔖 digimarks

PyPI version PyPI license Codacy

📚 Overview

Simple bookmarking service, using a SQLite database to store bookmarks, supporting tags and automatic title fetching. Notes can be added, the items are cached locally in the browser, and the API is documented so everything can be accessed through that too.

digimarks source

📥 Installation

There are a few ways to install digimarks to your computer or server.

From PyPI

Assuming you already are inside a virtualenv:

# Using the wonderfully fast uv
uv pip install digimarks

# Alternatively, use Python pip
pip install digimarks

From Git

Create a new virtualenv (if you are not already in one) and install the necessary packages:

git clone https://codeberg.org/diginaut/digimarks.git
cd digimarks
# direnv will now create or activate a virtualenv
# See https://codeberg.org/diginaut/dotfiles/src/branch/master/.config/direnv/direnvrc for direnv uv config
# If you just want to run it, no need for development dependencies
uv sync --active --no-dev
# Otherwise, install everything in the active virtualenv
uv sync --active

⚙️ Migrating from version 1

To be able to use the new database schema's, you will need to migrate your existing bookmarks.db to one under the control of the alembic migrations tool.

To do so, start with making a backup of this bookmarks.db file to a safe place.

Then, stamp the initial migration into the database, and migrate to the latest version:

# Initiate migrations with the first one (only needs to be done once!)
alembic stamp 115bcd2e1a38

# Apply all migrations to get up-to-date
alembic upgrade head

🛠️ Usage / example configuration

⚠️ OUT OF DATE! ⚠️

Copy settings.py from example_config to the parent directory and configure to your needs (at the least change the value of SYSTEMKEY).

Do not forget to fill in the MASHAPE_API_KEY value, which you can request on the RapidAPI website <https://rapidapi.com/realfavicongenerator/api/realfavicongenerator>_.

Run digimarks as a service under nginx or apache and call the appropriate url's when wanted.

Url's are of the form https://marks.example.com/<userkey>/<action>

digimarks can also be run from the command line: uvicorn digimarks:app --reload

Be sure to export/set the SECRETKEY environment variable before running, it's needed for some management URI's.

Run gunicorn -k uvicorn.workers.UvicornWorker for production. For an example of how to set up a server see this article <https://www.slingacademy.com/article/deploying-fastapi-on-ubuntu-with-nginx-and-lets-encrypt/>_ with configuration for nginx, uvicorn, systemd, security and such.

The RQ background worker can be run from the command line: rq worker --with-scheduler

Url's are of the form https://hook.example.com/app/<appkey>/<triggerkey>

API documentation is auto-generated, and can be browsed at https://hook.example.com/docs

🧩 Bookmarklet

To easily save a link from your browser, open its bookmark manager and create a new bookmark with as url:

javascript:location.href='http://marks.example.com/1234567890abcdef/add?url='+encodeURIComponent(location.href);

Creating a new user

After having set up the settings.py as under Usage, you can add a new user, by going to this path on your digimarks server:

/<secretkey>/adduser

where secretkey is the value set in settings.SYSTEMKEY

digimarks will then redirect to the bookmarks overview page of the new user. Please remember the user key (the hash in the url), as it will not be visible otherwise in the interface.

If you for whatever reason would lose this user key, just either look on the console (or webserver logs) where the list of available user keys is printed on digimarks startup, or open bookmarks.db with a SQLite editor.

🔧 Server configuration

What's new?

See the Changelog

🙏 Attributions

'M' favicon by Freepik

Description
Languages
Python 57.3%
HTML 40.4%
CSS 1.2%
JavaScript 1.1%