{"id":18428723,"url":"https://github.com/sncf-connect-tech/vboard","last_synced_at":"2026-03-15T16:19:29.443Z","repository":{"id":28241659,"uuid":"117256322","full_name":"sncf-connect-tech/vboard","owner":"sncf-connect-tech","description":"Pins dashboard to share news among an organization","archived":false,"fork":false,"pushed_at":"2023-07-18T20:26:52.000Z","size":21105,"stargazers_count":7,"open_issues_count":52,"forks_count":5,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-22T21:41:59.631Z","etag":null,"topics":["angularjs","dashboard","docker","docker-compose","elasticsearch","hacktoberfest","heroku","java","pins","pinterest","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sncf-connect-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-short.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-12T15:21:07.000Z","updated_at":"2025-01-06T15:23:21.000Z","dependencies_parsed_at":"2023-01-14T08:26:14.937Z","dependency_job_id":null,"html_url":"https://github.com/sncf-connect-tech/vboard","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sncf-connect-tech%2Fvboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sncf-connect-tech%2Fvboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sncf-connect-tech%2Fvboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sncf-connect-tech%2Fvboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sncf-connect-tech","download_url":"https://codeload.github.com/sncf-connect-tech/vboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247697821,"owners_count":20981252,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angularjs","dashboard","docker","docker-compose","elasticsearch","hacktoberfest","heroku","java","pins","pinterest","spring-boot"],"created_at":"2024-11-06T05:14:28.733Z","updated_at":"2026-03-15T16:19:29.431Z","avatar_url":"https://github.com/sncf-connect-tech.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Pull Requests Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](http://makeapullrequest.com)\n[![first-timers-only Friendly](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](http://www.firsttimersonly.com/)\n-\u003e come look at our [good first issues](https://github.com/sncf-connect-tech/vboard/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\n\n[![Build, test and publish](https://github.com/sncf-connect-tech/vboard/workflows/Build,%20test%20and%20publish/badge.svg)](https://github.com/sncf-connect-tech/vboard/actions?query=branch%3Amaster)\n[![](https://img.shields.io/docker/pulls/vboard/vboard-batchs.svg)](https://hub.docker.com/r/vboard)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n\nDependency analysis: [![Known npm Vulnerabilities](https://snyk.io/test/github/sncf-connect-tech/vboard/badge.svg?targetFile=vboard-front%2Fpackage.json)](https://snyk.io/test/github/sncf-connect-tech/vboard?targetFile=vboard-front%2Fpackage.json) (npm) \u003c!--[![Known Maven Vulnerabilities](https://snyk.io/test/github/sncf-connect-tech/vboard/badge.svg?targetFile=vboard-ws%2Fpom.xml)](https://snyk.io/test/github/sncf-connect-tech/vboard?targetFile=vboard-ws%2Fpom.xml) (Maven)--\u003e\n\n\nV.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.\nV.Board is designed to be used for communication among an organization teams: project advancement, technology watch, etc.\n\nThis software has been used at oui.sncf since July 2016.\nThe public, open-source version of this project was published in January 2018. It's current status is: **INCUBATING**\n\nOnline demo instance: \u003chttps://vboard-demo.herokuapp.com\u003e\n\n![Animated demo showing how to add a pin](vboard_addpin_demo.gif)\n\n\u003c!-- toc --\u003e\n\n- [Features](#features)\n- [Usage](#usage)\n- [Contributing](#contributing)\n- [Architecture](#architecture)\n  * [Authentication](#authentication)\n\n\u003c!-- tocstop --\u003e\n\n# Features\n- a complete [Pinterest](https://www.pinterest.com)-like editable dashboard,\nwith comments and a search bar\n- a \"labels\" system, with per-user favorites and notifications\n- a \"likes\" system\n- per-user configuration of an avatar, a team, a description...\n- simple gamification, badges \u0026 leaderboard\n- fully dockerized\n- optional email notifications\n- integrate with [KeyCloack](http://www.keycloak.org) or [AWS Cognito](https://aws.amazon.com/cognito/) for identity \u0026 access management\n- a REST API\n- a RSS feed\n\n\n# Usage\nThe following command starts V.Board locally :\n\n    export TAG=latest\n    docker-compose build\n    docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --no-build\n\nYou can then access the website through http://localhost\nand the swagger at http://localhost/api/v1/swagger-ui/\n\n\n# Contributing\n\nWant to report a bug ? Suggest a feature ? Give us a hand ?\nGo have a look at our [CONTRIBUTING.md](CONTRIBUTING.md) guide.\n\n\n# Architecture\nV.Board is made of the folling modules, launched as `docker-compose` services:\n\n- `ws`: [SpringBoot](https://projects.spring.io/spring-boot/) REST web service (backend)\n- `front`: [AngularJS](https://angularjs.org) 1.5 web app served by Apache (front)\n- `batchs`: [logstash](https://www.elastic.co/fr/products/logstash) cron to update the ElasticSearch index from the database\n\n## Docker services\nSome extra `docker-compose` services are used:\n\n- `elasticsearch`: a standard Elasticsearch instance\n- `wsdb`: MySQL database for the backend\n\nThere are also some volumes used by the stack:\n\n- `images`: contains all images for vboard pins and users\nIt is shared between the `ws` and `front` services: `ws` writes in it and `front` reads from it.\n- `wsdb-data`: contains the backend database\n\n## Authentication\nThere are 3 supported mode of authentication, that are activated in this order:\n\n- through a [Keycloak instance](https://www.keycloak.org), if the environment variables `$KCK_ENABLED`, `$KCK_PUBLIC_HOST` \u0026 `$KCK_REALM_KEY` are defined,\n_cf_. [KeycloakEnabledInEnv.java](https://github.com/sncf-connect-tech/vboard/blob/master/vboard-ws/src/main/java/com/vsct/vboard/config/KeycloakEnabledInEnv.java)\n- through [AWS Cognito](https://aws.amazon.com/fr/cognito/), with a `X-AMZN-OIDC-DATA` HTTP header containing a JWT token,\nif the environment variable `$AWS_COGNITO_ENABLED` is defined\n- anonymous mode\n\n## Alternative software\n\n- [linkding](https://github.com/sissbruecker/linkding): self-hosted bookmark service based on Python \u0026 SQLite\n- [laarc](https://github.com/laarc/laarc): self-hosted HackerNews-clone based on Racket (LISP)\n- https://tildes.net: self-hosted Reddit-clone in Python\n- https://postmill.xyz: self-hosted social link aggregator with voting and threaded comments, built on PHP Symfony\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsncf-connect-tech%2Fvboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsncf-connect-tech%2Fvboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsncf-connect-tech%2Fvboard/lists"}