Codebase Review and Dependency Management

Table of Contents

1. Background

2. Checklist

  • [ ] environment setup
  • [ ] application startup
  • [ ] command review
  • [ ] application server: configuration review
  • [ ] database: commands review
  • [ ] database: connectivity (confirm access minimally to a staging environment and can list databases and dump)

3. Example

When running a build the goal is to determine which of the dependencies is called in order and secondly by usage volume.

3.1. Structure

Determine the size of the project:

tree | wc -l

3.2. Process Dependencies

  • Version Control: git + github
  • Workflow: n/a
  • Chat:

3.3. System Dependencies

  • Dependencies: chef (vs. vagrant, docker, puppet)

3.4. Development Dependencies

  • Logging: bunyan (loggly, windston)
  • Dependencies: bower (vs. npm, browserify, webpack, or client)
  • Language: es6+babel (vs. typescript, es5, coffeescript, clojurescript)
  • Build: requirejs
  • Packaging: webpack
  • Linting: n/a
  • Documentation: n/a
  • Tests: mocha + karma (vs. nightwatch, jasmine, chai, sinon, qunit)
  • Mock:
  • Utilities: jq
  • Watchers: nodemon

3.5. Application Dependencies

  • DB: redis
  • Storage: mongo (vs., sqlite, mysql, postgres)
  • Application: express
  • FE framework: angular
  • Template: lodash
  • Promises: when (vs. bluebird)
  • CSS: stylus (vs. less, sass, scss)
  • CSS: bootstrap
  • Utility: lodash, jquery
  • State: n/a (vs. redux, atom)

3.6. Deployment

  • Deployment: Chef
  • Versioning: Chef (identified in GitHub but without npm )

3.7. Operation

  • Applications:
  • Logging: Papertrail
  • Escalation: n/a
  • Dashboard: New Relic

4. Reading and Review

For any of the applications where there's no familiarity at least 10 minutes should be spent on the command line testing the library. For example:

  • jq: core is filter with
  • chef: ensure that a quick scan has been done

Create a client-specific artifact listing expected reading: