From 491c5696cc5050f02df81b8b62c53ef00ad89d4e Mon Sep 17 00:00:00 2001 From: me Date: Sat, 15 Mar 2025 19:18:57 +0200 Subject: [PATCH] readme --- frontend/README.md | 14 +++++++------- readme.md | 42 ++++++++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 29024 bytes 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 readme.md create mode 100644 screenshot.png diff --git a/frontend/README.md b/frontend/README.md index 23e81c0..c766be1 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -14,11 +14,11 @@ In your HTML, add the following: ```html
- - + data-element="ucs-comments" + data-ucs_url="[SERVICE_URL]" + data-site="[WEBSITE]" + data-path="[PAGE_PATH]" +> + + ``` diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e3ba861 --- /dev/null +++ b/readme.md @@ -0,0 +1,42 @@ +# Universe Comment System + +A web service adding comments to websites. + +The backend service serves as a simple read/write database for comments per site/page, +and the frontend is an embeddable component you can place in your page that will interact with +the backend service. + +## Screenshot + +screnshot + +## Build + +Requires node.js. + +Use `./bundle.sh` to generate a `.tar.gz` containing the service. + +## Run + +Extract the archive file produced by `bundle.sh` into a directory, +for example: + +```sh +mkdir ucs/ && tar xzvf ucs-*.tar.gz -C ucs/ +``` + +Create a configuration file for your website in `./ucs/config/production.json`. +See [backend/config/default.json](./backend/config/default.json) for an example configuration. + +Then add the following HTML to your website page, changing the parameters marked in `[]`: + +```html +
+ + +``` diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..51a79787e40577eb688193066f6a82485942065c GIT binary patch literal 29024 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 literal 0 HcmV?d00001