Code Monkey home page Code Monkey logo

solid-discussion-app's Introduction

๐Ÿ™ Solid Discussion App

โ“ What is it ?

Solid Discussion App (SDA) is a client web application that allows users to have discussions in a Solid environment :

Solid (derived from "social linked data") is a proposed set of conventions and tools for building decentralized social applications based on Linked Data principles. Solid is modular and extensible and it relies as much as possible on existing W3C standards and protocols. source

To use the application users must have a Solid pod. You can have a free one at solid.community. However some features as read / write in a public discussion doesn't need a Solid pod.

SDA is written with React from create-react-app and follows redux principles.

The design follows Material Design principles.

๐Ÿ“• Backlog

โญ๏ธ [SDA-1] A user can connect to his pod

๐Ÿ“‹ Description

A user can authenticate himself with his WebID :

The WebID 1.0 (Web Identity and Discovery) standard is used to provide universal usernames/IDs for Solid apps, and to refer to unique Agents (people, organizations, devices). source

The app display the name and the avatar of the connected user if data are fulfilled.

The app recover the previous session.

๐Ÿ”ง Implementation

The app uses solid-auth-client library to handle authentication with a Solid server such as node-solid-server. The library completely abstracts the complexity of authenticating a user and handle the session.

Once the user is authenticated we load data about the user via his WebId profile in turtle format and parse it with the rdflib.js library to extract his foaf:name and his foaf:img.

๐Ÿ“… Status

Done


โญ๏ธ [SDA-2] A user can create a discussion

๐Ÿ“‹ Description

A user can create a new discussion on his pod.

The user must give a name to the discussion.

The user can choose the storage of the new discussion.

The user choices the path where to store the discussion on the storage.

๐Ÿ”ง Implementation

The app uses the SIOC Core Ontology Specification to modelize business data (discussion, messages, participants, etc.). Other vocabularies will be implemented later. The class sioc:Thread is used to represent a discussion.

New discussion will be created in a dedicated folder on the user's pod. Maybe it could be usefull to save the discussion as a simple file. Maybe a future functionality.

Like for SDA-1 the app uses rdflib.js library to parse linked data saved on users pod. Especially, the pod explorer allows users to navigate in their LDPContainers by doing a SPARQL request locally.

New solid tools are being created (LDflex and react-components). Very promising...

๐Ÿ“… Status

Done


โญ๏ธ [SDA-3] A user can add participants

๐Ÿ“‹ Description

Once a discussion is created the user can add participants by adding their webids.

๐Ÿ”ง Implementation

The new participant is added as sioc:User in the source file of the discussion. For example :

@prefix : <#>.
@prefix sioc: <http://rdfs.org/sioc/ns#>.
@prefix terms: <http://purl.org/dc/terms/>.
@prefix c: <https://www.w3.org/People/Berners-Lee/card#>.
@prefix c0: </profile/card#>.

<>
    a sioc:Thread;
    terms:title "Yo";
    sioc:has_subscriber :account1, [ a sioc:User; sioc:account_of c:i ].
:account1 a sioc:User; sioc:account_of c0:me.

The new participant is also added to the acl file. For example :

@prefix : <#>.
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
@prefix c: </profile/card#>.
@prefix c0: <https://www.w3.org/People/Berners-Lee/card#>.

:owner
    a acl:Authorization;
    acl:accessTo <index.ttl>;
    acl:agent c:me;
    acl:mode acl:Control, acl:Read, acl:Write.
[
    a acl:Authorization;
    acl:accessTo <index.ttl>;
    acl:agent c0:i;
    acl:mode acl:Read, acl:Write
].

The new participant is now authorized to load the discussion and see other participants.

๐Ÿ“… Status

Done


โญ๏ธ [SDA-4] A user can load a discussion

๐Ÿ“‹ Description

A user can load a discussion by hitting a url. The app must display discussion name, messages and participants.

๐Ÿ”ง Implementation

๐Ÿ“… Status

Doing


โญ๏ธ [SDA-5] A user can post messages

๐Ÿ“‹ Description

A user can post messages.

๐Ÿ”ง Implementation

๐Ÿ“… Status

To Do


โญ๏ธ [SDA-6] A user can invite participants

๐Ÿ“‹ Description

Once a discussion is created the user can invite other people to participate by sending them an invitation with an appropriate link. The user can only add members to a discussion he owns.

๐Ÿ”ง Implementation

๐Ÿ“… Status

To Do


solid-discussion-app's People

Contributors

dindy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.