Project handover checklist
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
- 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