PubHubs is the name for a new Dutch community network, based on public values. PubHubs stands for Public Hubs. It is open and transparent and protects data of the network’s participants. PubHubs aims to connect people, in different hubs, such as your neighborhood, sports club, school class, museum, patient organisation, local library, municipality. In each such hub, a relevant part of one’s own identity plays a role. PubHubs focuses on reliable information, if necessary with digital signatures, and on trusted communication, if necessary with guarantees of the identity of participants.
For more information and contact see our website.
The PubHubs project is not finished. We gradualy moving towards several test fases. Much of the code you find here will be changed before a definitive release. However, we'd still like to show everyone the current status of the code. And if you or your organisation would like to be involved during the testfases, please contact us.
This repository is a mirror of our internal repository where actual development happens. If you want to contribute, test, or report an issue. Please contact us
In the longer term we'd like to move to a more open way of developing, but for now our repository is tightly linked to our (testing) infrastructure, and we'd like to keep this link for now.
Pubhubs consists of the following components:
- Pubhubs Central: The PubHubs platform itself, for central login and authentication. Hubs will only get pseudonyms of the user but never the central identity. PubHubs Central is written in Rust.
- Global Client: The client which is used to navigate between Hubs. It uses an iframe to embed different Hubs (hosted on different servers). The Global Client is written in TypeScript with Vue.
- Hubs: Modified matrix homeservers, in the PubHubs platform these will not be federated so ids are not shared between hubs (in the longer term we'd like to link hubs to be able to share content so maybe some federation will happen). Written in Python. The hub server also uses a Yivi server for secured rooms etc.
- Hub clients: A client which communicates to a Hub, embedded in the Global Client. This client is at its core a matrix client with specifics for PubHubs. The Hub Client is written in TypeScript with Vue.
For the identity oriented functionalities of PubHubs we use Yivi. Yivi is also used for logging in to the central platform.
- docker_yivi - Everything needed for building the yivi image for PubHubs Central
- doc - Documentation
- global-client - The code for the global-client. It uses also code found in the
hub-client
. - hub-client - The code for the hub-client.
- pubhubs - The code for PubHubs Central
- pubhubs_hub - Everything needed for building a hub's sever (Matrix). Including several Python modules for specific PubHubs features.
In the root folder you will find, amongst others the file start_test_setup.py
which will help starting a local development setup.
- Cargo (package manager for rust)
- Cargo Watch
- Node Package Manager (npm) (package manager for javascript)
- Docker
- Sass
- OpenSSL
Several libraries for the clients, most important:
More information, regarding development, branding, deployment etc. can be found here.
Also: