High Level

Problem and Solution (5 marks)

Make sure you re-introduce your problem and solution, this can be brief. You don’t need to spend a ton of time on this.

This is your product scope right now ;)

Vision (10 marks)

This is likely throughout much of your presentation in various parts, but it is good to explicitly call out what your vision for this product is and reflect on its viability.

When we ask directed subject matter expertise questions, you should be able to answer many of them.

Explain your choices in your product. For example, if you aim to target medical insurance but you can’t find that dataset, explain that automotive insurance is usable and doesn’t impact the vision of your product (and why).

Software (30 marks)

The application (15 of 30 marks)

Development (5 of 30 marks)

I recommend [GitHub Actions CI](https://help.github.com/en/actions/automating-your-workflow-with-github-actions).

Examples:

- [JavaScript example for GitHub Actions CI](https://github.com/integrations/jira/pull/295) - [Ruby example for GitHub Actions CI](https://github.com/dcsil/learn_software_app/blob/master/.github/workflows/ruby.yml)
Write a script named `script/bootstrap`, it should setup much of your system for you. It is fine if the script targets one operating system (mac, Linux, or windows). Make note of this script in the README of your app. If you have a getting started guide, this can be in there but you should make sure that that guide is mentioned in the README. Docker and Docker Compose is a good option here

Examples:

- [JavaScript and Node](https://github.com/integrations/jira/blob/master/script/bootstrap) - this uses `brew bundle`, which comes from https://brew.sh/ - `brew bundle` installed everything from the [`Brewfile`](https://github.com/integrations/jira/blob/master/Brewfile)

Production (7 of 30 marks)

You can deploy to Heroku really easily with Ruby, JavaScript, Python, Go, PHP, and other languages. - You only need the hobby dyno - I would recommend Postgres as there is a free hobby database you can use - This is not good to host your machine learning experiments - It is included in your [GitHub Student Pack](https://education.github.com/pack) - [DigitalOcean](https://digitalocean.com), [Amazon AWS](https://aws.amazon.com/), and [Microsoft Azure](https://azure.microsoft.com/en-us/) are other options and also included
- [LogDNA](https://logdna.com/) is included in your [GitHub Student Pack](https://education.github.com/pack) - There is also a Heroku add-on to make this really easy Logging services help you debug your application and know what's going on. Be careful not to send passwords, tokens, and other secure information here. Some places, like GitHub, even remove [personally identifiable information](https://en.wikipedia.org/wiki/Personal_data) from the logs.
- [Sentry](https://sentry.io/) is included in your student pack - There is also a Heroku add-on to make this really easy While logging services help you debug, they can't keep track of all the information you need when an exception or bug occurs. For that, you need exception tracking. This will capture information like the stack trace of the exception, the error class and name, and other metadata to help you pinpoint the issue. Be careful not to send passwords, tokens, and other secure information here. Some places, like GitHub, even remove [personally identifiable information](https://en.wikipedia.org/wiki/Personal_data) from the metadata.

Development (8 of 30 marks)

- [ ] Development Setup Script (4 of 8 marks) - [ ] Set up Continuous Integration (4 of 8 marks)

Documentation (7 of 30 marks)

- [ ] Documentation or Up to date README (5 of 7 marks) - [ ] Top Level (to the code) YAML file (2 of 7 marks)

Documentation (3 of 30 marks)

This should include major documentation like architecture diagrams you've made, decisions should be recorded, and any other relevant docs about the app (debugging, development setup, etc).
```yaml tools: exceptions: https://... logging: https://... ci: https://... services: production: https://... (link to the dashboard, not the running app) staging: ... docs: getting_started: https://... commands: bootstrap: script/bootstrap database: create: bin/rails db:create migrate: bin/rails db:migrate server: bin/rails server ``` This should serve as an example. These kinds of files can help you debug, record links to docs, services, tools, and more. While this is less useful with one app, in an organization with many apps this can be crucial to remembering and finding information.

Reflection (15 marks)

Presentation (15 marks)

A presentation can be made up of many parts and serves to tell a story. In this case, the story is outlined by this assignment.