Homework 2: Sprint 0
Due on Gradescope Thursday, February 2, 2023 11:59pm
This homework is to be done and submitted as a team.
- Identify the key user stories that will constitute the Minimum Viable Product (MVP).
- Justify which features to include based on priority, and time available
- Understand and practice the basic building blocks for how to create and deploy a modern web app (related, in some fashion, to the MVC model)
Create Project Backlog
- Reconcile all individual user stories into a backlog of team user stories. For this project, we require you to work within the Github ecosystem.
- Take advantage of the Github Projects kanban board.
- Each item on the board should be a separate Github Issue. All Github Issues should be linked to a Pu ll Request and an assignee.
- Explore GitHub Documentation for a great guide on these tools!
- You should have the following columns categories (you can rename any of them as you see fit):
- Sprint To-Dos
- In Progress
- Estimate the amount of time your team will take to implement each user story, and justify your estimation.
- Write a document listing the user stories your team will include in the MVP and which your team will not. Add a SHORT justification for each user story decision. NOTE: you cannot select more than 40 hours worth of work in a single week, per team.
Select a Backend Framework
- Create a set of business objectives and criteria for deciding what type of framework you should use.
Evaluate two frameworks for building web apps on top of Node.js, identifying their strengths and weaknesses.
Choose (as a team) which framework is preferable for the development of Dronut.
- Write a business-style email justifying your choice of framework to your investors. Language is important here. Your investors are not software developers and will not understand jargon and technobabble.
Prepare to write the first line(s) of productive code.
- Choose a name for your team.
- You will be working on your team repository for this project. First, collectively choose a team name. Your team name should be unique, pronounceable, short, and something you would be proud to shout in your team cheer on the streets of Pittsburgh in the presence of small, impressionable, multi-lingual children.
- Agree upon and configure development communication tools, e.g. Slack, etc...
- Agree upon and configure your project management infrastructure, including bug tracking, task management, etc... We suggest that you use GitHub Issues.
- Create a repo for your team using Github classroom. NOTE: only one student should make the assignment repo, then add the rest of the team. DM us on Slack if you have issues.
- If you would like to try out a spoken, voice-based version of GitHub Copilot called Hey, Github, DM us on Slack. We have an offer from someone at GitHub to let you all test it out. You'll need to (register for the student version of GitHub Copilot)[https://education.github.com/students] first.
- Write a simple "hello-world" app with a test (even if it’s fake) and follow the application instructions in README that will be cloned into your classroom repo.
- Setup your team's development infrastructure, including development environment, Continuous Integration (CI), code style (via linter), and deployment pipeline, as per the README. We suggest you use GitHub Actions for CI.
- Deploy your "hello-world" application for the world to see!
Instructions for getting started can be found in the README.MD once you setup your classroom repo. This includes creating/joining a GitHub team, creating a repository, setting up GitHub Actions, Docker.
For deployment on a cloud server instance, the instructors suggest using fly.io which allows free deployment for small projects. The following links will help with setting up the service.
- How do I start with Node.js after I installed it?
- Dockerizing a Node.js web app
- Deploy via Dockerfile
- Initial setup with fly.io may require providing credit card details, but you will not be charged.
- Your app name must comprise only lowercase letters, numbers, and hyphens.
Do something fun (non-scholastic) with your team.
- Getting to know your colleagues in a friendly context can often lead to more effective collaboration; healthy teams often get lunch together, for example. To incentivize this, we will give your team 5% extra credit for this assignment if you meet as a team outside of a working session. You might want to eat together or go out for boba tea. If someone on your team is not feeling well, you may also do a virtual activity, such as an online gaming session (perhaps drawasaurus) or social "zoom lunch."
You will submit this assignment via gradescope, Homework 2.
Turn in one document that includes
- Your team's name
- A link to your team’s product backlog (i.e., your GitHub Projects board)
- A short justification for which user stories you are including in your MVP
- A short document that describes which backend framework you are choosing, and why you decided on that framework
- A URL which is running your starter repository
To earn your extra credit, email startups-staff with a picture of your team outing or screenshot of your virtual activity showing everyone who participated.
This homework is worth 50 points. To receive full credit, you must have a reasonable product backlog that includes estimates and a short (no more than a few sentences) justifications for the user stories you choose for your MVP. You should have a reasonable justification for which framework you choose, and you should be ready to write your first line of real, productive code in the next sprint.