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: Project-Days-Calendar/README.md
+16-8Lines changed: 16 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,12 +22,20 @@ Your website must be hosted on the internet, and must be automatically deployed
22
22
23
23
You must be able to explain every line of code in your project, even ones other people in your group wrote.
24
24
25
+
> [!WARN]
26
+
>
27
+
> Date calculations can be complicated. Daylight savings time in particular can cause problems.
28
+
>
29
+
> Read [this guidance on handling daylight savings time and time zones](https://stackoverflow.com/questions/2532729/daylight-saving-time-and-time-zone-best-practices).
30
+
>
31
+
> Be sure to check the _exact_ dates returned when testing. Being off by one day will fail your project.
32
+
25
33
### Requirements for everyone
26
34
27
35
Regardless of your group size, you must:
28
36
29
37
* Create an HTML page which, when loaded, displays a calendar.
30
-
* The calendar must show every day of the current month, each as a rectangle. Each row of rectangles must show one week. The first column must show Mondays. The first day of the month must be shown in the first row.
38
+
* The calendar must show every day of the current month, each as a rectangle. Each row of rectangles must show one week. The first column must show Sundays. The first day of the month must be shown in the first row.
31
39
* There must be two buttons which, when clicked, switch what is displayed. One button must change the display to the previous month. The other button must change the display to the next month. On repeated clicks, these buttons must keep moving back/forwards in time, one month per click.
32
40
* These buttons must work on every month. There should be no first/last months beyond which you can't press previous/next and have them work.
33
41
* There must be a way to jump to a particular month and year, e.g. "October 2020". For example, you could use a `<select>` tag for each of the month name and a reasonable range of years.
@@ -84,8 +92,8 @@ Note that when running locally, in order to open a web page which uses modules,
84
92
* Open the calendar, it should be showing the current month.
85
93
* Go to October 2024. Observe:
86
94
* A grid of 5 rows x 7 columns.
87
-
* The first row contains Tuesday October 1 - Sunday October 6. Monday is either labelled for September 30 or is blank.
88
-
* The last row contains Monday October 28 - Thursday October 31. Friday - Sunday are either labelled for November or are blank.
95
+
* The first row contains Tuesday October 1 - Sunday October 6. Sunday and Monday are either labelled for September 29/30 or are blank.
96
+
* The last row contains Monday October 28 - Thursday October 31. Friday and Saturday are either labelled for November or are blank.
89
97
* October 8th: Ada Lovelace Day.
90
98
* October 25th: World Lemur Day.
91
99
* On the web page, open October 2020. Observe:
@@ -94,14 +102,14 @@ Note that when running locally, in order to open a web page which uses modules,
94
102
* On the web page, open May 2030. Observe:
95
103
* May 11th: International Binturong Day.
96
104
* The following months start and end on these dates, and do not have extra days or padding boxes outside of the weeks they're meant to cover:
97
-
*2025-01: Wednesday (two days before, labelled or blank) - Friday (two days after, labelled or blank)
98
-
* 2025-03: Saturday (5 days before) - Monday (6 days after)
99
-
* 2025-09: Monday (no empty days before) - Tuesday (5 empty days after)
100
-
*2025-11: Saturday (5 empty days before) - Sunday (no empty days after)
105
+
*2024-12: Sunday (no empty days before) - Tuesday (4 empty days after).
106
+
* 2025-02: Saturday (6 days before) - Friday (1 empty day after).
107
+
* 2025-05: Thursday (4 empty days before) - Saturday (no empty days after).
108
+
*2026-02: Sunday (no empty days before) - Saturday (no empty days after).
101
109
* Functioning previous and next buttons including at the end-points of the month+year selector (if it has ends).
102
110
* If there are end-points to the month+year selector, the previous and next buttons must work flawlessly when going beyond that limit. The UI must not e.g. show an empty string, "undefined", "null", "NaN" or similar if the "current month" or "current year" is displayed anywhere in the UI. The calendar days must be correctly shown.
103
111
* A usable way of jumping to a month+year.
104
-
* UI is generated by DOM manipulation, and would work if arbitrary additional days were added to the data file.
112
+
* UI is generated by DOM manipulation, and day generation is dynamic. Everything would work if arbitrary additional days were added to the data file.
105
113
* The website must score 100 for accessibility in Lighthouse
106
114
* Unit tests must be written for at least one non-trivial function
Copy file name to clipboardExpand all lines: Project-Music-Data/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ Make a small HTML + JavaScript frontend which displays the answers to several qu
8
8
9
9
Some principles to remember throughout this project:
10
10
11
-
1. This is a project about data processing, not UI. You should make a simple frontend to show the data in valid semantic HTML. No credit will be given for making prettier or more complicated frontend. Do not write any CSS.
11
+
1. This is a project about data processing, not UI. You should make a simple frontend to show the data in valid semantic HTML. No credit will be given for making prettier or more complicated frontend. You are allowed to use CSS, but you are strongly advised to focus on the logic, and only add styling when you are finished. You will not get any credit for styling.
12
12
2. You should assume the data will change in the future, but will have the same schema. So you shouldn't pre-compute anything. Your code should always read the data and calculate results from scratch.
13
13
14
14
We have provided a `data.js` file, which contains three functions to provide data for you to analyse. `data.js` is a file containing four functions:
Copy file name to clipboardExpand all lines: Project-Shared-Bookmarks/README.md
+8-2Lines changed: 8 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ Here are some examples of bookmark sites:
11
11
12
12
Your task is to write code which allows a user to save a link with a short description and share them with others.
13
13
14
-
You should make a frontend, which displays a list of bookmarked links and the user’s description. A user can create new bookmarks by submitting a form with the URL and the description. You should use **HTML and JavaScript only**. You should **not** use CSS. We want to focus on your ability to create the correct logic and not spend time on creating the perfect UI.
14
+
You should make a frontend, which displays a list of bookmarked links and the user's description. A user can create new bookmarks by submitting a form with the URL and the description. You should use HTML and JavaScript for this. We want to focus on your ability to create the correct logic and not spend time on creating the perfect UI. You are allowed to use CSS, but you are strongly advised to focus on the logic, and only add styling when you are finished. You will not get any credit for styling.
15
15
16
16
## Supplied scaffolding
17
17
@@ -40,7 +40,11 @@ You **must not** implement any kind of authentication. Just a drop-down to choos
40
40
41
41
After picking a user, your website should display the list of bookmarks in reverse chronological order. For each bookmark, it should display the title and description of the bookmark. The title should be hyperlink to the URL of the bookmark. The timestamp at which the bookmark was created should be displayed.
42
42
43
-
Your website must include a form with text inputs for the URL and title, a textarea for the description and submit button that allows a user to add a new topic. This form must be accessible, so for example, hitting the Enter key will also submit the topic name, the same as clicking the submit button.
43
+
Each bookmark should also have:
44
+
- A button which, when clicked, copies the URL to the clipboard.
45
+
- A like counter/button. When a bookmark is first saved, its like count should be 0. Each time a user clicks the like button, that number should go up by one, and be displayed. This like count should be persisted such that closing the page and coming back to it, it is preserved.
46
+
47
+
Your website must include a form with text inputs for the URL, title, and description, and submit button that allows a user to add a new topic. This form must be accessible, so for example, a user using the keyboard should be able to submit it without using a mouse.
44
48
45
49
After the new data has been stored, the updated list of bookmarks must be displayed (including the new bookmark) for the relevant user.
46
50
@@ -58,6 +62,8 @@ All of the below requirements must be met for the project to be considered compl
58
62
- The list of bookmarks must be shown in reverse chronological order
59
63
- Each bookmark has a title, description and created at timestamp displayed
60
64
- Each bookmark’s title is a link to the bookmark’s URL
65
+
- Each bookmark's "Copy to clipboard" button must copy the URL of the bookmark
66
+
- Each bookmark's like counter works independently, and persists data across sessions
61
67
- The website must contain a form with inputs for a URL, a title, and a description. The form should have a submit button.
62
68
- Submitting the form adds a new bookmark for the relevant user only
63
69
- After creating a new bookmark, the list of bookmarks for the current user is shown, including the new bookmark
Copy file name to clipboardExpand all lines: Project-Spaced-Repetition-Tracker/README.md
+9-6Lines changed: 9 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ At Code Your Future, we like to use a learning technique called spaced repetitio
4
4
5
5
One of the difficulties of this approach is tracking which topic should be revised at what time. Your task is to write code which allows a user to track topics and then understand which topic they should revise next.
6
6
7
-
You should make a frontend, which displays an agenda of topics to revise on specific dates. You should use **HTML and JavaScript only**. You should **not** use CSS. We want to focus on your ability to create the correct logic and not spend time on creating the perfect UI.
7
+
You should make a frontend, which displays an agenda of topics to revise on specific dates. You should use HTML and JavaScript for this. We want to focus on your ability to create the correct logic and not spend time on creating the perfect UI. You are allowed to use CSS, but you are strongly advised to focus on the logic, and only add styling when you are finished. You will not get any credit for styling.
8
8
9
9
## Supplied scaffolding
10
10
@@ -22,7 +22,7 @@ We have also provided a `storage.js` file, which contains three functions to hel
22
22
23
23
## Requirements
24
24
25
-
This is intended to be a group project - your class leaders will tell you how the groups will work.
25
+
This may be an individual or a team project - your class leaders will tell you which you are doing. If it is a team project, they will also tell you how the groups will work.
26
26
27
27
You must submit both a link to your GitHub repo, and a link to the deployed website.
28
28
@@ -38,7 +38,7 @@ When a user is selected, you must get the stored data for that user and use it t
38
38
39
39
If there is an agenda, your website should display a list of topics and the revision date when the user should revise in _chronological order_. For each revision date, it should display the date and the name of the topic to revise. Revision dates in the past should not be displayed.
40
40
41
-
Your website must include a form with a text input, a date picker and submit button that allows a user to add a new topic. This form must be accessible, so for example, hitting the Enter key will also submit the topic name, the same as clicking the submit button. The form should validate that the topic name and date have be set by the user.
41
+
Your website must include a form with a text input, a date picker and submit button that allows a user to add a new topic. This form must be accessible, so for example, a user using the keyboard should be able to submit it without using a mouse. The form should validate that the topic name and date have be set by the user.
42
42
43
43
The date picker should default to today’s date, but allow selection of another date. You should use the built-in date picker for browsers, unless attempted as a bonus task. **No credit** is given for using an alternative date picker.
44
44
@@ -54,17 +54,20 @@ Every view of your website must be accessible (i.e. for each user, with any numb
54
54
>
55
55
> Date calculations can be complicated. Daylight savings time in particular can cause problems.
56
56
>
57
-
> Make sure your date calculations work as you expect, even if adding an interval means that a date crosses a daylight savings boundary.
57
+
> Read [this guidance on handling daylight savings time and time zones](https://stackoverflow.com/questions/2532729/daylight-saving-time-and-time-zone-best-practices).
58
+
>
59
+
> Be sure to check the _exact_ dates returned when testing, even if adding an interval means that a date crosses a daylight savings boundary. Being off by one day will fail your project.
58
60
>
59
61
> A tip here is to either only be adding dates and not times, or to make sure all dates are in UTC.
60
62
63
+
61
64
## Rubric
62
65
63
66
All of the below requirements must be met for the project to be considered complete:
64
67
65
68
- The website must contain a drop-down which lists exactly 5 users
66
69
- No user is selected on page load
67
-
- All of the users must have no agenda when starting from a "clean state" with no stored data
70
+
- All of the users must have no agenda when first loading (i.e. with clear `localStorage`). Data should be persisted across page loads (which is handled by the code in `storage.mjs`).
68
71
- Selecting a user must load the relevant user's agenda from storage
69
72
- Selecting a user must display the agenda for the relevant user (see manual testing below)
70
73
- If there is no agenda for the selected user, a message is displayed to explain this
@@ -76,7 +79,7 @@ All of the below requirements must be met for the project to be considered compl
76
79
- The website must score 100 for accessibility in Lighthouse
77
80
- Unit tests must be written for at least one non-trivial function
78
81
79
-
Below are some manual testing steps and expected results, which will be run on all websites to fairly assess them.
82
+
Below are some manual testing steps and expected results, which will be run on all websites to fairly assess them. All of the dates are intended to be exact - if dates are off by one day, that counts as a failure.
80
83
81
84
Pick the year after the current one (e.g. in 2025, pick 2026).
0 commit comments