You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Week1/MAKEME.md
+12-5Lines changed: 12 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Please provide feedback on last week's homework from a fellow student as a GitHu
19
19
20
20
**_Deadline Thursday_**
21
21
22
-
_This homework is more extensive and challenging than previous homework! Please read the instructions below carefully and follow them precisely. Start this homework as soon as you can and allow time for discussion and questions (slack!)._
22
+
_This homework is more extensive and challenging than previous homework! Please read the instructions below carefully and follow them meticulously. Start this homework as soon as you can and allow time for discussion and questions (slack!)._
23
23
24
24
### 2.1 Introduction
25
25
@@ -54,7 +54,7 @@ If you open this URL in the browser (_try it!_) you will receive JSON data about
54
54
55
55
<small>Note the query string `?per_page=100` in the above URL. If you don't specify this query string you will only get the first 30 repositories (the default `per_page` is 30). HackYourFuture has more than 30 repositories but less than 100.</small>
56
56
57
-
The returned JSON data contains some basic information about each repository, such as `name`, `full_name`, `description` etc. There are also many properties that contain URLs to obtain detail information about certain aspects of the repository.
57
+
The returned JSON data contains some basic information about each repository, such as `name`, `full_name`, `description` etc. There are also many properties that contain URLs that can be used to obtain detail information about certain aspects of the repository.
58
58
59
59
#### 2.2.2 Get contributor information for a repository
60
60
@@ -73,8 +73,8 @@ You will be working on this same application during the next three weeks. For ea
73
73
| Week | Branch | Assignment |
74
74
|:----:|--------|------------|
75
75
| 1 |`week1`| Create a basic application using callbacks to handle network requests. |
76
-
| 2 |`week2`| 1. Refactor the callbacks to promises.<br>2. Make the UI responsive.|
77
-
| 3 |`week3`| 1. Refactor the application to use ES6 Classes and async/await.<br>2. Make the app ARIA-compliant. |
76
+
| 2 |`week2`| - Refactor the callbacks to promises.<br>- Make the UI responsive.|
77
+
| 3 |`week3`| - Refactor the application to use ES6 Classes and async/await.<br>- Make the app ARIA-compliant. |
78
78
79
79
<small>Table 1. Homework schedule</small>
80
80
@@ -190,11 +190,18 @@ It should include the following components:
190
190
191
191
- Use CSS media queries and [Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) to make the UI responsive.
192
192
193
-
- To force a 404 network error so that you can test the rendering of errors, change the URL to make an invalid GitHub request, e.g. append an `x` to `orgs`: `orgsx`.
193
+
- To force a `404` network error so that you can test the rendering of errors, change the URL to make an invalid GitHub request, e.g. append an `x` to `orgs`: `orgsx`.
194
194
195
195
196
196
### 2.5 Handing in your homework
197
197
198
+
- Have you removed all commented out code (should never be present in a PR)?
199
+
- Have you used `const` and `let` and avoided `var`?
200
+
- Do the variable, function and argument names you created follow the [Naming Conventions](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md)?
201
+
- Is your code well-formatted (see [Code Formatting](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md))?
202
+
- Have you resolved all issues flagged by ESLint and the spell checker (no wavy red and green underlines in VSCode)?
203
+
204
+
If the answer is 'yes' to all preceding questions you are ready to follow these instructions:
- Create at least 2 issues (bug / feature / code improvement) on another student's GitHub repository.
26
-
- Solve the issue(s) proposed by another students in your GitHub repository. More info [here](https://hackyourfuture.slack.com/files/michahell/F31BX1XT6/Merging_a_local_branch_into_master).
25
+
- Fix Requested Changes (if any) on the Pull Request.
27
26
28
-
## Step 3: Promises
27
+
## Step 3: Convert callbacks to promises
29
28
30
29
**_Deadline Thursday_**
31
30
@@ -47,16 +46,17 @@ You will continue to work on the files `index.js` and (possibly) `style.css`.
47
46
- Complete your GitHub app code from the previous week, if needed, to meet the requirements from that week's assignment.
48
47
- Replace all asynchronous callbacks (e.g. as used with XMLHttpRequest) by ES6 promises.
49
48
- Beautify your app's styling.
50
-
- Make your app responsive (use CSS media queries and [Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)).
51
-
- Make your app ARIA-compliant.
49
+
- If not yet completed in week 1, make your app responsive (use CSS media queries and [Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)).
52
50
53
-
**ARIA-compliance**
54
-
55
-
Please review the material from the HTML/CSS module: [Get familiar with Accessible Rich Internet Applications (ARIA)](https://github.com/HackYourFuture/HTML-CSS/tree/master/Week1#get-familiar-with-accessible-rich-internet-applications-aria).
51
+
### 3.3 Handing in your homework
56
52
57
-
For the GitHub application ARIA-compliance means that the Contributors list should either be a native HTML list (i.e. using `ul` and `li` elements) or otherwise marked with an appropriate ARIA **role**. Furthermore, a user should be able to navigate to all interactive elements using the keyboard (e.g., using the **Tab** key). Pressing **Enter** on such an element should be equivalent to a clicking the mouse.
53
+
- Have you removed all commented out code (should never be present in a PR)?
54
+
- Have you used `const` and `let` and avoided `var`?
55
+
- Do the variable, function and argument names you created follow the [Naming Conventions](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md)?
56
+
- Is your code well-formatted (see [Code Formatting](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md))?
57
+
- Have you resolved all issues flagged by ESLint and the spell checker (no wavy red and green underlines in VSCode)?
58
58
59
-
### 3.3 Handing in your homework
59
+
If the answer is 'yes' to all preceding questions you are ready to follow these instructions:
2. Make sure that your error handling code still works. See the week2 MAKEME on how to force an error response from GitHub.
44
54
45
-
_Instructions:_
46
55
47
-
- Refactor all `.then()` and `.catch()` methods with `async`/`await` and `try...catch`.
56
+
#### 2.2.2 ARIA-compliance
48
57
49
-
TODO: ARIA-compliance
58
+
Please review the material from the HTML/CSS module: [Get familiar with Accessible Rich Internet Applications (ARIA)](https://github.com/HackYourFuture/HTML-CSS/tree/master/Week1#get-familiar-with-accessible-rich-internet-applications-aria).
50
59
51
-
#### 2.2.2 Bonus assignment: ES6 Classes
60
+
For the GitHub application ARIA-compliance means that the Contributors list should either be a native HTML list (i.e. using `ul` and `li` elements) or otherwise marked with an appropriate ARIA **role**. Furthermore, a user should be able to navigate through all interactive elements using the keyboard (e.g., using the **Tab** key). Pressing **Enter** on such an element should be equivalent to clicking the mouse.
52
61
53
-
**_Deadline Saturday_**
62
+
#### 2.2.3 ES6 Classes (Bonus)
54
63
55
64
This final **bonus** assignment requires you to got the extra mile and master Object Oriented Programming and ES6 classes. ES6 classes are not used in the Node and Database modules. You will not come across them again until the React module.
56
65
57
-
TODO: Is this optional/bonus? Separate branch `final`?
58
-
59
-
**_Deadline Thursday_**
60
-
61
66
In this assignment you need to redistribute and adapt the code from `index.js` to the files `App.js`, `Repository.js` and `Contributor.js`. You do not need to modify `Util.js`.
62
67
63
68
| File | Description |
@@ -76,8 +81,7 @@ _Read:_
76
81
77
82
_Instructions:_
78
83
79
-
1. Commit any outstanding changes.
80
-
2. Change the content of the `body` tag of `index.html` as follows:
84
+
1. Copy `index.html` to file named `classes.html` and change the content of the `body` tag of `classes.html` as follows:
81
85
82
86
```html
83
87
<body>
@@ -90,45 +94,25 @@ _Instructions:_
90
94
```
91
95
92
96
93
-
## Step 3: OOP and ES6 classes
94
-
95
-
- If you need to refresh your memory on es6 classes: [es6-classes-in-depth](https://ponyfoo.com/articles/es6-classes-in-depth)
96
-
97
-
_Deadline Saturday_
98
-
99
-
Refactor your GitHub app to use OOP with ES6 classes (see skeleton code below). We will be introducing a `Repository` and a `Contributor` class that will each be responsible for rendering their own data. A third `View` class will contain all remaining code.
97
+
#### 2.2.4 Handing in your homework
100
98
101
-
Read:
99
+
- Have you removed all commented out code (should never be present in a PR)?
100
+
- Have you used `const` and `let` and avoided `var`?
101
+
- Do the variable, function and argument names you created follow the [Naming Conventions](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md)?
102
+
- Is your code well-formatted (see [Code Formatting](../../../../fundamentals/blob/master/fundamentals/naming_conventions.md))?
103
+
- Have you resolved all issues flagged by ESLint and the spell checker (no wavy red and green underlines in VSCode)?
102
104
103
-
- [Object Oriented Programming and ES6 Classes](../../../../fundamentals/blob/master/fundamentals/oop_classes.md)
If the answer is 'yes' to all preceding questions you are ready to follow these instructions:
105
106
106
-
Instructions:
107
-
108
-
1. You should refactor your code into four classes, named `App`, `Repository`, `Contributor` and `Util`.
109
-
2. Move your existing code that deals with rendering the repository information to the `render()` method of the `Repository` class.
110
-
3. Move your existing code that deals with rendering the information for a single contributor to the `render()` method of the `Contributor` class.
111
-
4. Move your existing code responsible for initializing your application to the `constructor` of the `View` class.
112
-
5. The bulk of your remaining code should probably go to the `fetchAndRender()` method of the `View` class.
113
-
114
-
TODO: describe the division of work between the classes
115
-
116
-
117
-
### 3.3 Handing in your homework
118
-
119
-
1. Push your `week2` branch to GitHub:
107
+
1. Push your `week3` branch to GitHub:
120
108
121
109
```
122
-
git push -u origin week2
110
+
git push -u origin week3
123
111
```
124
112
125
-
2. Create a pull request for your `week2` branch.
126
-
127
-
Note:
113
+
2. Create a pull request for your `week3` branch.
128
114
129
-
1. Please remove all redundant, commented-out code and console.log's from your files before pushing your homework as finished. There is no need for your mentors to review this stuff.
130
-
2. Please make sure your code is well-formatted and follows the recommended naming conventions.
0 commit comments