Skip to content

Pins dashboard to share news among an organization

License

AGPL-3.0, Unknown licenses found

Licenses found

AGPL-3.0
LICENSE.txt
Unknown
LICENSE-short.txt
Notifications You must be signed in to change notification settings

sncf-connect-tech/vboard

Repository files navigation

Pull Requests Welcome first-timers-only Friendly -> come look at our good first issues

Build, test and publish License: AGPL v3

Dependency analysis: Known npm Vulnerabilities (npm)

V.Board is an information sharing app. It allows users to share "pins", that is byte-size pieces of information: an URL, a picture and a short description. V.Board is designed to be used for communication among an organization teams: project advancement, technology watch, etc.

This software has been used at oui.sncf since July 2016. The public, open-source version of this project was published in January 2018. It's current status is: INCUBATING

Online demo instance: https://vboard-demo.herokuapp.com

Animated demo showing how to add a pin

Features

  • a complete Pinterest-like editable dashboard, with comments and a search bar
  • a "labels" system, with per-user favorites and notifications
  • a "likes" system
  • per-user configuration of an avatar, a team, a description...
  • simple gamification, badges & leaderboard
  • fully dockerized
  • optional email notifications
  • integrate with KeyCloack or AWS Cognito for identity & access management
  • a REST API
  • a RSS feed

Usage

The following command starts V.Board locally :

export TAG=latest
docker-compose build
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --no-build

You can then access the website through http://localhost and the swagger at http://localhost/api/v1/swagger-ui/

Contributing

Want to report a bug ? Suggest a feature ? Give us a hand ? Go have a look at our CONTRIBUTING.md guide.

Architecture

V.Board is made of the folling modules, launched as docker-compose services:

  • ws: SpringBoot REST web service (backend)
  • front: AngularJS 1.5 web app served by Apache (front)
  • batchs: logstash cron to update the ElasticSearch index from the database

Docker services

Some extra docker-compose services are used:

  • elasticsearch: a standard Elasticsearch instance
  • wsdb: MySQL database for the backend

There are also some volumes used by the stack:

  • images: contains all images for vboard pins and users It is shared between the ws and front services: ws writes in it and front reads from it.
  • wsdb-data: contains the backend database

Authentication

There are 3 supported mode of authentication, that are activated in this order:

  • through a Keycloak instance, if the environment variables $KCK_ENABLED, $KCK_PUBLIC_HOST & $KCK_REALM_KEY are defined, cf. KeycloakEnabledInEnv.java
  • through AWS Cognito, with a X-AMZN-OIDC-DATA HTTP header containing a JWT token, if the environment variable $AWS_COGNITO_ENABLED is defined
  • anonymous mode

Alternative software

  • linkding: self-hosted bookmark service based on Python & SQLite
  • laarc: self-hosted HackerNews-clone based on Racket (LISP)
  • https://tildes.net: self-hosted Reddit-clone in Python
  • https://postmill.xyz: self-hosted social link aggregator with voting and threaded comments, built on PHP Symfony