sncf-connect-tech / vboard

Pins dashboard to share news among an organization

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Pins dashboard to share news among an organization

License:GNU Affero General Public License v3.0


Languages

Language:Java 48.8%Language:HTML 24.1%Language:JavaScript 18.6%Language:CSS 7.6%Language:Shell 0.6%Language:Dockerfile 0.3%