Metadata-Version: 2.4
Name: eteaching.plone.nostrmetadatasync
Version: 1.0.0b1
Summary: Nostr integration for Plone 6.
Project-URL: Homepage, https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync
Project-URL: PyPI, https://pypi.org/project/eteaching.plone.nostrmetadatasync
Project-URL: Source, https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync
Project-URL: Tracker, https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync/issues
Project-URL: Changelog, https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync/blob/main/CHANGELOG.md
Author-email: Markus Schmidt <m.schmidt@iwm-tuebingen.de>
License-Expression: GPL-2.0-only
License-File: LICENSE.GPL
License-File: LICENSE.md
Keywords: CMS,Plone,Python
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: 6.0
Classifier: Framework :: Plone :: 6.1
Classifier: Framework :: Plone :: 6.2
Classifier: Framework :: Plone :: Addon
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: plone-api
Requires-Dist: products-cmfplone
Requires-Dist: pynostr
Requires-Dist: z3c-jbot
Provides-Extra: release
Requires-Dist: zest-pocompile; extra == 'release'
Requires-Dist: zest-releaser[recommended]; extra == 'release'
Requires-Dist: zestreleaser-towncrier; extra == 'release'
Provides-Extra: test
Requires-Dist: horse-with-no-namespace; extra == 'test'
Requires-Dist: plone-app-testing; extra == 'test'
Requires-Dist: plone-classicui; extra == 'test'
Requires-Dist: plone-restapi[test]; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Requires-Dist: pytest-plone>=1.0.0a2; extra == 'test'
Description-Content-Type: text/markdown

# eteaching.plone.nostrmetadatasync

Nostr integration for Plone 6.

eteaching.plone.nostrmetadatasync synchronises metadata of Plone contents 
with Nostr. This is done on the basis of subscribers (event handlers). When 
content is created, deleted or modified on the Plone website, corresponding 
Nostr events are created, signed and sent to predefined relias in the Nostr 
network. Two control panels are also provided. One is for settings, where
you can specify which content types and filters should be used to select
the content affected by synchronization. The second control panel can be 
used to create all events in the Nostre relays for the entire content 
selected using the settings, or to send delete events.

## Features

* Synchronizes metadata of event based objects (e.g. plone.app.event) with Nostr Time-Based Calendar Event (NIP-52)
* Synchronizes metadata of objects with Nostr AMB Event (NIP-AMB)

## Installation

### Prerequisites ✅

-   An [operating system](https://6.docs.plone.org/install/create-project-cookieplone.html#prerequisites-for-installation) that runs all the requirements mentioned.
-	Python 3.10, 3.11, 3.12, or 3.13
-   [uv](https://6.docs.plone.org/install/create-project-cookieplone.html#uv)
-   [Make](https://6.docs.plone.org/install/create-project-cookieplone.html#make)
-   [Git](https://6.docs.plone.org/install/create-project-cookieplone.html#git)
-   [Docker](https://docs.docker.com/get-started/get-docker/) (optional)

### Install eteaching.plone.nostrmetadatasync from source with `git` 🔧

1.  Clone this repository, then change your working directory

    ```shell
    git clone git@github.com:e-teachingorg/eteaching.plone.nostrmetadatasync.git
    cd eteaching.plone.nostrmetadatasync
    ```

2. Create environment

    ```shell
    python3 -m venv .
    bin/pip install uv
    source bin/activate
    ```
3. Create an .env file

    ```shell
    vi .env
    ```

	to set NOST_KEY as an environment variable:

    ```shell
    NOSTR_KEY=MyPrivateNostrKey
    ```

4.  Install the code base

    ```shell
    make install
    ```

5.	Create the Plone site

	```shell
	make create-site
	```

6.	Start

	```shell
	make start
	```

### Install eteaching.plone.nostrmetadatasync via `buildout`

1. Use zc.buildout >=5, e.g. using the following requirements.txt:

	```shell
	horse-with-no-namespace==20251105.1
	packaging==25.0
	pip==25.3
	setuptools==80.9.0
	wheel==0.45.1
	zc.buildout==5.1.1
	```
2. Install Python venv and requirements:

	```shell
	bin/python3 -m venv .
	bin/pip install -r requirements.txt
	```

3. Add the following to buildout.cfg:

	```shell
	[buildout]
	
	...
	
	eggs =
	    eteaching.plone.nostrmetadatasync
	```

4. Run buildout

	```shell
	bin/buildout	
	```
5. Start

	```shell
	bin/instance fg
	```

## Contribute

- [Issue tracker](https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync/issues)
- [Source code](https://github.com/e-teachingorg/eteaching.plone.nostrmetadatasync/)


## License

The project is licensed under the GPLv2.
