Authors

Eleutherios

Eleutherios (https://eleutherios.org.nz) is a global cooperative forum that enables people or businesses to serve one another remotely through the same forum or request.  It does this by giving end users the ability to create a forum or request that can scale, i.e. contain an indefinite number of sub-forums or sub-requests.

For example, a person who is isolated at home with the Corona virus could register with Eleutherios and create a forum for some food. A food store owner who is registered as a service in the system might get a notification informing them of the food request. They might subscribe to the forum and talk to the person and ask them what food they wanted and fulfill that persons request. The food store owner could aggregate the request by creating another request or sub-forum for a Healthcare worker to help with the delivery of the food. The Healthcare worker could aggregate the request again for a Delivery service and accompany the Delivery service and be the person that actually delivers the food to the infected person.

This type of system or way of serving requests is circular as opposed to linear, because it's the request or conversation that is being scaled or aggregated not the service that people or businesses are performing. Everybody still does whatever it is that they do, but in a more highly coordinated way.

Eleutherios is built with an HTML/javascript (Angular) frontend and node.js (nosql/firebase) backend.

Features:

  1. forum within a forum (scalability/manageability).
  2. tags for filtering forums or services (search).
  3. push notifications to keep users informed when new forums or services are created in the system (alerts).
  4. blocking to prevent unwanted services or users from serving in forums they have been asked not to serve in or for requesting services, they have been asked not to request (accountability).

Installation and Setup

0. Prerequisites

i.    a new or existing firebase application with at least a google, facebook or email passwordless provider
ii.   node.js (https://nodejs.org/en/)
iii.  firebase cli (npm install -g firebase-tools)
iv.   angular cli (npm install -g @angular/cli)

1. Cloning Eleutherios

The easiest way to get Eleutherios up and running on your machine is to fork it, then clone your fork into a new angular project

i.    git clone https://github.com/aletheon/eleutherios-alpha.git eleutherios-alpha-clone
ii.   create a new angular firebase project e.g. my-eleutherios

Go here for instructions on how to setup a Angular Firebase project: https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md

iii.  copy the eleutherios-clone files to your my-eleutherios replacing any duplicate files such as README.md, .gitignore and package.json.
iv.   run npm install to install dependencies
v.    create a new folder in your src folder called environments to hold your firebase database configuration files environment.prod.ts and environment.ts:

export const environment = {
  production: true | false
  firebase: {
    apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    authDomain: "xxxxxxxxxxxxxxxxxxx",
    databaseURL: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    projectId: "xxxxxxxxxxxxxxxxx",
    storageBucket: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    messagingSenderId: "xxxxxxxxxxxxxxxx",
    appId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    measurementId: "xxxxxxxxxxxxx"
  }
};

2. Login to firebase and deploy functions folder

Eleutherios uses functions to modify the behavior of the system and its data before or after it is created, updated or deleted in the system.  It's important that functions are enabled in your firebase project.

i.    firebase login
ii.   firebase init
        a. setup functions
iii.  firebase deploy --only functions

If you want to modify the behavior of the functions then you can test it on your firebase server first, before you check it into the master.

3. Setup firebase

It's important to setup your firebase backend to work with the source code.

i.    enable firebase authentication (email/password, google, facebook)
ii.   create a totals table in firebase not firestore, with the following default structure:
        totals
          forum
            count: 0
          service
            count: 0
          user
            count: 0

4. Run Eleutherios

Once you have setup Eleutherios you can run it on your local server.

If you have any difficulties setting Eleutherios up then please contact me so I can help you.

i.    ng serve
ii.   go to http://localhost:4200/

5. Contribute

Make a donation to the Eleutherios open source project. https://opencollective.com/eleutherios

Discuss or provide feedback. https://www.facebook.com/groups/2982366048442234/

Help fix bugs or resolve issues. https://github.com/aletheon/eleutherios-alpha/issues

Try It out

Hackathons

Technologies

css, html, javascript, typescript

Devpost Software Identifier

257240