X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=README.md;h=41f3e83dcd0d44661a1190f9fe3fab874d9292d6;hb=refs%2Ftags%2Fv1.3.12;hp=138e4583cbd3c6d247d29d8a934beb1692b1823b;hpb=33897b863a84ff7d248888f83dc100a96cd9bc49;p=websub-hub diff --git a/README.md b/README.md index 138e458..41f3e83 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ An IndieAuth profile may be used to view any topics associated with that profile One way of deploying this server is behind nginx, with the pm2 package to manage the server process, and a local postgres database. Some details on this are presented here as a rough guide to any parts of this stack which may be unfamiliar. -- Have NodeJS 12-ish available. +- Have NodeJS 14-ish available. - Have PostgreSQL available. - Clone the server repository. ```git clone https://git.squeep.com/websub-hub``` @@ -50,7 +50,7 @@ One way of deploying this server is behind nginx, with the pm2 package to manage - Prepare PostgreSQL with a user and database, using e.g. ```psql```. >
> CREATE ROLE websubhub WITH CREATEDB LOGIN PASSWORD 'mypassword'; - > GRANT websubhub TO postgres + > GRANT websubhub TO postgres; > CREATE DATABASE websubhub OWNER=websubhub; > GRANT ALL PRIVILEGES ON DATABASE websubhub TO websubhub; > \c websubhub @@ -114,6 +114,8 @@ The Hub keeps track of three primary entities: Any tasks in progress (notably: fetching new topic content, distributing that content to subscribers, or confirming pending verifications) are doled out and managed by a cooperative advisory locking mechanism. The task queue is wrangled in the database within the `*_in_progress` tables. +![Entity relationship diagram for Postgres engine](./documentation/media/postgres-er.svg) + A Hub node will periodically check for more tasks to perform, executing them up to a set concurrency limit. ### Quirks @@ -146,7 +148,7 @@ This implementation is built atop an in-house API framework, for Reasons. It wo - enum.js - invariants - errors.js - local Error types - link-helper.js - processes Link headers - - logger.js - a very simple logging class + - logger/ - adds service-specific data filters to our logging module - manager.js - process incoming requests - service.js - defines incoming endpoints, linking the API server framework to the manager methods - template/ - HTML content