Code Monkey home page Code Monkey logo

feedbacker's Introduction

feedbacker

Because Feedback is a Gift!

This is web app designed to facilitate the collection of feedback for and individual. There is a specific workflow around the nomination of people to provide the feedback, submission and review, and distribution.

The nature of the feedback is in the form of a configurable set of questions with pick list answers and a free text comments section. All questions are optional by design since any feedback is better than none.

A useful future extension would be to facilitate ad-hoc and unsolicited feedback however that is (quite a long way) out of scope of this exercise.

Getting started

UI Demo

To start having a look at the simple demo implemented here you will need a basic webserver. The author used npm http-server executed from the /base/feedbacker directory.

To run the demo you will also need to copy the sample service responses from the /feedbacker/test/api/samples directory to the /feedbacker/public/api directory.

UI Tests

User interface tests are implemented using Karma.

Running these requires the following npm installations:

> npm install karma --save-dev
> npm install karma-jasmine jasmine-core karma-chrome-launcher --save-dev
> npm install -g karma-cli

The test may be executed via karma start conf/karma.conf.js from the base project directory.

Server Test and Startup

The server is implemented in Scala and by default uses a PostgreSQL database.

Some useful commands are:

> sbt
sbt> test
sbt> run
sbt> docker:publishLocal

Tech Stack

Feedbacker is implemented using scala and Play Framework on the server side, with Angular JS (version 1) and Bootstrap in the browser.

To develop you will need:

Tools and documentation include:

Database Development Configuration

To initialise the database for development follow the below steps:

  1. Install PostgreSQL
  2. Create a system user with the following credentials Username: feedback-service Password: password
  3. Create a new schema called feedbacks using the new user
  4. Apply all the up evolutions in the /conf/evolutions directory

NOTE: change the system password when deploying on a server.

Future Scope

There are are number of features which have been considered but not implemented at this point. These include:

  • pre-configure an internal hierarchy model within Feedbacker
  • additional reporting for viewing and/or sharing feedback
  • renaming Feedbacker to remove needless vowels

feedbacker's People

Contributors

lachlang avatar thsutton avatar istathar avatar toddmowen avatar

Watchers

Tin Pavlinic avatar Vineeth Varghese avatar James Cloos avatar  avatar Michał Kiędyś avatar

feedbacker's Issues

Possible to set self as "leader"

If a new account is created where the manager email is the same as the person's email, the PersonDao.create method will set the leader flag on the new account to true.

Aside, if a user changes their manager, the setAsLeader method isn't called for the new manager. This is probably a good thing with the current code, as you could set the leader flag of anyone by temporarily updating the manager email for an account.

Session management

This should do the job:

import java.security.SecureRandom
import java.util.{UUID, Base64}

case class UserId(value: UUID)
case class SessionId(value: String)

object SessionIdGenerator {
  val random = new SecureRandom()

  def newSessionId(): SessionId = SessionId {
    val bytes = new Array[Byte](64)
    random.nextBytes(bytes)
    Base64.getEncoder.encodeToString(bytes)
  }
}

Text in drop-down menus is difficult to read

Some feedback questions have answers in a drop-down menu with a number followed by a sentence or two explaining the value of the number. Some of the options are so long that they don't fit on the screen and are difficult to read.

Removed deprecated code

Utils service and questions service are no longer required and should be cleaned up from the code base.

Nominations type ahead

Current thinking:

  • Use angular bootstrap component
  • Statically load full list of names and emails when controller loaded
    • Users will have access anyway, no point in more server calls for the perception of security
    • Do not include guid and manager details in response

Questions need additional context or information

Some of the questions refer to objectives, values, risk frameworks, etc. which require additional context or information to adequately answer (particularly if feedback givers are from other parts of the organisation and/or don't already know about the objectives, values, risk frameworks, etc.). The existing feedback spreadsheet contains graphics and information explaining these topics with links to the information on the relevant questions. It would be nice to have the information easily accessible from the question, such as through a link or in-line in the feedback form.

Summary view

Should include:

  • people in review group
  • nominated reviewers for each individual
  • status of feedback (submitted etc)
  • last updated date
  • link to detail and consolidated summary for each person

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.