Agile retrospectives for distributed teams
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Deploys to production leverage hot code upgrades Nov 4, 2018
.github Update Aug 22, 2017
bin Shift to the 'asdf' version manager for erlang/elixir version management Aug 30, 2018
config Deploys to production leverage hot code upgrades Nov 4, 2018
lib Add apple touch icon for mobile device users who add to homescreen Nov 8, 2018
priv Update deprecated ecto :datetime -> :naive_datetime Sep 8, 2018
rel Configure application for distillery releases Mar 31, 2018
test Disabled vote counters remain visible when retro is closed Dec 28, 2018
web/static Surface 'Visit Your Dashboard' link in closed stage's lower third Jan 23, 2019
.babelrc Add babel-preset-stage-2 Jan 5, 2018
.buildpacks Configure application for distillery releases Mar 31, 2018
.credo.exs First try didn't work; let's try this Jul 17, 2017
.ebert.yml Use our repo as styleguide repo on ebert Jun 8, 2017
.eslintignore Add '_build' directory to eslint ignore Jan 7, 2018
.eslintrc.js Bugfix: current userSelector returns memoized value after presence crash Jul 15, 2018
.gitattributes Repo: blacklist js tests from repo statistics Feb 11, 2018
.gitignore Add package-lock.json to .gitignore Oct 14, 2018
.tool-versions Bump erlang -> Sep 19, 2018 Create Jul 11, 2017 Add contact email for security vulnerabilities Sep 21, 2017
LICENSE Create LICENSE Jul 7, 2017
Procfile phoenix.digest -> phx.digest; phoenix.server -> phx.server May 24, 2018 Add README information about creating and migrating database for test Oct 25, 2018
compile phoenix.digest -> phx.digest; phoenix.server -> phx.server May 24, 2018
coveralls.json Coveralls ignores generated lib index file Feb 11, 2018
elixir_buildpack.config Avoid full rebuilds on deploy Oct 5, 2018
mix.exs Deploys to production leverage hot code upgrades Nov 4, 2018
mix.lock Bump slender_channel 0.1.1 -> 0.2.0 Sep 23, 2018
package.json Bump hard source webpack plugin to avoid leveldown dependency Dec 21, 2018
phoenix_static_buildpack.config Bump node 7.5 -> 8.7 Oct 15, 2017
postcss.config.js Extract color variables out into own file. Introduce postcss import dep Sep 10, 2017
webpack.config.js Dev: hot update json files are overwritten with consistent name Nov 6, 2018
webpack.devserver.js Surface webpack compilation errors in overlay Oct 17, 2018
webpack.dll.js Pipe browser log output in e2e tests to file. Feb 14, 2018
yarn.lock Bump hard source webpack plugin to avoid leveldown dependency Dec 21, 2018

CircleCI Coverage Status Ebert


This repository houses the application code for RemoteRetro, a web app that allows distributed teams to conduct effective Agile retrospectives. It is written in Elixir/Phoenix/React/Redux, and is sponsored by Stride Consulting.

Table of Contents

  1. Roadmap to MVP
  2. Project Management
  3. Dev Environment Setup
  4. Tests
  5. Code
  6. Contributing
  7. Code of Conduct
  8. Acknowledgements
  9. License

Roadmap to MVP

The MVP aims to provide a collaborative, real-time, facilitator-driven retrospective through the following stages:

  1. The Retrospective Prime Directive
    • frame the retro as a safe, collaborative space
  2. Idea Generation
    • invite ideas (happy, sad, confused) from participants
  3. Mute Mapping
    • participants group ideas into categories without speaking
  4. Labeling + Voting
    • participants vote on categories for discussion and root-cause analysis
  5. Action Item Generation
    • participants generate and assign action items
  6. Action Item Distribution
    • facilitator distributes action items via email to all retro participants

Project Management

To see the project's current feature pipeline, simply install the wonderful ZenHub Chrome Extension.

  • visit, install the ZenHub Chrome Extension, and authorize when prompted
    • Note: this installation assumes you visit using Chrome
  • once the extension is installed, you should be able to visit the boards by typing 'b', or, if clicking is more your speed, simply click the "Boards" tab on the repo's homepage

Dev Environment Setup


  • Install Homebrew
    • Note: You'll be prompted to install the command-line developer tools. Do it.
  • Install PostgreSQL via Homebrew:
brew install postgresql

# start postgresql at login
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
# load postgresql now
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

initdb /usr/local/var/postgres -E utf8

# depending on how you installed postgres, this user may already exist
createuser -s postgres

# make sure you can log in to default database
psql -h localhost

Elixir/Phoenix Dependencies

  • Install the asdf version manager
  • Install Erlang, Elixir, and their dependencies by running bin/install_erlang_and_elixir_with_dependencies
  • Compile the project and custom mix tasks via mix compile
  • Create the "remote_retro_dev" database and migrate via mix ecto.create && mix ecto.migrate
  • Create the "remote_retro_test" database and migrate via MIX_ENV=test mix ecto.create && mix ecto.migrate

Node Dependencies

Install nvm (node version manager):

curl -o- | bash

Note: additional nvm installation notes found at the nvm repo.

Install the latest node via nvm:

nvm install 8.7

Ensure the latest node is your default node version in new shells:

nvm alias default 8.7

Install Global NPM Packages

npm install -g yarn phantomjs chromedriver

Install Local NPM Packages via Yarn


Google OAuth

Authentication within Remote Retro relies on Google OAuth and the Google+ API. To set this up, navigate to the Google API console and create a new project:

Next, click on "Credentials" in the left sidebar nav. On the right hand side, click on the "Create Credentials" button and select "OAuth client ID".


  • Application type: Web application
  • Authorized JavaScript origins: http://localhost:4000
  • Authorized redirect URIs: http://localhost:4000/auth/google/callback

Click on the Create button. Using the information Google provides, add the following lines to your profile and source (or open a new terminal).

export REMOTE_RETRO_GOOGLE_OAUTH_REDIRECT_URI="http://localhost:4000/auth/google/callback"

Finally, enable the Google+ API for your project.

And Voila!

Start Phoenix endpoint with mix

Now you can visit localhost:4000 from your browser.


To continually execute the backend unit tests on file change:


To execute the end-to-end tests:

mix e2e

To continually execute the client-side unit tests on file change, run:

npm run test:watch


To run the local eslint:

mix lint


Contributing Guidelines

Code of Conduct

The Contributor Covenant


Many thanks to the project's contributors for devoting their time, energy, and passion, and additional thanks go out to the leadership of Stride Consulting for giving this project the opportunity it needed to bloom.