vibe@Beamery is a survey tool that aims to assess employees' engagement at work, and focusses on gaining their trust by preserving anonymity when required by the People team.
The frontend was built using ReactJS, and the MaterialUI library is used for the majority of components.
The backend server was built in Node.js and Express.
The server is hosted on Heroku, the client on Netlify, and the database is a MongoDB instance stored at MongoDB Atlas.
Testing is run with Jest, and we make use of Travis for Continuous Integration.
Once the admin has logged into the page, they are presented with the Dashboard. This is the home page of the app, and contains a summary of all active and draft surveys stored on the database. The admin can create a new Survey by selecting 'Create Survey' or 'Create From Template'.
The admin can start by creating a new survey from scratch. The mandatory fields are:
They can also set the survey as anonymous and a default message will be displayed to the survey recipient once they get access to the survey link.
To select the recipients, the admin is presented with a list of employees at Beamery. They have the ability to filter by both department and location, as well as searching for individuals by name. The user does not have to select recipients when drafting a survey. That can be done later on, before making it active.
After creating the survey, the user can go back to their dashboard, see all existing surveys, and view them in more detail.
The detailed view of a survey consists of a page where the admin can see the title, description, recipients list and current status of the survey.
The survey can be:
drafted:
active:
closed:
The admin can use any existing survey as a template. Once they perform this action, they will be able to easily edit a duplicate of that survey and keep its original recipients list.
Once a survey is made active, the admin can invite the recipients to complete the survey via Slack. Each recipient will recieve a direct message from the vibe@Beamery Slackbot, which will contain a unique link to the survey. The admin can also add a message to be sent out along with the link, which supports emojis.
Each survey recipient receives a personalised link to the survey via SlackBot. If the survey is closed or they have already completed the survey, clicking on the link lands them on a page conveying this information:
The first survey page contains the Privacy Notice and a disclaimer, as well as a statement about the anonymity of the survey.
Once the admin chooses to close the survey, they will be able to export the survey's responses as a csv, which can be done in 2 ways:
A HUGE thank you to Michael, Oliver, Kristina, Oli and the rest of Founders and Coders for facilitating our learning, to Andrew Celi for guiding the project's Agile planning and delivery, and to the People team for all the given feedback and help on iteratively progressing with the development of the app.
To run locally:
Install:
Once the project is cloned, run sh start
from the root folder. This will run npm i
in the client
and server
directories, and run dockerup on all three containers. If you have already done npm i
and want to restart the Docker containers, run npm run dockerup
.
To spin down the Docker containers, once you are finished, and remove the stopped containers and respective images, run npm run dockerdown
whilst in the root folder.
To check all the tests in the project, using Travis, run npm test
from the root folder.
To view the database schema, please click here.