|
| 1 | +# Capstone Project |
| 2 | + |
| 3 | +For the next two weeks, you and your team will ideate and implement a working software system. You will have the opportunity to apply the skills that you have learned to solve an interesting problem or contribute a meaningful tool that improves our lives. |
| 4 | + |
| 5 | +### Changelog |
| 6 | +- 4/24 @anthonydmays Published initial version |
| 7 | + |
| 8 | +### Technical Requirements |
| 9 | + |
| 10 | +Your project submission must include the following elements: |
| 11 | + |
| 12 | +* All work must be submitted in your team's assigned GitHub repository. Your team must track issues, bugs, pull requests, and features. See [Lesson 05][lesson-05] for a refresh. |
| 13 | +* Each team member must contribute *at least two* submitted pull requests containing working code and tests. See [Lesson 15][lesson-15] for a refresh. |
| 14 | +* Write unit tests achieving 80% code coverage (using JaCoCo for Java or Jest for Typescript). |
| 15 | +* Must have a working front-end that interacts with a back-end web service to retrieve and persist data. |
| 16 | +* Your app must be publicly accessible. It is recommended that you use [Vercel](https://vercel.com) or [Fly.io](https://fly.io) to deploy your apps. |
| 17 | +* The system must incorporate one third-party API. |
| 18 | +* Your repo must include a README with the following elements: |
| 19 | + * The team |
| 20 | + * Screenshot |
| 21 | + * A description of the app |
| 22 | + * Demo link |
| 23 | + * Installation instructions |
| 24 | + * Known issues |
| 25 | + * Roadmap features |
| 26 | + * Credits |
| 27 | +* It is **HIGHLY** recommended that you maintain a clean `Main` branch and only merge changes via pull requests (we've been using squashed merges for the main repo to simplify commit history). Don't forget to use [Conventional Commits][conventional-commits-link]. |
| 28 | + |
| 29 | +### Important Milestones |
| 30 | + |
| 31 | +To ensure the timely completion of your project, you will need to complete the following milestone tasks. |
| 32 | + |
| 33 | +<table> |
| 34 | + <thead> |
| 35 | + <th>Milestone</th> |
| 36 | + <th>Date</th> |
| 37 | + </thead> |
| 38 | + <tbody> |
| 39 | + <tr> |
| 40 | + <td>Submit user stories to your repo as GitHub issues</td> |
| 41 | + <td>Thurs, May 8</td> |
| 42 | + </tr> |
| 43 | + <tr> |
| 44 | + <td> |
| 45 | + Obtain project sign-off from instructor/TAs<br> |
| 46 | + <a href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ1dD0ruj64FcykMfPBo7qQaV6AqZ58O7ON8Z3ld-xwNEbFmy0JGyLuwIwxJZjoGoEuz1U9bRZqu"> |
| 47 | + Schedule a review meeting here |
| 48 | + </a> |
| 49 | + </td> |
| 50 | + <td>Fri, May 9</td> |
| 51 | + </tr> |
| 52 | + <tr> |
| 53 | + <td>Hold Sprint planning meeting</td> |
| 54 | + <td>Mon, May 12</td> |
| 55 | + </tr> |
| 56 | + <tr> |
| 57 | + <td>Begin implementing your designs</td> |
| 58 | + <td>Mon, May 12</td> |
| 59 | + </tr> |
| 60 | + <tr> |
| 61 | + <td>Update your meeting notes document</td> |
| 62 | + <td>Daily</td> |
| 63 | + </tr> |
| 64 | + <tr> |
| 65 | + <td> |
| 66 | + Practice presentation sessions |
| 67 | + </td> |
| 68 | + <td>Wed-Thurs, May 21-22</td> |
| 69 | + </tr> |
| 70 | + <tr> |
| 71 | + <td>Presentations due</td> |
| 72 | + <td>Thurs, May 22, EOD</td> |
| 73 | + </tr> |
| 74 | + <tr> |
| 75 | + <td>Final presentations</td> |
| 76 | + <td>Fri, May 23</td> |
| 77 | + </tr> |
| 78 | + </tbody> |
| 79 | +</table> |
| 80 | + |
| 81 | +### Helpful Resources |
| 82 | + |
| 83 | +Here are some links to tools and templates that can help you work together effectively. |
| 84 | + |
| 85 | +* [TODO App (fullstack NextJS app in TypeScript)](/lib/javascript/fullstack_demo) |
| 86 | +* [TODO App (fullstack React + Java Spring app in TypeScript/Java)](/lib/java/fullstack_demo) |
| 87 | +* [v0 (chatbot for generating UI and web applications)](https://v0.dev) |
| 88 | +* [A Short Guide to Effective Daily Standups (Nave)](https://getnave.com/blog/short-guide-daily-standups/) |
| 89 | +* [Team Meeting Notes template (Google Docs)](https://docs.google.com/document/d/1rL-Zm2w0hABuGkIMSPzmXcJHDQxmIeA-mlipt8kDA9E/edit) |
| 90 | +* [Crafting Effective User Stories: A Guide to Good and Bad Versions (Visual Paradigm)](https://guides.visual-paradigm.com/crafting-effective-user-stories-a-guide-to-good-and-bad-versions/) |
| 91 | +* [Third-party APIs (MDN)](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Third_party_APIs) |
| 92 | +* [GitHub Flow (GitHub.com)](https://docs.github.com/en/get-started/using-github/github-flow) |
| 93 | +* The Software Engineer's Guidebook, Chapter 10, "Tools of the Productive Software Engineer." |
| 94 | + |
| 95 | +### Presentation Guidelines |
| 96 | + |
| 97 | +For your presentation, you will be given up to 20 minutes to feature your project. Each person on the team should have a speaking role. Here's what your presentation will contain: |
| 98 | + |
| 99 | +1. Up to four slides of content, then a live demo walkthrough. |
| 100 | +2. Your presentation should cover the following items, in order: |
| 101 | + - [ ] Introduce team members and their roles |
| 102 | + - [ ] State the problem your attempting to solve |
| 103 | + - [ ] State how your app is designed to solve the problem |
| 104 | + - [ ] Show your demo |
| 105 | + - [ ] Discuss how you'd like to enhance in the future |
| 106 | + - [ ] Lastly, talk through technical challenges and features. |
| 107 | +3. You will be given 5 minutes for Q&A and take questions from the audience. |
| 108 | + |
| 109 | +### Academic Integrity |
| 110 | + |
| 111 | +Please refer to the [Academic Integrity][academic-integrity-link] section of the syllabus regarding the use of third-party code and resources that you have used for your project. Give credit to where credit is due! |
| 112 | + |
| 113 | +[conventional-commits-link]: https://www.conventionalcommits.org/en/v1.0.0/ |
| 114 | +[academic-integrity-link]: /syllabus/README.md#academic-integrity |
| 115 | +[lesson-05]: /lesson_05/README.md |
| 116 | +[lesson-15]: /lesson_15/README.md |
0 commit comments