• Stars
    star
    795
  • Rank 57,248 (Top 2 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 11 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ’‘ dokieli is a clientside editor for decentralised article publishing, annotations and social interactions

dokieli

Join the chat at https://gitter.im/linkeddata/dokieli

There is no root, authority, or centralisation here. Control yourself!

dokieli is a decentralised article authoring, annotation, and social notification tool which works from Web browsers. It is built with the following principles in mind: freedom of expression, decentralisation, interoperability, and accessibility.

It can be used as a:

  • single-page application - open any dokieli embedded article
  • browser extension - import this repository in your Web browser or install Web Extension from Chrome Web Store or Add-ons for Firefox

License

Documentation

Specifications

Features

  • In-browser document authoring and formatting, and semantic enrichments (RDFa annotations).
  • Content negotiation is possible for RDFa, Turtle, JSON-LD, RDF/XML.
  • Uses author's information from their online profile (WebID).
  • Creation of new documents from any existing dokieli document - part of self-replication.
  • Save document and its dependencies to a new location (anywhere on the Web given access) - part of self-replication.
  • Open and edit (HTML+RDFa) URLs.
  • Individually assign the language of articles and annotations and parts within.
  • Assignment of URI fragments (to any unit of significance) so that other resources on the Web can link to it.
  • Implements versioning and has the notion of immutable resources.
  • Embedding data blocks, e.g., Turtle, N-Triples, JSON-LD, TriG (Nanopublications).
  • Embedding of media objects, tables, and interactions.
  • Automated references and citations (retrieves and reuses structured information).
  • Insertion of table of contents, figures, tables, abbreviations.
  • Drag and drop to reorganize the document's sections and table of contents.
  • In-browser local storage, and document exporting.
  • Document metadata.
  • Views for screen and print (e.g., ACM, LNCS) - yes, you can output to a paper user interface: PDF
  • .. and many more on the way.

"Yea, okay, whatever, it doesn't do x, y, z!" You are welcome to create issues, discuss, or pull requests. Make it so!

Screencasts

Also available on https://dokie.li/ (with captions):

Examples

See the growing list of examples in the wild. Add the URLs of your articles or interactions to the list.

This repository is published and accessible from https://dokie.li/. dokie.li is intended to demo and exemplify what we can do with this technology. You are welcome to use and experiment with dokieli there, or anywhere else you come across a dokieli document.

For the scholars among us, see the authoring guidelines below. View the ACM guidelines using the LNCS typographical rules, and vice versa (see the menu) ;)

Dependencies

  • Read: client either loads local HTML files or fetches remote URLs, in that case the host sends HTML etc. All content is accessible at minimum from a text-browser
  • Local write: Web browser with JavaScript enabled (use export or local storage)
  • Remote write and access control: above plus WebID and personal online storage

These libraries are part of the dokieli distribution:

  • SimpleRDF (MIT License) used for RDF.
  • Font Awesome (CC BY 4.0 License / MIT License) for icons.
  • MediumEditor (MIT License) for document editing.
  • d3 (BSD 3-Clause) used for visualisations.
  • Shower (MIT License) used for slideshows.

How to contribute

  • Use it. Break it. Report it. Fix it! See issues.
  • Improve documentation (for the website or repository)
  • Publish articles with it.
  • Join the dokieli chat for help and discussion.
  • Encourage the ideas/movement and however else you want to contribute.

Development

  • General background in dokieli documentation.
  • See fork a repo to setup your own development repository and stay synchronised. Useful later to make pull requests. For example, using your fork at https://github.com /YOUR-USERNAME/dokieli :
# Clone your work repository, for example:
git clone [email protected]:YOUR-USERNAME/dokieli
cd dokieli

# Add the main repository to sync with
git remote add upstream https://github.com/linkeddata/dokieli

# Make sure to work off your main and synchronised
git checkout main
git fetch upstream
git merge upstream/main

# Install packages
npm ci

# Check out a branch for your changes
git checkout -b YOUR-WORK-BRANCHNAME

# Make your code updates at src/ , media/ etc.

# Build eg. to create scripts/dokieli.js
npm run build

# or automatically rebuild when files change
npm run watch

# or create a minified scripts/dokieli.js
npm run minify

# Test your changes, if all okay:

# Note: The add/commit lines below can be combined with `commit -am`
# If including scripts/dokieli.js, make sure that it is the minified version

# Add the changes you've made to staging
git add PATH/TO/FILE

# Commit staged changes with a useful message
git commit -m "Add x to do y"

# Push changes to your work repository
git push

Pull requests should be a single commit. It keeps the commit log concise and helps a lot towards the review process. There should not be any commits about merges or reverts in the commit history. See GitHub's pull requests for the remaining steps on how to propose your changes to be brought into dokieli's repository.

Tests

Unit tests

dokieli uses Jest for unit tests.

To run unit tests, run npm test.

Coverage reports are collected in tests/coverage.

End-to-end tests

dokieli uses Playwright for end-to-end tests.

To run end to end tests, run npm run test:e2e.

Reports are collected in playwright-report.

Supported By

Contributors

More Repositories

1

rdflib.js

Linked Data API for JavaScript
HTML
566
star
2

gold

Linked Data server for Go
Go
151
star
3

cimba

Client-Integrated Micro-Blogging Architecture application
JavaScript
100
star
4

warp

Warp - an LDP file manager
CSS
60
star
5

profile-editor

WebID profile editor
JavaScript
50
star
6

tabulator

Linked Data Browser
JavaScript
46
star
7

contacts

Address book-like application to manage contact information.
JavaScript
39
star
8

ldphp

Linked Data server for PHP
PHP
38
star
9

swap

The Semantic Web Application Platform: cwm etc
Python
34
star
10

gojsonld

Go
26
star
11

ontology-archiver

Copy favorite and commonly used RDF schemas/ontologies to a safe place
Python
26
star
12

tabulator-firefox

Linked Data Browser for Firefox
JavaScript
23
star
13

gpx-ontology

Ontology for GPX data in RDF
Makefile
15
star
14

app-schedule

When can we meet? Scheduling a meeting etc. Llinked Data Platform interactive social app
JavaScript
13
star
15

tabulator-chrome

Linked Data Browser for Google Chrome
CoffeeScript
12
star
16

shacl-check

A subset of the SHACL checking functionality.
JavaScript
9
star
17

ldpy

Linked Data server for Python
Python
8
star
18

spreadsheet

demo app
JavaScript
7
star
19

solid-fitness

Archive your fitness activities in a solid store where they belong
JavaScript
7
star
20

mod_authn_webid

WebID authentication module for Apache 2
C
6
star
21

webizen

Go
6
star
22

project-roadmap

Roadmap and wishlist for the Crosscloud project
5
star
23

solid-recursive-copy

Recursively copy resources across web sites which are solid-compatible
JavaScript
5
star
24

conexus

Decentralized RDF syndication service.
Go
4
star
25

errol

Send notifications to any LDP inbox
PHP
3
star
26

contactorator

An address book app . A 'Solid' App using the tabulator contact pane
JavaScript
3
star
27

webid.mit.edu

Python
2
star
28

solid-dav

Allow solid clients to think of caldav as linked data, and maybe even sync
2
star
29

tabulator-firefox-2

Firefox extension (SDK style)
1
star
30

rwt.js

Read-Write Tests in JavaScript
JavaScript
1
star
31

midichlorian

This is a sample app to demonstrate how serverside and clientside code can be used in conjunction to retrieve solid resources with minimal cert popup interference
PHP
1
star