Skip to content

Commit 8c346f5

Browse files
authored
Merge branch 'code-differently:main' into Work26
2 parents b678377 + ba3fbe6 commit 8c346f5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+16920
-3
lines changed

capstone/README.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
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

lesson_26/api/java/api_app/build.gradle.kts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ plugins {
55
id("com.diffplug.spotless") version "6.25.0"
66
id("org.springframework.boot") version "3.4.0"
77
id("com.adarshr.test-logger") version "4.0.0"
8-
id("io.freefair.lombok") version "8.6"
98
}
109

1110
apply(plugin = "io.spring.dependency-management")
@@ -39,6 +38,10 @@ dependencies {
3938
implementation("org.apache.commons:commons-csv:1.10.0")
4039
implementation("org.xerial:sqlite-jdbc:3.36.0")
4140
implementation("org.hibernate.orm:hibernate-community-dialects:6.2.7.Final")
41+
compileOnly("org.projectlombok:lombok:1.18.38")
42+
annotationProcessor("org.projectlombok:lombok:1.18.38")
43+
testCompileOnly("org.projectlombok:lombok:1.18.38")
44+
testAnnotationProcessor("org.projectlombok:lombok:1.18.38")
4245
}
4346

4447
application {
@@ -76,4 +79,4 @@ configure<com.diffplug.gradle.spotless.SpotlessExtension> {
7679
// fix formatting of type annotations
7780
formatAnnotations()
7881
}
79-
}
82+
}

lesson_27/README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,28 @@ Please review the following resources before lecture:
1313

1414
## Homework
1515

16-
- TODO(anthonydmays): Provide some details here
16+
- [ ] Complete the [Using an API](#using-an-api) assignment.
17+
- [ ] Do pre-work for [lesson 28](/lesson_28/).
18+
19+
### Using an API
20+
This exercise will give you hands-on experience with the React framework and supporting tools to enhance a dynamic front-end application that communicates with a backend API.
21+
22+
#### Starting the servers
23+
24+
1. Copy the React [template](./template/) folder to your own unique folder. Make necessary code changes in your folder only.
25+
2. Install the [API server](./api/) using `npm install` and then run it using the `npm run dev` command.
26+
3. Install the React web server in your copy using `npm install` and then run it using the `npm run dev` command.
27+
28+
#### Updating the ProgramList components
29+
4. Modify the `ProgramList` component so that it calls the API to generate a list of programs using the returned data instead of the fake data. The needed HTML and CSS has already been provided for you.
30+
- You can reference the types/interfaces used in the API by importing from the `@code-differently/types` package.
31+
32+
#### Create a page for adding new programs
33+
4. Create a new page (similar to the Home page component) that allows you to provide a new title and description and then use the API to add it to the existing list of programs.
34+
5. Add a link to the new page in the [Header](./template/src/components/header/Header.tsx) component that navigates to the new page.
35+
36+
> [!NOTE]
37+
> You can use the [React Router tutorial](https://reactrouter.com/en/main/start/tutorial#updating-contacts-with-formdata) to learn how to handle form submissions. You can also use the [React Query guide](https://tanstack.com/query/latest/docs/framework/react/guides/mutations) to learn how leverage mutation to post to an API.
38+
39+
[react-query-link]: https://tanstack.com/query/latest/docs/framework/react/quick-start
40+
[react-router-link]: https://reactrouter.com/en/main/start/tutorial

lesson_27/api/.prettierrc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"bracketSpacing": false,
3+
"singleQuote": true,
4+
"trailingComma": "es5",
5+
"arrowParens": "avoid",
6+
"importOrder": [
7+
"<THIRD_PARTY_MODULES>",
8+
"interface",
9+
"(?=content|api)",
10+
"context/",
11+
"mock/",
12+
"config",
13+
"utils/",
14+
"hooks/",
15+
"(components/|./index)",
16+
".svg",
17+
"^../(.*)$",
18+
"(?=./styles.module.scss)"
19+
],
20+
"endOfLine": "auto",
21+
"importOrderSeparation": true,
22+
"importOrderSortSpecifiers": true,
23+
"plugins": ["@trivago/prettier-plugin-sort-imports"]
24+
}

lesson_27/api/jest.config.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/** @type {import('ts-jest').JestConfigWithTsJest} **/
2+
export default {
3+
testEnvironment: 'node',
4+
transform: {
5+
'^.+.tsx?$': ['ts-jest', {useESM: true}],
6+
},
7+
moduleNameMapper: {
8+
'^(\\.\\.?\\/.+)\\.js$': '$1',
9+
},
10+
extensionsToTreatAsEsm: ['.ts'],
11+
};

0 commit comments

Comments
 (0)