Skip to content

Independent study post mortem

Eric Kipnis edited this page May 16, 2016 · 14 revisions

Server

Server changes:

server git changes

What we accomplished

  • Wrap all Redis calls with a semantic wrapper
  • Reimplement Voting service from scratch
  • Implement Radicchio Redis timer

What didn't go so well

  • Stubbing service functions with Sinon.js after conversion to ES6
  • Voting Service most likely has uncovered bugs
  • Features like dashboards, private rooms and user email authentication became out of scope

What we learned

  • How to stub out functions for unit tests
  • How to release a library (Radicchio) on npm
  • A ton about the deeper workings of Redis
  • ES6 Syntax for conversion from ES5
  • Deeper understanding of REST HTTP design and websocket handlers

What we could improve on next time

  • Reach out to open-source communities about difficult tasks that we got stuck on
  • Better time-management in terms of what to focus on while working on the project (less time wasted on broken stub tests)
  • Should have learned React and Flux in the beginning to help on front-end side of project to accomplish more

Client

Client changes:

server git changes

What we accomplished

  • Redo project structure
  • Implement hydrate app state to simplify initial setup
  • Implement react-router high-level components
    • Allows linking to join/create modals
  • Implement Material-UI spec with form validation
  • Reduce build times from upwards of 30 seconds to under a second through incremental builds
  • Implement user colors and board options
  • Implement admin only updates of board options

What didn't go well

  • Did not get to hooking up the timer
  • Did not get to hooking up the voting
  • Didn't get to implement other features that were out of scope (dashboards, private rooms, etc.)

What we learned

  • Understand how to properly structure a Flux/React project
    • The challenge of moving a large codebase, back to industry standards
  • Understanding the React lifecycle, we've worked with React in a smaller scale operations, but this has a much more complex state.

What we could improve on next time

  • Use user stories to stay grounded in solving end-user problems, to avoid spending too much time on best practice solutions that do not directly benefit the user.
    • This will always be a balancing act, but having these improve side-by-side is important

NPM libraries published for the project

  • radicchio - A distributed timer implemented with Redis and Lua
  • express-json-status-codes - Extend the Express response object to have helper methods to set the status code and return JSON.
  • material-color - Dead simple JS access to the material UI color palette.