1. Start working off the main branch. git checkout -B my_branch

  2. Migrate your dev and test databases to ensure your databases have the latest schema

    [deno task db:local migrate latest](<https://virtualhospitalsafrica.notion.site/4d4c461bbc864500abe75b047bd6094b>)
    
  3. Make changes locally. If working on the web app, you should be able to manually test everything locally before going to production. For the chatbot WhatsApp Cloud API makes POST requests to the production https://virtual-hospitals-africa.org/api/webhook with WhatsApp events, but the chatbot can be run locally

  4. If you need to change the data model you may use Migrations to do so.

  5. Test your changes manually, including any migrations, locally on a feature branch.

  6. Add automated tests that ensure the feature works. deno task test runs the test suite

  7. Run deno fmt and deno task check

  8. Make a Pull Request into the main branch for your changes.

  9. Add a description in the PR of what and why the changes were made. Include a screenshot and/or videos of it working — showing how to go through a new workflow, for example.

  10. Ensure that the build runs green

  11. Ensure that your commits are ahead of the main branch (prefer rebase relative to pull/merge for this)

  12. Message your teammates on Slack asking them to review the change.

  13. Reviewers can review code asynchronously or folks can meet up over a Slack huddle.

  14. Merge the changes to the main branch with signoff from another teammate.

  15. Run migrations if necessary

  16. Run heroku logs --tail to see if logs look normal during and after the deploy

  17. Test your change manually on production web or the chatbot

  18. If it broke, roll back and notify the team

  19. If it passed, notify that the changes are live and working as expected

  20. You just shipped! 🚢