The intention of this assignment is to get an initial sense of the direction of your engineering focus. By now you should have had enough time with your teams to know what you’re building. Given the project and the skills in your team, the goal of this assignment is to choose a tech stack, design an architecture diagram for your application, and fill out a roadmap.
None of this is set in stone. These are initial plans and I will be highly sceptical if they are executed exactly as you plan here. The idea of this assignment is to get an initial sense of what you intent to do, the scope of work, and start planning the rest of the terms work.
Since you can change your decision from this initial starting point, you should keep track of it. You will be expected to record in some way why the pivot happened and what caused the pivot to happen. A GitHub issue is a recommended place to record this decision.
You will be expected to work together and submit this assignment as a team. Anyone can submit it, I suggest using an issue on the team repo you created in A1 to coordinate that submission.
product_reserach/use_cases.mdarchitecture/adrs directory generated by the template.archiecture/adrs, fill out your team’s intended tech stack by decisions, one per ADR (Architecture Decision Review) markdown file.None of this information is set in stone. Provide a basic insight into your initial thought processes, change the repo and Stack Decisions as these insights evolve throughout the course.
An architecture digram can be made in many different applications. Some common ones you’ll probably come across are LucidChart, Excalidraw, Figma (Jams), Google Drawing, and MermaidJS (programmatic, not super powerful). When it comes to your diagram, I expect it to make sense and be grouped logically. It should try to indicate similar pieces of the architecture and make the paths between nodes flow smoothly.
Below are 2 examples of the same architecture diagram. These are real diagrams that we made for the Slack Application at GitHub.
Your diagram should follow these same principles. You do not need to include pieces of your stack that don’t touch production (e.g. GitHub), but should include all tools that do (like monitoring). You can see an alternative format in the F2019 team Klutch (you should note this repo came from a previous iteration of this course, so some of the instruction was different. If you are unsure about something, err on the side of caution and use this term’s instructions or ask me).
This assignment helps you plan out the main use cases of your application and scope down the amount of work you can realistically achieve. The architecture diagram and stack choices help you to choose a good path, and are exercises often seen in industry when starting new services.
We expect all CSC491/2600 students to actively participate and have thoughtful discussions around which technologies to choose. Best practices lessons should be watched first in order to effectively complete this assignment.
You must create a release on your repo. This will give us a snapshot in time and allow us to grade it. See release body criteria and example below. Assignments without a coherent release body that follow the instructions in this assignment will be rejected and marked 1 day late.
One member of your team (could be the team leader, or any other leader) must submit a link to the release in Quercus for ‘Assignment 3 - Tech Choices, Architecture Diagram, Roadmap’. Only one team member needs do this.
Assignments are always due at 11:59:59pm Eastern Time.
Release bodies must include:

| Section | Description | Worth |
|---|---|---|
| Use Cases |
| 25.0 |
| Stack Decisions | Team describes the main technologies the team intends to use in the Github team repo. For every technology, there is also a decision record. Each decision provides thoughtful rhetoric on why this is a good decision for the team, leveraging ideas and concepts presented in lectures. | 20.0 |
| Architecture Diagram | Incorparting all parts of the technologies in your Stack Decisions and adding adequate detail inside of those technologies (e.g. don’t just list React server when there’s major components to list), design an architecture diagram in the software of your choice. Include it in the team repo as an image or a PDF. Diagram is clean and easily followed. Text can be sparingly leveraged. | 20.0 |
| Roadmap | Roadmap clearly captures in-depth details of the short term future (next few weeks), some light details about the medium term (towards the end of the term), and high level goals for the future (past the end of the term). Roadmap is defined in GitHub Issues and labelled using labels, milestones, or projects. Includes plans for user research. | 20.0 |
| Participation & Teamwork (Individual Grade) | Effectively worked as a team member and shared equitable work load during this assignment. Communication was regular and effective & acted in accordance with team principles. | 15.0 |
| Total: | 100 |
This scale is used for each line of the rubric above.
| Rating | Result |
|---|---|
| Outstanding | 100% of pts |
| Strong | 80% of pts |
| Acceptable | 60% of pts |
| Insufficient | 40% of pts |
| Unacceptable | 0% of pts |