Ultimate Guide to Codebase Review and Dependency Management Workflow
Table of Contents
Background
When working with new codebases there's a fairly reasonable workflow to follow to determine
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)
Example
When running a build the goal is to determine which of the dependencies is called in order and secondly by usage volume.
Structure
Determine the size of the project:
tree | wc -l
Determine the dependencies required for the application from setup to provide service.
Process Dependencies
- Version Control: git + github
- Workflow: n/a
- Chat:
System Dependencies
- Dependencies: chef (vs. vagrant, docker, puppet)
Development Dependencies
Provide a summary of what the client has elected to use for their application:
- 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
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)
Deployment
- Deployment: Chef
- Versioning: Chef (identified in GitHub but without npm )
Operation
- Applications:
- Logging: Papertrail
- Escalation: n/a
- Dashboard: New Relic
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: