clone of github.com/decent-newsroom/newsroom
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Nuša Pukšič fe20a12216 Tests 1 month ago
assets Highlights 1 month ago
bin Local relay 1 month ago
config Highlights 1 month ago
docker Local relay 1 month ago
docs Symfony from dunglas/symfony-docker 1 year ago
documentation NIP-05 3 months ago
frankenphp Local relay 2 months ago
migrations Highlights 1 month ago
public Publishing 3 months ago
src Highlights 1 month ago
templates Highlights 1 month ago
tests Tests 1 month ago
translations NIP-05 3 months ago
.dockerignore Symfony from dunglas/symfony-docker 1 year ago
.editorconfig Symfony from dunglas/symfony-docker 1 year ago
.env.dist Local relay 2 months ago
.env.test Tests, security 3 months ago
.gitattributes Symfony from dunglas/symfony-docker 1 year ago
.gitignore Highlights 1 month ago
Dockerfile Local relay 1 month ago
LICENSE Update copyright year in LICENSE file 4 months ago
Makefile Local relay 2 months ago
README.md Local relay 2 months ago
asset_map_compile.sh Script to Compile Asset Map for Deployment 7 months ago
compose.override.yaml Restart db 7 months ago
compose.prod.yaml Fix prod 3 months ago
compose.yaml Local relay 1 month ago
composer.json Advanced metadata 2 months ago
composer.lock Advanced metadata 2 months ago
importmap.php Advanced metadata 2 months ago
package.json Quill editor basics 1 year ago
phpunit.xml.dist Authenticate user with a NostrSigner. Prep for long form articles. 1 year ago
symfony.lock Advanced metadata 2 months ago
sync-strfry.sh Local relay 1 month ago

README.md

Decent Newsroom

Intro

Decentralised Newsroom is a platform for the creation, publishing, and discovery of mixed-media collaborative journals.

Newsrooms used to be at the heart of journals and media houses, but they deteriorated when their business models started to fail. This project is a decentralised digital alternative.

A lot of talented creators have found their opportunity in the handful of platforms available, but there is synergy in collaboration that has been lost in the transition.

Let's bring back high-value professional journalism and collaborative publishing.

Constituent parts

This project has multiple facets that build on each other, making the whole more than the sum of its parts.

Reader

A traditional newspaper lookalike made up of multiple individual journals. Logged-in users can pick and choose which journals they read and subscribe to, while passers-by can browse the default public ones.

Article Editor

A content editor interface for writing essays, articles, and more. Featuring preview mode, saved drafts and personal notes.

Media Manager

In the current digital landscape, media content and written word have been driven apart, and it's time to bring them closer together again. The media manager is a place to create and share your own media library.

Marketplace

A marketplace for requesting custom-made media (photographs, graphics, data visualizations, animations, audio, video...), science review, contacts, etc. or for publishing art and stock images to make them available and discoverable to be included in the journals.

Newsroom

A content management system for creating and updating journals and managing subscriptions.

Silk Search and Index

An integrated service that provides on-demand indexing and search.

Setup

Clone the repository

git clone https://github.com/decent-newsroom/newsroom.git
cd newsroom

Create the .env file

Copy the example file .env.dist and replace placeholders with your actual configuration.

Add a project encryption key and nsec

Symfony uses a vault mechanism for managing secrets securely. To save the nsec, run this command inside your Docker container:

docker-compose exec php bin/console secrets:set APP_NSEC

To save the encryption key:

docker-compose exec php bin/console secrets:set APP_ENCRYPTION_KEY

Nostr Relay

The project includes a private read-only Nostr relay (powered by strfry) that acts as a local cache for long-form articles and related events. This improves performance and reduces dependency on public relays.

Quick Start:

# Start the relay
make relay-up

# Run initial backfill
make relay-prime

# Test it
make relay-test

For detailed documentation, see documentation/relay.md.

Key Features:

  • Read-only cache (denies client writes)
  • Automatic periodic sync from upstream relays
  • Caches long-form articles (NIP-23), reactions, zaps, highlights, and more
  • WebSocket endpoint exposed via Caddy
  • Easy backup/restore with make relay-export / make relay-import