diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5fe8ffd..5fe1d1c 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ -blank_issues_enabled: false +blank_issues_enabled: true contact_links: - name: CYF url: contact@codeyourfuture.io diff --git a/.github/ISSUE_TEMPLATE/pd-assignment.yml b/.github/ISSUE_TEMPLATE/pd-assignment.yml index c8bd229..e3850c9 100644 --- a/.github/ISSUE_TEMPLATE/pd-assignment.yml +++ b/.github/ISSUE_TEMPLATE/pd-assignment.yml @@ -1,59 +1,10 @@ -name: PD Coursework -description: Assign a piece of PD coursework -title: "[PD] " -labels: [PD, 🏝 Priority Stretch, 🐇 Size Small] +name: Coursework Review +description: For a volunteer to review a coursework project +title: "[Review] <title>" +labels: [] body: - - type: markdown - attributes: - value: | - Thanks for taking the time to assign this coursework! - - type: input - attributes: - label: Coursework content - validations: - required: true - - type: input - attributes: - label: Estimated time in hours - description: (PD has max 4 per week total) - validations: - required: true - type: textarea attributes: - label: What is the purpose of this assignment? - description: Clearly explain the purpose of this assignment and how trainees can evaluate this. + label: Any problems you want to discuss, or something you want to highlight was done well validations: required: true - - type: textarea - attributes: - label: How to submit - description: State in clear steps how a trainee can submit this assignment. - placeholder: | - Copy the Google doc to your own Google Drive - Complete the work assigned - When you are ready, move your document to your class Drive - validations: - required: true - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Anything that will give more context - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. - - type: markdown - attributes: - value: | - **Thank you so much.** - - Please now complete this ticket by filling in the options on the sidebar. - - 1. Update labels - - priority -- is this coursework key, mandatory, or stretch? - - size -- help trainees plan their time with rough estimation - 2. Add to project backlog - - add to the project named the same as this repo - - fill in custom fields -- priority, size, hours, week -- to match this issue - - Once your ticket is complete, you may like to check it out on the example project board attached to this repo. - This is so you understand how trainees will use your work. diff --git a/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml b/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml deleted file mode 100644 index 1bdba29..0000000 --- a/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Tech Ed Coursework -description: Assign a piece of technical coursework -title: "[TECH ED] <title>" -labels: [Tech Ed, 🏕 Priority Mandatory, 🐂 Size Medium] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to assign this coursework! - - To support our trainees with planning and prioritising their own learning journey, we want our coursework assignments to be more informative. - We don't just want to tell them what to do, we want to tell them stuff like: - - why we are doing it - - what it's "for" (problem-solving, debugging, etc) - - how long they should spend on it, maximum - - how to get help - - how to review it with answers - - how to get it reviewed from mentors and peers - - type: input - attributes: - label: Link to the coursework - validations: - required: true - - type: textarea - attributes: - label: Why are we doing this? - description: Clearly explain the purpose of this assignment - validations: - required: true - - type: input - attributes: - label: Maximum time in hours - description: (Tech has max 16 per week total) - validations: - required: true - - type: textarea - attributes: - label: How to get help - description: State simply how trainees can get help with this assignment - placeholder: | - Share your blockers in your class channel - https://syllabus.codeyourfuture.io/guides/asking-questions - - type: textarea - attributes: - label: How to submit - description: State in clear steps how a trainee can submit this assignment. - placeholder: | - Fork the repo to your own GitHub account - Make regular small commits with clear messages - When you are ready, open a Pull Request to the CYF repo - Make sure you fill in the PR template provided - validations: - required: true - - type: textarea - attributes: - label: How to review - description: How to get code review and how to self-review - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Anything that will give more context - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. - - type: markdown - attributes: - value: | - **Thank you so much.** - - Please now complete this ticket by filling in the options on the sidebar. - - 1. Update labels - - priority -- is this coursework key, mandatory, or stretch? Pick one. - - size -- help trainees plan their time with rough estimation. Pick one - - topics -- add all that seem relevant to you. - 2. Add to milestone - - week 1,2,3,4 - - Once your ticket is complete, you may like to add it to the example project board attached to this repo. - This is so you understand how trainees will use your work. Nobody has built a board copier yet, so trainees will be doing this step themselves. diff --git a/levels/Reviewers-All-Requirements.md b/levels/Reviewers-All-Requirements.md new file mode 100644 index 0000000..5710725 --- /dev/null +++ b/levels/Reviewers-All-Requirements.md @@ -0,0 +1,51 @@ +There are the main requirements that a submitted project needs checked by reviewers. +Trainees should **not** need to refer to this document, and should focus on completing each level one at a time. + +1. It is deployed on GitHub pages +1. The site must fetch data from an API at `TVMaze.com`, **not** a JSON file + 1. The page should state somewhere that the data has (originally) come from [TVMaze.com](https://tvmaze.com/), and link back to that site. + 1. During a visit to the website it should never fetch any URL more than once. + 1. The site should indicate when data is loading. + 1. If an error occurred loading the data, notify the user on the page (not only in the console) +1. Listing Shows - When the site starts, present a listing of all shows ("shows listing") + 1. For each show, display at least: + 1. name + 1. image + 1. summary + 1. genres + 1. status + 1. rating + 1. runtime + 1. When a show name is clicked, it should: + 1. Fetch and present episodes from that show + 1. Hide the "shows listing" view + 1. Enable episode search / select (see below) + 1. Have a navigation link or button to enable the user to return to the "shows listing" + 1. When this is clicked, the episodes listing should be hidden + 1. Ensure that the search and selector controls still work correctly when you switch from shows listing to episodes listing and back +1. Listing Episodes - When a show is selected, all episodes must be on the page shown for that given show, with at least: + 1. The name of the episode + 1. The combined season number and episode number into a zero-padded episode code: `S02E07` is correct, `S2E7` is incorrect. + 1. The medium-sized image for the episode + 1. The summary text of the episode +1. Select Shows - a `select` element to your page so the user can choose a show. + 1. When the user first loads the page, use the `fetch`ed list of available shows, and add an entry to the drop-down per show. + 1. When a user selects a show, display the episodes for that show after `fetch`ing the episode list. + 1. The select must list shows in alphabetical order, case-insensitive. +1. Select Episodes - a `select` drop-down which lets the user jump quickly to a particular episode: + 1. The select options are updated whenever a new show is selected, and this select isn't used otherwise + 1. The select input should list all episodes in the format: "S01E01 - Episode Title" + 1. When the user makes a selection, they should be taken directly to that episode on the page +1. Search Shows - When a user types a search term into the search box: + 1. Only shows whose summary **OR** name contains the search term should be displayed + 1. The search should be case-**in**sensitive + 1. The display should update **immediately** after each keystroke changes the input + 1. Display how many shows match the current search + 1. If the search box is cleared, **all** shows should be shown +1. Search Episodes - When a user types a search term into the search box: + 1. Only episodes whose summary **OR** name contains the search term should be displayed + 1. The search should be case-**in**sensitive + 1. The display should update **immediately** after each keystroke changes the input + 1. Display how many episodes match the current search + 1. If the search box is cleared, **all** episodes should be shown + diff --git a/readme.md b/readme.md index a65a311..930b1b4 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ One of the most powerful things a software engineer can do is take some data and The aim of this project is to take some data someone else has (and exposes over an API), and display it to users. The data we're using for this project is about episodes of TV shows. -This project will take you multiple weeks to complete. As always, we will break down the project into levels we can deliver incrementally. You must finish each milestone before you start working on the next one (but it's ok to know what the future levels are going to be - it may help you design things). Your goal is to complete all of the levels up to and including level 500 during the Data Flows module. +This project will take you multiple weeks to complete. As always, we will break down the project into levels we can deliver incrementally. You must finish each milestone before you start working on the next one (but it's OK to know what the future levels are going to be - it may help you design things). Your goal is to complete all of the levels up to and including level 500 during the Data Flows module. ## Goals @@ -85,3 +85,29 @@ After that, you're going to swap codebases with someone else. You should complet You are allowed to change anything in your partner's code to make it easier to understand or build on, but they must understand and accept your changes. Remember, finish each level before you move on to the next. Reach out for help when you're stuck. + +## Submission +When you are ready to submit this task, you will submit it in a different way to normal. +You will **not** use PRs. +Instead, you will deploy your TV project website to GitHub pages and reviewers will assess, check the code, and leave issues for you to fix. + +When you have finished level 500: +1. Go to the CYF Portal and fill out the submission step for the TV Project. Include a link to the deployed page, your repository, and the branch you used for level 500. +2. A reviewer will check your project and leave issues on your repository. +3. Resolve the issues, and use the issue comments to check that the reviewer is happy the problems are resolved. +4. The reviewer will close the issues when they are fixed. +4. Once all issues raised are fixed and closed, your TV project is submitted and complete. + +### Instructions for Reviewers +**Requirements** +If this is your first review of the TV show project, familiarise yourself with the task requirements. +For your convenience, you can find a list of all the requirements [here](levels/Reviewers-All-Requirements.md). +There are no rules about how the site should look, only how it behaves. + +**How to review** +Submission is not done via a PR, instead any problems you find should be raised as issues in the repository. +Given there may be multiple problems, grouping them into issues by related themes may be easiest, so use your own judgement. +The trainee will deal with the issues and should check in replying to these issues. +Check any changes made, and if all problems are resolved, you can close the issue. +You may wish to double-check your notification settings to make sure you are notified for any replies or activity on these issues. +When all the issues you opened are closed, the task is considered complete.