Whenever I take on a new project, I like to use a checklist to make sure I’m covering important aspects of the project implementation.

Obviously this is a bit generic, and usually gets modified depending on circumstances - this one is for a Rails project hosted on Heroku..

Overview

What’s the general background to the project?

  • History of development
  • Site and app functions
  • Architecture overview - front end, admin pages, APIs..
  • Current versions (Ruby, Rails, PostgreSQL, Heroku stacks..)

Development

Does the development process currently follow a regular pattern?

  • Workflow (e.g. trunk based development?)
  • Code repos, PRs, issue tracking
  • Environments (dev, test, staging)
  • Docker, Vagrant
  • Local database copies, asset storage, vimeo sandbox
  • Dependencies & installs (e.g. image processing)

Testing

Crucial!

  • Unit tests, integration tests, functional tests
  • Frameworks (RSpec, Capybara, Cucumber..)
  • Browser tests (Selenium, BrowserStack..)
  • CI (CircleCI, Travis, GitLab..)
  • Acceptance tests (human)

Deployment

Supporting the codebase won’t be any use unless it can be deployed..

  • Scripts
  • Downtime
  • Blue/Green
  • Staging and Production environments

Hosting

Where does it run?

  • Heroku dyno types and add ons
  • Load balancers
  • Background jobs
  • Cron jobs
  • Scaling

Integrations

There are usually some 3rd-party services to manage.

  • User account management
  • Stripe
  • Vimeo
  • Emails
  • Search indexing

Services

External services that the project relies on.

  • DNS
  • Certificates
  • Monitoring (uptime, performance, alerts)
  • Analytics
  • Penetration testing?

Accounts, logins, keys

Vital to make sure that I can get access..!

  • Heroku
  • Github
  • DNS
  • Status monitoring, alerts, analytics
  • Stripe
  • Vimeo
  • Email
  • Logging

Project documentation

There may be some history (especially good if design decisions have been documented)

  • Project plans
  • Backlog
  • Design guides
  • Incident reporting & downtime analysis