Coder Social home page Coder Social logo

maibornwolff / retro Goto Github PK

View Code? Open in Web Editor NEW
34.0 9.0 12.0 19.25 MB

A self-hostable web application designed for remote retrospectives

License: MIT License

HTML 0.30% CSS 0.14% JavaScript 0.90% TypeScript 98.34% Shell 0.22% Dockerfile 0.10%
react retro retrospectives nodejs socket-io board organisation typescript remote-retrospectives planning-poker remote

retro's Introduction

Retro - Reflect, Refine, Repeat

github_workflow GitHub release GitHub code style: prettier

What is Retro?

Retro is a tool that is used for retrospectives and planning poker sessions. The goal of Retro is to have an easy to use and secure way of having retro and planning poker sessions.

Retro uses a peer-to-peer approach, where all communication including retro and poker information is shared between users only and never reaches a backend server. The backend server is only used for signaling, which is the initial handshake between the participants in a room. This is possible by following the WebRTC protocol.

Retrospective

retro_example

Planning Poker

planning_poker_example

Requirements

  • Latest Node.js LTS version
  • NPM version >= 7

Hosting

This application requires three services to be running and configured correctly.

Docker image Exposed port
Retro Frontend 80
Retro Backend 3001
Signaling Server 9000

WebRTC

By default, the clients identify the IP address of the other peers by using a public STUN server by Google. A TURN server is not provided by default and must be hosted additionally. The frontend can be configured to overwrite the ice server urls.

Environment variables example

Frontend

  • RETRO_MAX_VOTE_COUNT = 3
  • BACKEND_PROTOCOL = "https"
  • BACKEND_HOST = "my-api-domain.com"
  • BACKEND_PORT = 443
  • SIGNALING_SERVER_PROTOCOL = "https"
  • SIGNALING_SERVER_HOST = "my-signaling-domain.com"
  • SIGNALING_SERVER_PORT = 443
  • ICE_SERVER_URLS = "stun://stun.l.google.com:19302,turn://user:[email protected]:1914"

Backend

  • CORS_ORIGIN = "my-api-domain.com,my-signaling-domain.com"

Development

Quick start guide can be found here

Contributing

For information on how to contribute, see Contributing

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Adrian Endrich
Adrian Endrich

💻
Ben Willenbring
Ben Willenbring

💻 🤔 🚧 📆
Claas Busemann
Claas Busemann

💻
Dominik Schumann
Dominik Schumann

💻
Lukas Richter
Lukas Richter

💻 🤔 🚧 📆
Maria Hallmann
Maria Hallmann

💻 ⚠️
Marius Wichtner
Marius Wichtner

💻
Martin Schröder
Martin Schröder

💻
PaulaBre
PaulaBre

💻
Tobias
Tobias

💻
Yadullah Duman
Yadullah Duman

💻 👀 🤔
ravensinth
ravensinth

💻
Manuel Lehé
Manuel Lehé

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

retro's People

Contributors

allcontributors[bot] avatar cctechuser avatar claasbusemann avatar dependabot[bot] avatar dostulataa avatar hall-ma avatar mariusmaibornwolff avatar mrpatpat avatar nearw avatar nomandes avatar paulabre avatar sillydomnom avatar xworkerbeex avatar yduman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retro's Issues

Comment on cards

The use case would be something like this:

Sometimes when we discuss about an item and there could be some relevant information about it (e.g. a link), then people started to share this information via the chat of the video client. With this feature all relevant information or just some comment could be attached on that retro item itself.

Vote count can be set to negative numbers

Vote count can be set to negative numbers .
Should go max. down to 0 Votes.

(Or is there a use case I am not aware of, that requires negative votes?
Downvoting could be restricted, aka "Max. 3 downvotes", but that seems to me like a new feature and mostly not needed in typical retrospective circumstances)

Move styled components to separate file

These are the files, using styled components

Board.js

  • Container -> rename to BoardContainer

Column.js

  • Container -> rename to ColumnContainer
  • StyledTitle (has component as argument) -> rename to ColumnTitle
  • ItemsContainer
  • ColumnHeader
  • ButtonContainer
  • ColumnActionButton (has component as argument)

Header.js

  • Container -> rename to HeaderContainer
  • StyledTitle (has component as argument) -> rename to BoardTitle

Item.js

  • Container -> rename to ItemContainer

Add a page for planning poker

In the Homepage you will have an option to start a planning poker session. After clicking it you start a new sprint planning context at /planning/:id.

The planning procedure will be very basic.

All users see a list of cards they can choose for each story to vote. When the moderator starts the poll. Everyone has one vote. The moderator can start a re-vote.

Change to CircleCI

Since TravisCI did some shady moves lately, I'd personally feel more comfortable by using CircleCI.

Introduce DB

The project currently works with the filesystem. To ensure performance and relief the server from too many filesystem accesses, we need to introduce a database. That means that we have to change the whole backend API from the fs module of Node.js to an appropriate DB API

Continue discussion alert

If we reach the time limit of a discussion, we pop up a dialog where every user can either vote for or against a continued discussion.

Private Mode

The moderator can activate the private mode in order to blur items in the writing phase

Vote Count

The moderator can specify the amount of votes each user has.

Board Export

Users have the ability to export their board as PDF when their retrospective is finished

Mobile testing

We need some manual testing in order to see what works and what's not

Create a filter in order to filter authors

Some teams apparently have the following workflow:

  • Everyone creates their cards
  • Then each user introduces all its cards

A filter would make this process easier, since you don't need search for it the hard the way

UI/UX improvements for dialogs

All dialogs display an error state by default, when e.g. a textfield is empty at first. From a UX perspective is this not a good practice. We should highlight nothing at first and after an interaction with the form field, we highlight the error message in the error case.

Import/Export Board

A feature request, where the moderator can export the board metadata and can create a new board based on this metadata. The provided use-case was that e.g. person A is creating a board template and provides this template for person B. So both work with the same initial state, but can modify it how they want in their teams.

Timeboxing

Users can define in their settings a timebox for each item that will be discussed.

Joining the board

If I get a link to a board and join it, I want to see the current board

More E2E tests

We definitely need more tests, since some are missing and we also have new features again, that are untested.

Testing

We definitely need to add tests before release and setup a CI server

Privacy Mode

  • If the privacy mode is on, then all cards are blurry at creation
  • If the privacy mode is off, then all cards are not blurry

Add keybindings

Introduce useful keybindings to enable a smooth workflow. E.g. for item creation, deletion etc.

Add timeboxing

You can trigger timeboxing by a mechanism (e.g. button) in order to start a timer, which runs as long as the user defined.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.