From b9e8f56a9f4d42ae9c8b5b65f0e0330d77f3ac6c Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Sun, 16 Jan 2022 15:07:45 -0500 Subject: [PATCH 01/53] Fix issue for users with color blindness --- foundations/06-cascade-fix/README.md | 2 +- .../06-cascade-fix/desired-outcome.png | Bin 49042 -> 70885 bytes foundations/06-cascade-fix/index.html | 10 +++++----- .../06-cascade-fix/solution/solution.css | 15 ++++++--------- .../06-cascade-fix/solution/solution.html | 10 +++++----- foundations/06-cascade-fix/style.css | 9 ++++----- 6 files changed, 21 insertions(+), 25 deletions(-) diff --git a/foundations/06-cascade-fix/README.md b/foundations/06-cascade-fix/README.md index ddd73c9..989a6eb 100644 --- a/foundations/06-cascade-fix/README.md +++ b/foundations/06-cascade-fix/README.md @@ -1,7 +1,7 @@ # CSS Methods This final exercise for CSS Foundations is going to give you a closer look at the cascade, in particular specificity and rule order. Both the HTML and CSS files are filled out for you, so instead of adding rules yourself, you will simply be editing what is provided. -There are a few elements that have some sort of specificity or rule order issue in the provided CSS file. It's up to you to figure out what issue is affecting an element, and how to fix it. You can edit the CSS file by adding or removing selectors or moving stuff around, but you should not edit the HTML file or any of the actual style declarations in the CSS. +There are a few elements that have some sort of specificity or rule order issue in the provided CSS file. It's up to you to figure out what issue is affecting an element, and how to fix it. You can edit the CSS file by adding, removing, or editing selectors for a declaration block, or by moving declaration blocks around. **You should not edit the HTML file or any of the actual styles in the CSS**. There are multiple ways to solve this exercise, and we did our best to include all of the possible solutions for each element. diff --git a/foundations/06-cascade-fix/desired-outcome.png b/foundations/06-cascade-fix/desired-outcome.png index d4685d6bfec0253a24e384a19ffca040088ada7f..bcff976e01222d32043f7647cc9016ea3db53a44 100644 GIT binary patch literal 70885 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

3H>)e?CE0w= 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 kiTXd0;{X5p_4try4 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 z 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 diff --git a/foundations/06-cascade-fix/index.html b/foundations/06-cascade-fix/index.html index ca6aa5b..3471bfa 100644 --- a/foundations/06-cascade-fix/index.html +++ b/foundations/06-cascade-fix/index.html @@ -8,15 +8,15 @@ -

I'm just a simple paragraph!

-

I'm a smaller paragraph!

+

I'm just a paragraph with red text!

+

I'm a smaller paragraph, also with red text!

-
I'm not related to those divs down there.
-
I have a child! -
My ancestor is so embarrassing.
+
I'm a div with green text!
+
I'm a div with green text and a child div! +
I'm a smaller child div with red text.
\ No newline at end of file diff --git a/foundations/06-cascade-fix/solution/solution.css b/foundations/06-cascade-fix/solution/solution.css index 44bee02..7242ee3 100644 --- a/foundations/06-cascade-fix/solution/solution.css +++ b/foundations/06-cascade-fix/solution/solution.css @@ -8,14 +8,14 @@ } .button { - background-color: #ffc0cb; - color: black; + background-color: rgb(255, 255, 255); + color: rgb(0, 0, 0); font-size: 20px; } div.text { color: green; - font-size: 28px; + font-size: 22px; } /* SOLUTION */ @@ -24,7 +24,7 @@ div.text { For the following rule, we removed it from its original position in the file: .small-para { - font-size: 12px; + font-size: 14px; } Then we placed it after the .para selector, taking advantage of the rule order since both selectors have the same specificity. @@ -37,7 +37,7 @@ div.text { */ .small-para { - font-size: 12px; + font-size: 14px; } /* @@ -46,7 +46,6 @@ div.text { .confirm { background: green; color: white; - font-size: 20px; font-weight: bold; } @@ -57,7 +56,6 @@ div.text { .button.confirm { background: green; color: white; - font-size: 20px; font-weight: bold; } */ @@ -65,7 +63,6 @@ div.text { #confirm-button { background: green; color: white; - font-size: 20px; font-weight: bold; } @@ -90,4 +87,4 @@ div.text { div .child { color: red; font-size: 14px; -} \ No newline at end of file +} diff --git a/foundations/06-cascade-fix/solution/solution.html b/foundations/06-cascade-fix/solution/solution.html index 27ac65a..18f0303 100644 --- a/foundations/06-cascade-fix/solution/solution.html +++ b/foundations/06-cascade-fix/solution/solution.html @@ -8,15 +8,15 @@ -

I'm just a simple paragraph!

-

I'm a smaller paragraph!

+

I'm just a paragraph with red text!

+

I'm a smaller paragraph, also with red text!

-
I'm not related to those divs down there.
-
I have a child! -
My ancestor is so embarrassing.
+
I'm a div with green text!
+
I'm a div with green text and a child div! +
I'm a smaller child div with red text.
\ No newline at end of file diff --git a/foundations/06-cascade-fix/style.css b/foundations/06-cascade-fix/style.css index 9965754..7ad1694 100644 --- a/foundations/06-cascade-fix/style.css +++ b/foundations/06-cascade-fix/style.css @@ -4,7 +4,7 @@ } .small-para { - font-size: 12px; + font-size: 14px; } .para { @@ -14,13 +14,12 @@ .confirm { background: green; color: white; - font-size: 20px; font-weight: bold; } .button { - background-color: #ffc0cb; - color: black; + background-color: rgb(255, 255, 255); + color: rgb(0, 0, 0); font-size: 20px; } @@ -31,5 +30,5 @@ div.text { color: green; - font-size: 28px; + font-size: 22px; } \ No newline at end of file From a1e4143a583c2592a0d7bc81c5e31b88d19b2e6b Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 11:31:49 -0500 Subject: [PATCH 02/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 89 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d211bb1..61a3a43 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,39 +4,81 @@ Thank you for expressing interest in contributing to our CSS exercises! Please b **Please do not open a pull request (PR) with your solutions to any exercises in this repo**. Your PR will be immediately closed without being merged. The exercises are for you to do and keep on your own local machine or your personal GitHub. +## Table of Contents +* [Label Meanings](#label-meanings) +* [Being Assigned an Issue](#being-assigned-an-issue) +* [Creating an Issue](#creating-an-issue) +* [Setting Up Your Local Clone](#setting-up-your-local-clone) +* [Working on an Issue](#working-on-an-issue) +* [Opening a Pull Request](#opening-a-pull-request) +* [Further Help](#further-help) + +## Label Meanings + +The labels that get applied to issues and PRs have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. + +### Status Labels +* Abandoned: This issue/PR has been abandoned, and no further work or review should be done +* Accepted: This PR has been accepted and merged +* Awaiting Changes: Waiting for requested changes to be made +* Awaiting Response: Waiting for a response from the contributor +* Completed: This issue has been completed and a PR has been made +* Do Not Merge: This PR should not be merged +* Do Not Review: This PR should not be reviewed +* Help Wanted: Contributors can ask to be assigned this issue +* In Progress: This issue/PR is actively being worked on +* Invalid: The template or another item in the issue/PR is invalid or not relevant +* Investigating: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed +* Needs Review: This PR needs a review from one or more maintainers +* On Hold: There is a temporary hold on any continued work or review +* Under Review: This issue/PR is actively being reviewed by at least one maintainer + +### Type Labels +* Accessibility: Involves an accessibility feature or requires review for accessibility +* Bug: Something isn't working as intended +* Chore: Involves changes to the build process or internal tooling +* Documentation: Involves an update to the documentation +* Duplicate: This issue/PR already exists and should not be worked on or reviewed +* Enhancement: Involves a new feature or enhancement request +* Good First Issue: Good for beginner contributors +* Hacktoberfest: This issue is a good Hacktoberfest participation +* Maintainer Only: This issue is available only to maintainers + ## How to Contribute ### Being Assigned an Issue If you would like to work on an existing issue in the repo: -1) Find an issue that is not currently assigned to anyone - * A couple of good places to start are ["help wanted" issues](https://github.com/TheOdinProject/css-exercises/labels/Help%20Wanted) or ["good first issue" issues](https://github.com/TheOdinProject/css-exercises/labels/good%20first%20issue) +1) Find an issue that is not currently assigned to anyone. + * A couple of good places to start are ["help wanted" issues](https://github.com/TheOdinProject/css-exercises/labels/Status%3A%20Help%20Wanted) or ["good first issue" issues](https://github.com/TheOdinProject/css-exercises/labels/Type%3A%20Good%20First%20Issue) -2) Ask to be assigned the issue by a maintainer +2) Ask to be assigned the issue by a maintainer. * **If you are not a maintainer, do not give others permission to work on an issue** -3) **Wait to be assigned the issue before starting any work** +3) **Wait to be assigned the issue before starting any work**. -4) After being assigned, address each item listed in the acceptance criteria - * If there are no acceptance criteria stated in the issue, ask the maintainer that assigned you the issue if any exist - -If you would like to propose a small change (fixing a typo, updating a link, etc.) that is not part of an existing issue, you are welcome to make the change and submit a PR without an official issue. +4) After being assigned, address each item listed in the acceptance criteria. + * If there are no acceptance criteria stated in the issue, ask the maintainer that assigned you the issue if any exist. ### Creating an Issue -If you would like to propose a more significant change: +If you would like to make a small change (fixing a typo, updating a link, etc.) that is not part of an existing issue, you are welcome to make the change and submit a PR without creating an official issue. -1. Go through the open issues and make sure an issue doesn't already exist +If you do not wish to make a small change yourself and instead want to create an issue for it, or if you would like to propose a more significant change: + +1. Go through the open issues and make sure an issue doesn't already exist. * If the issue already exists, but there are details you feel are missing, leave a comment on the already opened issue -2. If the issue doesn't already exist, create a new one and **read the issue template in its entirety and fill out all applicable sections** +2. If the issue doesn't already exist, create a new one and **read the issue template in its entirety and fill out all applicable sections**. + * The title of the issue should be in `file/exercise/folder: brief description of issue` format. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. + * If you would like to be assigned the issue you are creating, complete the applicable checkbox in the issue template. Note that this does not guarantee that you will be assigned the issue, but rather it lets maintainers know that you are interested. ### Setting Up Your Local Clone Before you begin working on anything, be sure you follow these steps in order to set up a clone on your local machine: -1. Fork this repo to your own GitHub account. If you don't know how to do so, follow the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) +1. Fork this repo to your own GitHub account. If you don't know how to do so, follow the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). 2. Clone this repo to your local machine with one of the following commands, replacing the `` text with your actual GitHub username: ```bash @@ -72,26 +114,31 @@ Once you have the repo forked and cloned, and the upstream remote has been set, 4. Push your branch to your forked repo, replacing the `` with the branch you've been working on locally: ```bash - $ git push origin + git push origin ``` - + +5. Preview your proposed changes by locally opening any applicable HTML files (or using VS Code's Live Server extension). If the preview matches the existing "Desired Outcome" image(s) for the exercise, continue to open a pull request. Otherwise, update any images in your local clone and commit + push those changes before opening a pull request. + ### Opening a Pull Request -1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button +1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button. * If you don't see this button, you can click the branch dropdown menu and then select the branch you just pushed from your local clone: ![GitHub branch dropdown menu](https://user-images.githubusercontent.com/70952936/150646139-bc080c64-db57-4776-8db1-6525b7b47be2.jpg) - * Once you have switched to the correct branch on GitHub, click the "Contribute" dropdown and then click the "Open pull request" button + * Once you have switched to the correct branch on GitHub, click the "Contribute" dropdown and then click the "Open pull request" button. -2. **Read the PR template in its entirety and fill out all applicable sections** before submitting your PR +2. **Read the PR template in its entirety and fill out all applicable sections** before submitting your PR. + * The title of the PR should be in `file/exercise/folder: brief description of change` format, e.g. `01 flex center: add hint for XYZ`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. + * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. + * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template by replacing the `XXXXX` with the issue number, e.g. `Closes #2013` -3. At this point a maintainer will either leave general comments, request changes, or approve and merge your PR - * It is important to respond to any comments or requested changes in a timely manner, otherwise your PR may be closed without being merged due to inactivity +3. At this point a maintainer will either leave general comments, request changes, or approve and merge your PR. + * It is important to respond to any comments or requested changes in a timely manner, otherwise your PR may be closed without being merged due to inactivity. * After pushing any requested changes to the branch you opened the PR with, be sure to re-request a review from the maintainer that requested those changes at the top of the right sidebar: ![Reviewers section of GitHub's sidebar](https://user-images.githubusercontent.com/70952936/150647064-4fdd59d1-82a4-4f18-894d-0e43a5ee0ffb.jpg) -## Need Further Help? -Please let us know if you require any help doing any of the steps in this guide in our Discord's [contribution-suggestions channel](https://discordapp.com/channels/505093832157691914/540903304046182425). +## Further Help +Please let us know if you require any further help with any of the steps in this guide in our Discord's [contribution-suggestions channel](https://discordapp.com/channels/505093832157691914/540903304046182425). From 24caf40c622780edff3485bc60aa90f16ac066b1 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 11:35:10 -0500 Subject: [PATCH 03/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 61a3a43..b7218d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,7 +121,7 @@ Once you have the repo forked and cloned, and the upstream remote has been set, ### Opening a Pull Request -1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button. +1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button. If you have multiples of this button, be sure you click the one for the correct branch. * If you don't see this button, you can click the branch dropdown menu and then select the branch you just pushed from your local clone: ![GitHub branch dropdown menu](https://user-images.githubusercontent.com/70952936/150646139-bc080c64-db57-4776-8db1-6525b7b47be2.jpg) From 8180561bbdc5db5c63aee979e67ae1759f449b8e Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 11:41:25 -0500 Subject: [PATCH 04/53] Create bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..29171a2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: 'Type: Bug' +assignees: '' + +--- + +- [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue is in `file/exercise/folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` + + +- [ ] If approved, I would like to be assigned this issue to work on it + +**Description of the Bug** + + +**How To Reproduce** + + +**Expected Behavior** + + +**Desktop/Device:** + - Device: + - OS: + - Browser + - Version + +**Additional Information** + From afe4faa2a6b805ea85b71f5f3603c0bc76ac613f Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 11:42:24 -0500 Subject: [PATCH 05/53] Create feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..0611ec5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature Request +about: Suggest a new feature for this project +title: '' +labels: 'Type: Enhancement' +assignees: '' + +--- + +- [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue is in `file/exercise/folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` + + +- [ ] If approved, I would like to be assigned this issue to work on it + +**Description of the Feature Request** + + +**Additional Information** + From d637df6ed9c86ef04c73328d6e0eb3a4b08a3282 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 11:42:40 -0500 Subject: [PATCH 06/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 29171a2..f498076 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,5 +1,5 @@ --- -name: Bug report +name: Bug Report about: Create a report to help us improve title: '' labels: 'Type: Bug' From 9bd534d501e1d0445b7889041fb8a289f34cf394 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:00:42 -0500 Subject: [PATCH 07/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b7218d8..a85a2a0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,6 +31,7 @@ The labels that get applied to issues and PRs have specific meanings and are bro * Investigating: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed * Needs Review: This PR needs a review from one or more maintainers * On Hold: There is a temporary hold on any continued work or review +* Stale: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues * Under Review: This issue/PR is actively being reviewed by at least one maintainer ### Type Labels From 257eba880576d7d110ed217921f149408cf73217 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 21:24:39 -0500 Subject: [PATCH 08/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a85a2a0..4231a9c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,13 +23,14 @@ The labels that get applied to issues and PRs have specific meanings and are bro * Awaiting Changes: Waiting for requested changes to be made * Awaiting Response: Waiting for a response from the contributor * Completed: This issue has been completed and a PR has been made +* Discussion: This issue/PR is actively being discussed * Do Not Merge: This PR should not be merged -* Do Not Review: This PR should not be reviewed +* Do Not Review: This issue/PR should not be reviewed * Help Wanted: Contributors can ask to be assigned this issue * In Progress: This issue/PR is actively being worked on * Invalid: The template or another item in the issue/PR is invalid or not relevant * Investigating: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed -* Needs Review: This PR needs a review from one or more maintainers +* Needs Review: This issue/PR needs a review from one or more maintainers * On Hold: There is a temporary hold on any continued work or review * Stale: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues * Under Review: This issue/PR is actively being reviewed by at least one maintainer @@ -42,7 +43,7 @@ The labels that get applied to issues and PRs have specific meanings and are bro * Duplicate: This issue/PR already exists and should not be worked on or reviewed * Enhancement: Involves a new feature or enhancement request * Good First Issue: Good for beginner contributors -* Hacktoberfest: This issue is a good Hacktoberfest participation +* Hacktoberfest: This issue/PR is a good Hacktoberfest participation * Maintainer Only: This issue is available only to maintainers ## How to Contribute From 9878f2de3db27ef2a733feb77cba0d2800a955f4 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 23 Jan 2022 21:51:57 -0500 Subject: [PATCH 09/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4231a9c..2da8786 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,9 +24,9 @@ The labels that get applied to issues and PRs have specific meanings and are bro * Awaiting Response: Waiting for a response from the contributor * Completed: This issue has been completed and a PR has been made * Discussion: This issue/PR is actively being discussed -* Do Not Merge: This PR should not be merged -* Do Not Review: This issue/PR should not be reviewed -* Help Wanted: Contributors can ask to be assigned this issue +* Do Not Merge: This PR should not be merged until further notice +* Do Not Review: This issue/PR should not be reviewed until further notice +* Help Wanted: This issue can be assigned to other contributors * In Progress: This issue/PR is actively being worked on * Invalid: The template or another item in the issue/PR is invalid or not relevant * Investigating: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed From 731f32477992bfc5b2c059e952faea58f5b0c83b Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 08:02:54 -0500 Subject: [PATCH 10/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 0611ec5..2c8efb4 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -2,21 +2,24 @@ name: Feature Request about: Suggest a new feature for this project title: '' -labels: 'Type: Enhancement' +labels: ['Type: Enhancement', 'Status: Needs Review'] assignees: '' --- - + + + - [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is in `file/exercise/folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` - + - [ ] If approved, I would like to be assigned this issue to work on it -**Description of the Feature Request** + +**1. Description of the Feature Request** -**Additional Information** + +**2. Additional Information** + From 7c88a0e2a5f4f4d90beab3503675898b38be4f31 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 08:06:01 -0500 Subject: [PATCH 11/53] Fix multiple default labels --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 2c8efb4..5c452d9 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -2,7 +2,7 @@ name: Feature Request about: Suggest a new feature for this project title: '' -labels: ['Type: Enhancement', 'Status: Needs Review'] +labels: 'Status: Needs Review, Type: Enhancement' assignees: '' --- From ea660bf5fa9123aa445289c026c94a2704e41c1b Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 08:08:19 -0500 Subject: [PATCH 12/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 29 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f498076..08fb86f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,33 +2,38 @@ name: Bug Report about: Create a report to help us improve title: '' -labels: 'Type: Bug' +labels: 'Status: Needs Review, Type: Bug' assignees: '' --- - + + + - [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is in `file/exercise/folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` - + - [ ] If approved, I would like to be assigned this issue to work on it -**Description of the Bug** + +**1. Description of the Bug** -**How To Reproduce** + +**2. How To Reproduce** -**Expected Behavior** + +**3. Expected Behavior** -**Desktop/Device:** + +**4. Desktop/Device:** - Device: - OS: - - Browser - - Version + - Browser: + - Version: -**Additional Information** +**5. Additional Information** + From c4579b975b1ca99168939b9067d6eb47fa56e1b3 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 12:07:07 -0500 Subject: [PATCH 13/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2da8786..b37b279 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -130,10 +130,11 @@ Once you have the repo forked and cloned, and the upstream remote has been set, * Once you have switched to the correct branch on GitHub, click the "Contribute" dropdown and then click the "Open pull request" button. -2. **Read the PR template in its entirety and fill out all applicable sections** before submitting your PR. +2. **Read the PR template in its entirety before filling it out and submitting a PR**. Not filling out the template correctly will delay a PR getting merged. + * If a checkbox is not required and is not applicable to your PR, do not complete it. If your PR isn't related to an open issue, for example, you shouldn't complete the checkbox for linking an issue. * The title of the PR should be in `file/exercise/folder: brief description of change` format, e.g. `01 flex center: add hint for XYZ`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. - * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. - * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template by replacing the `XXXXX` with the issue number, e.g. `Closes #2013` + * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. This gives maintainers the information to consider when deciding whether a PR should be merged. + * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template. This can be done either by replacing the `XXXXX` with the issue number, e.g. `Closes #2013`, or if the issue is in another TOP repo replacing the `#XXXXX` with the URL of the issue, e.g. `Closes https://github.com/TheOdinProject/curriculum/issues/XXXXX`. This streamlines the issue closing process, as an issue that is linked to a PR will be closed when that PR gets merged. 3. At this point a maintainer will either leave general comments, request changes, or approve and merge your PR. * It is important to respond to any comments or requested changes in a timely manner, otherwise your PR may be closed without being merged due to inactivity. From d57a220d074abe839c6bc5253a609f5d72f9e76f Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 12:13:07 -0500 Subject: [PATCH 14/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 5c452d9..02672b0 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -6,16 +6,15 @@ labels: 'Status: Needs Review, Type: Enhancement' assignees: '' --- - + - -- [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) + +- [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is in `file/exercise/folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` - [ ] If approved, I would like to be assigned this issue to work on it - **1. Description of the Feature Request** From 4bfc2f2d36ba1f90b49634c127867251fcd29f71 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 24 Jan 2022 12:13:15 -0500 Subject: [PATCH 15/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 08fb86f..546031d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -6,16 +6,15 @@ labels: 'Status: Needs Review, Type: Bug' assignees: '' --- - + - -- [ ] I have thoroughly read the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) + +- [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is in `file/exercise/folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` - [ ] If approved, I would like to be assigned this issue to work on it - **1. Description of the Bug** From cd1b331a44d055a91e6b9873b99470c7015b638e Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sat, 29 Jan 2022 10:24:21 -0500 Subject: [PATCH 16/53] Add clarification for suggestions on Discord --- CONTRIBUTING.md | 69 +++++++++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b37b279..a121728 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,6 +6,7 @@ Thank you for expressing interest in contributing to our CSS exercises! Please b ## Table of Contents * [Label Meanings](#label-meanings) +* [How to Contribute](#how-to-contribute) * [Being Assigned an Issue](#being-assigned-an-issue) * [Creating an Issue](#creating-an-issue) * [Setting Up Your Local Clone](#setting-up-your-local-clone) @@ -18,36 +19,54 @@ Thank you for expressing interest in contributing to our CSS exercises! Please b The labels that get applied to issues and PRs have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. ### Status Labels -* Abandoned: This issue/PR has been abandoned, and no further work or review should be done -* Accepted: This PR has been accepted and merged -* Awaiting Changes: Waiting for requested changes to be made -* Awaiting Response: Waiting for a response from the contributor -* Completed: This issue has been completed and a PR has been made -* Discussion: This issue/PR is actively being discussed -* Do Not Merge: This PR should not be merged until further notice -* Do Not Review: This issue/PR should not be reviewed until further notice -* Help Wanted: This issue can be assigned to other contributors -* In Progress: This issue/PR is actively being worked on -* Invalid: The template or another item in the issue/PR is invalid or not relevant -* Investigating: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed -* Needs Review: This issue/PR needs a review from one or more maintainers -* On Hold: There is a temporary hold on any continued work or review -* Stale: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues -* Under Review: This issue/PR is actively being reviewed by at least one maintainer +* **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done +* **Accepted**: This PR has been accepted and merged +* **Awaiting** Changes: Waiting for requested changes to be made +* **Awaiting** Response: Waiting for a response from the contributor +* **Completed**: This issue has been completed and a PR has been made +* **Discussion**: This issue/PR is actively being discussed +* **Do Not Merge**: This PR should not be merged until further notice +* **Do Not Review**: This issue/PR should not be reviewed until further notice +* **Help Wanted**: This issue can be assigned to other contributors +* **In Progress**: This issue/PR is actively being worked on +* **Invalid**: The template or another item in the issue/PR is invalid or not relevant +* **Investigating**: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed +* **Needs Review**: This issue/PR needs a review from one or more maintainers +* **On Hold**: There is a temporary hold on any continued work or review +* **Stale**: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues +* **Under Review**: This issue/PR is actively being reviewed by at least one maintainer ### Type Labels -* Accessibility: Involves an accessibility feature or requires review for accessibility -* Bug: Something isn't working as intended -* Chore: Involves changes to the build process or internal tooling -* Documentation: Involves an update to the documentation -* Duplicate: This issue/PR already exists and should not be worked on or reviewed -* Enhancement: Involves a new feature or enhancement request -* Good First Issue: Good for beginner contributors -* Hacktoberfest: This issue/PR is a good Hacktoberfest participation -* Maintainer Only: This issue is available only to maintainers +* **Accessibility**: Involves an accessibility feature or requires review for accessibility +* **Bug**: Something isn't working as intended +* **Chore**: Involves changes to the build process or internal tooling +* **Documentation**: Involves an update to the documentation +* **Duplicate**: This issue/PR already exists and should not be worked on or reviewed +* **Enhancement**: Involves a new feature or enhancement request +* **Good First Issue**: Good for beginner contributors +* **Hacktoberfest**: This issue/PR is a good Hacktoberfest participation +* **Maintainer Only**: This issue is available only to maintainers ## How to Contribute +The complexity of a change can determine how exactly you should go about contributing. Generally, simpler or more minor changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Things that are simple or more minor that you should feel free to just create an issue or PR can include: + +* Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." +* Simple syntax errors - "This line of code is missing a closing element tag." +* Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" +* Small-scale changes - "I think including instructions about X could help minimize confusion at this step." + +On the other hand, if you have a more complex suggestion or notice a more urgent issue, going to our [`contribution-suggestions-bugs-disccusion` Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to get more of a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created and to ask for feedback **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. + +While you should also feel free to just create an issue for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid spending the time to create a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: + +* A complete rewrite of a lesson +* Adding a completely new lesson +* HTML in lessons is not displaying properly +* A new feature for the website + +Regardless of the complexity of a change, when you wish to make a contribution you should follow any further instructions in this guide. + ### Being Assigned an Issue If you would like to work on an existing issue in the repo: From 3e3f72ea106dd3f201fa16782c5fc06973cf6dff Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sat, 29 Jan 2022 13:47:07 -0500 Subject: [PATCH 17/53] Make instructions less repo specific Rather than tailoring contribution guides to the repo they reside in, I decided to make one that was more general and could be simply copy+pasted into each repo where necessary. This can require less upkeep when changes are made (simply copy+paste across all repos rather than needing to comb through and copy+paste only specific sections that were updated). Tailored instructions will be added later, such as instructions for running TOP locally, lesson writing guide (TBA), etc. --- CONTRIBUTING.md | 88 ++++++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a121728..afc27d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,13 @@ # CSS Exercises Contributing Guide -Thank you for expressing interest in contributing to our CSS exercises! Please be sure to read this guide thoroughly before contributing, as it will lessen the chances of any issues arising during the process. +Thank you for expressing interest in contributing to The Odin Project! If you are new to contributing to our repos, or to contributing to open-source in general, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. -**Please do not open a pull request (PR) with your solutions to any exercises in this repo**. Your PR will be immediately closed without being merged. The exercises are for you to do and keep on your own local machine or your personal GitHub. +**Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. ## Table of Contents * [Label Meanings](#label-meanings) * [How to Contribute](#how-to-contribute) +* [Check Before Doing Anything](#check-before-doing-anything) * [Being Assigned an Issue](#being-assigned-an-issue) * [Creating an Issue](#creating-an-issue) * [Setting Up Your Local Clone](#setting-up-your-local-clone) @@ -16,7 +17,7 @@ Thank you for expressing interest in contributing to our CSS exercises! Please b ## Label Meanings -The labels that get applied to issues and PRs have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. +The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. ### Status Labels * **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done @@ -49,71 +50,80 @@ The labels that get applied to issues and PRs have specific meanings and are bro ## How to Contribute -The complexity of a change can determine how exactly you should go about contributing. Generally, simpler or more minor changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Things that are simple or more minor that you should feel free to just create an issue or PR can include: +The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Simple changes that you should feel free to just create an issue or PR for can include: * Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." * Simple syntax errors - "This line of code is missing a closing element tag." * Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" -* Small-scale changes - "I think including instructions about X could help minimize confusion at this step." +* Other small-scale changes - "I think including instructions about X could help minimize confusion at this step." -On the other hand, if you have a more complex suggestion or notice a more urgent issue, going to our [`contribution-suggestions-bugs-disccusion` Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to get more of a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created and to ask for feedback **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. +If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-disccusion Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. -While you should also feel free to just create an issue for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid spending the time to create a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: +While you should also feel free to just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: * A complete rewrite of a lesson * Adding a completely new lesson * HTML in lessons is not displaying properly * A new feature for the website -Regardless of the complexity of a change, when you wish to make a contribution you should follow any further instructions in this guide. +Regardless of the complexity of a change, when you wish to make a contribution on a TOP repo you should follow any further instructions in this guide. + +### Check Before Doing Anything + +It's important that you look through any open issues or PRs in a repo before attempting to submit a new issue or work on a change, regardless of the complexity. This will help avoid any duplicates from being made, as well as prevent more than one person working on the same thing at the same time. + +If your proposal already exists in an open issue or PR, but you feel therer are details missing, comment on the issue/PR to let those involved know of those missing details. ### Being Assigned an Issue -If you would like to work on an existing issue in the repo: +If you would like to work on an existing issue in a repo: 1) Find an issue that is not currently assigned to anyone. - * A couple of good places to start are ["help wanted" issues](https://github.com/TheOdinProject/css-exercises/labels/Status%3A%20Help%20Wanted) or ["good first issue" issues](https://github.com/TheOdinProject/css-exercises/labels/Type%3A%20Good%20First%20Issue) + * A couple of good places to start are issues with the `Status: Help Wanted` or `Type: Good First Issue` labels. You can filter the issues list to only show ones with these (or any) specific labels to make them easier to find. 2) Ask to be assigned the issue by a maintainer. * **If you are not a maintainer, do not give others permission to work on an issue** 3) **Wait to be assigned the issue before starting any work**. -4) After being assigned, address each item listed in the acceptance criteria. - * If there are no acceptance criteria stated in the issue, ask the maintainer that assigned you the issue if any exist. +4) After being assigned, address each item listed in the acceptance criteria, if any exist. + * If an issue doesn't have any acceptance criteria, feel free to go about resolving the issue however you wish. You can also ask the maintainer that assigned you the issue if there are any specific acceptance criteria. ### Creating an Issue -If you would like to make a small change (fixing a typo, updating a link, etc.) that is not part of an existing issue, you are welcome to make the change and submit a PR without creating an official issue. +1. If you would like to make a simple change that is not part of an existing issue, you are welcome to skip the next step and just submit a PR with your proposed change(s). -If you do not wish to make a small change yourself and instead want to create an issue for it, or if you would like to propose a more significant change: - -1. Go through the open issues and make sure an issue doesn't already exist. - * If the issue already exists, but there are details you feel are missing, leave a comment on the already opened issue - -2. If the issue doesn't already exist, create a new one and **read the issue template in its entirety and fill out all applicable sections**. +2. Create a new issue and **read the issue template in its entirety and fill out all applicable sections**. * The title of the issue should be in `file/exercise/folder: brief description of issue` format. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. * If you would like to be assigned the issue you are creating, complete the applicable checkbox in the issue template. Note that this does not guarantee that you will be assigned the issue, but rather it lets maintainers know that you are interested. ### Setting Up Your Local Clone -Before you begin working on anything, be sure you follow these steps in order to set up a clone on your local machine: +Before you begin working on anything, make sure you follow these steps in order to set up a clone on your local machine: 1. Fork this repo to your own GitHub account. If you don't know how to do so, follow the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). -2. Clone this repo to your local machine with one of the following commands, replacing the `` text with your actual GitHub username: +2. Clone this repo to your local machine with one of the commands below. Be sure the `` text is replaced with your actual GitHub username, and the `` with the actual repo name. You can also read the GitHub documentaiton on [cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). + ```bash - # If you have SSH set up with Git - git clone git@github.com:/css-exercises.git - # Otherwise for HTTPS - git clone https://github.com//css-exercises.git + # If you have SSH set up with Git: + git clone git@github.com:/.git + # Otherwise for HTTPS: + git clone https://github.com//.git + + # An example: + git clone git@github.com:Odinson/css-exercises.git ``` -3. `cd` into the directory of your local clone, then set the upstream remote so you can keep your local clone synced with TOP's original repo: +3. `cd` into the directory of your local clone, then set the upstream remote so you can keep your local clone synced with TOP's original repo. The `` below should be the same as the one you used when creating your local clone in the previous step. + ```bash - # If you have SSH set up with Git - git remote add upstream git@github.com:TheOdinProject/css-exercises.git - # Otherwise for HTTPS + # If you have SSH set up with Git: + git remote add upstream git@github.com:TheOdinProject/.git + # Otherwise for HTTPS: + git remote add upstream https://github.com/TheOdinProject/.git + + # An example: git remote add upstream https://github.com/TheOdinProject/css-exercises.git ``` @@ -121,21 +131,33 @@ Before you begin working on anything, be sure you follow these steps in order to Once you have the repo forked and cloned, and the upstream remote has been set, you can begin working on your issue: -1. Create a new branch, replacing the `` with an actual branch name, e.g. "flex_exercises": +1. Create a new branch, replacing the `` with an actual branch name: + ```bash git checkout -b + + # An example: + git checkout -b flex_exercises ``` 2. Add commits as you work on your issue, replacing the `` text with your actual commit message: + ```bash git commit -m "" + + # An example: + git commit -m "Update solution files" ``` -3. Sync your work with the upstream remote every so often. Follow the [ongoing workflow](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-programming/lessons/using-git-in-the-real-world#ongoing-workflow) section in our Using Git in the Real World lesson. +3. Sync your work with the upstream remote every so often. Follow the [ongoing workflow](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-programming/lessons/using-git-in-the-real-world#ongoing-workflow) instructions in our Using Git in the Real World lesson. 4. Push your branch to your forked repo, replacing the `` with the branch you've been working on locally: + ```bash git push origin + + # An example: + git push origin flex_exercises ``` 5. Preview your proposed changes by locally opening any applicable HTML files (or using VS Code's Live Server extension). If the preview matches the existing "Desired Outcome" image(s) for the exercise, continue to open a pull request. Otherwise, update any images in your local clone and commit + push those changes before opening a pull request. @@ -151,7 +173,7 @@ Once you have the repo forked and cloned, and the upstream remote has been set, 2. **Read the PR template in its entirety before filling it out and submitting a PR**. Not filling out the template correctly will delay a PR getting merged. * If a checkbox is not required and is not applicable to your PR, do not complete it. If your PR isn't related to an open issue, for example, you shouldn't complete the checkbox for linking an issue. - * The title of the PR should be in `file/exercise/folder: brief description of change` format, e.g. `01 flex center: add hint for XYZ`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. + * The title of the PR should follow the format described in the PR template, which is usually some variation of `file or lesson: brief description of changes`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. This gives maintainers the information to consider when deciding whether a PR should be merged. * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template. This can be done either by replacing the `XXXXX` with the issue number, e.g. `Closes #2013`, or if the issue is in another TOP repo replacing the `#XXXXX` with the URL of the issue, e.g. `Closes https://github.com/TheOdinProject/curriculum/issues/XXXXX`. This streamlines the issue closing process, as an issue that is linked to a PR will be closed when that PR gets merged. @@ -163,4 +185,4 @@ Once you have the repo forked and cloned, and the upstream remote has been set, ## Further Help -Please let us know if you require any further help with any of the steps in this guide in our Discord's [contribution-suggestions channel](https://discordapp.com/channels/505093832157691914/540903304046182425). +Please let us know if you require any further help with any of the steps in this guide in our [contribution-suggestions-bugs-disccusion Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425). From 73d76c59c33d767fcaacd713d0c3e020c3ff554a Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sat, 29 Jan 2022 15:49:34 -0500 Subject: [PATCH 18/53] Add repo specific links --- CONTRIBUTING.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index afc27d0..4fce3b6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# CSS Exercises Contributing Guide +# The Odin Project Contributing Guide Thank you for expressing interest in contributing to The Odin Project! If you are new to contributing to our repos, or to contributing to open-source in general, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. @@ -7,6 +7,7 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar ## Table of Contents * [Label Meanings](#label-meanings) * [How to Contribute](#how-to-contribute) +* [Repo Specific Instructions](#repo-specific-instructions) * [Check Before Doing Anything](#check-before-doing-anything) * [Being Assigned an Issue](#being-assigned-an-issue) * [Creating an Issue](#creating-an-issue) @@ -17,7 +18,7 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar ## Label Meanings -The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. +The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. ### Status Labels * **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done @@ -57,7 +58,7 @@ The complexity of a change can determine how exactly you should go about contrib * Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" * Other small-scale changes - "I think including instructions about X could help minimize confusion at this step." -If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-disccusion Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. +If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. While you should also feel free to just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: @@ -68,6 +69,16 @@ While you should also feel free to just create an issue on a repo for more compl Regardless of the complexity of a change, when you wish to make a contribution on a TOP repo you should follow any further instructions in this guide. +### Repo Specific Instructions + +#### [TOP Website Repo](https://github.com/TheOdinProject/theodinproject) + +Before starting any work on our main website repo, you must read and follow the instructions found on [The Odin Project Wiki](https://github.com/TheOdinProject/theodinproject/wiki). These instructions will help you get the TOP app running locally, and help you with adding new paths, courses, sections, and lessons. + +#### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) + +When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across our lessons. + ### Check Before Doing Anything It's important that you look through any open issues or PRs in a repo before attempting to submit a new issue or work on a change, regardless of the complexity. This will help avoid any duplicates from being made, as well as prevent more than one person working on the same thing at the same time. @@ -185,4 +196,4 @@ Once you have the repo forked and cloned, and the upstream remote has been set, ## Further Help -Please let us know if you require any further help with any of the steps in this guide in our [contribution-suggestions-bugs-disccusion Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425). +Please let us know if you require any further help with any of the steps in this guide in our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425). From ca1fc1fe549db16a42b29ae898d87294f92f5ecf Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sat, 29 Jan 2022 18:16:15 -0500 Subject: [PATCH 19/53] Add verbiage explaining curriculum structure --- CONTRIBUTING.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fce3b6..58b4ed7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,6 +5,7 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar **Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. ## Table of Contents +* [Common Verbiage](#common-verbiage) * [Label Meanings](#label-meanings) * [How to Contribute](#how-to-contribute) * [Repo Specific Instructions](#repo-specific-instructions) @@ -16,6 +17,15 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar * [Opening a Pull Request](#opening-a-pull-request) * [Further Help](#further-help) +## Curriculum Structure + +Between the website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring to certain parts of the curriculum, both for consistency and to make sure everyone understands what you mean. + +* **Path**: The broadest level of the curriculum structure. When you first start The Odin Project, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. +* **Course**: A path is made up of different courses. A course splits a path into more distinct topics, and each course has its own completion percentage. When asked what course you're on, you might say "I'm on the Getting Hired course!" +* **Section**: A course is made up for different sections. A section splits a course into even more distinct topics. When asked what section you're on, you might say "I just started the Basic Ruby section!" +* **Lesson**: Finally, a section is made of different lessons. This is the most specific level of the curriculum structure. This is the exact thing you're currently on. When asked what lesson you're on, you might say "I'm reading through the Webpack lesson!" + ## Label Meanings The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. From fd98fa80384a49bfde504e0104e50e027c5ff523 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sat, 29 Jan 2022 21:23:17 -0500 Subject: [PATCH 20/53] Update link to curriculum structure --- CONTRIBUTING.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58b4ed7..7e13800 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar **Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. ## Table of Contents -* [Common Verbiage](#common-verbiage) +* [Curriculum Structure](#curriculum-structure) * [Label Meanings](#label-meanings) * [How to Contribute](#how-to-contribute) * [Repo Specific Instructions](#repo-specific-instructions) @@ -19,16 +19,16 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar ## Curriculum Structure -Between the website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring to certain parts of the curriculum, both for consistency and to make sure everyone understands what you mean. +Between the website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring or contributing to certain parts of the curriculum, both for consistency and to make sure everyone understands what you mean. * **Path**: The broadest level of the curriculum structure. When you first start The Odin Project, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. * **Course**: A path is made up of different courses. A course splits a path into more distinct topics, and each course has its own completion percentage. When asked what course you're on, you might say "I'm on the Getting Hired course!" -* **Section**: A course is made up for different sections. A section splits a course into even more distinct topics. When asked what section you're on, you might say "I just started the Basic Ruby section!" -* **Lesson**: Finally, a section is made of different lessons. This is the most specific level of the curriculum structure. This is the exact thing you're currently on. When asked what lesson you're on, you might say "I'm reading through the Webpack lesson!" +* **Section**: A course is made up of different sections. A section splits a course into even more distinct topics. When asked what section you're on, you might say "I just started the Basic Ruby section!" +* **Lesson**: Finally, a section is made up of different lessons. This is the most specific level of the curriculum structure. This is the exact thing you're currently on. When asked what lesson you're on, you might say "I'm reading through the Webpack lesson!" ## Label Meanings -The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. +The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. The following isn't a complete list, but rather a list of the labels that are universal across all of our repos. ### Status Labels * **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done @@ -66,11 +66,11 @@ The complexity of a change can determine how exactly you should go about contrib * Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." * Simple syntax errors - "This line of code is missing a closing element tag." * Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" -* Other small-scale changes - "I think including instructions about X could help minimize confusion at this step." +* Other small-scale changes - "I think including an instruction about X could help minimize confusion at this step." If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. -While you should also feel free to just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: +While you should also feel free to just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid doing work and opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: * A complete rewrite of a lesson * Adding a completely new lesson From 0553ec4342a071bf9cc3113d21042f3afc540661 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 30 Jan 2022 10:57:18 -0500 Subject: [PATCH 21/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e13800..37c9b77 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,13 +8,13 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar * [Curriculum Structure](#curriculum-structure) * [Label Meanings](#label-meanings) * [How to Contribute](#how-to-contribute) -* [Repo Specific Instructions](#repo-specific-instructions) -* [Check Before Doing Anything](#check-before-doing-anything) -* [Being Assigned an Issue](#being-assigned-an-issue) -* [Creating an Issue](#creating-an-issue) -* [Setting Up Your Local Clone](#setting-up-your-local-clone) -* [Working on an Issue](#working-on-an-issue) -* [Opening a Pull Request](#opening-a-pull-request) + * [Repo Specific Instructions](#repo-specific-instructions) + * [Check Before Doing Anything](#check-before-doing-anything) + * [Being Assigned an Issue](#being-assigned-an-issue) + * [Creating an Issue](#creating-an-issue) + * [Setting Up Your Local Clone](#setting-up-your-local-clone) + * [Working on an Issue](#working-on-an-issue) + * [Opening a Pull Request](#opening-a-pull-request) * [Further Help](#further-help) ## Curriculum Structure @@ -68,9 +68,9 @@ The complexity of a change can determine how exactly you should go about contrib * Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" * Other small-scale changes - "I think including an instruction about X could help minimize confusion at this step." -If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created **if** you haven't seen any activity on the actual issue/PR for a while; just keep in mind that maintainers have busy lives and may not get to things immediately. +If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created if you haven't seen any activity on the actual issue/PR for a while, or to have a more real-time discussion. Just keep in mind that maintainers have busy lives - many with day jobs - and may not get to items on our repos immediately. -While you should also feel free to just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid doing work and opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: +While you can also just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid doing work and opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: * A complete rewrite of a lesson * Adding a completely new lesson From be973a8aa43554e05b1c55f61af254a7f5b1fb16 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 30 Jan 2022 11:16:38 -0500 Subject: [PATCH 22/53] Mention link in lessons for improving on GitHub --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 37c9b77..3d433f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,7 @@ The labels that get applied to issues and PRs in our repos have specific meaning ## How to Contribute -The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Simple changes that you should feel free to just create an issue or PR for can include: +The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. All of our lessons include a handy "Improve this lesson on GitHub" link to make it even easier to submit simpler change requests. Simple changes that you should feel free to just create an issue or PR for can include: * Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." * Simple syntax errors - "This line of code is missing a closing element tag." From 1965908802a3608582d1759fe9a17816e9a6b2ec Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 31 Jan 2022 00:11:22 -0300 Subject: [PATCH 23/53] Modify Self Check item on README.md --- grid/01-grid-layout-1/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grid/01-grid-layout-1/README.md b/grid/01-grid-layout-1/README.md index 1793fce..e3a3ecf 100644 --- a/grid/01-grid-layout-1/README.md +++ b/grid/01-grid-layout-1/README.md @@ -3,6 +3,7 @@ Now it's time to practice the Grid tools we've learned and create a layout that might seem familiar. We're going to make a Holy Grail Layout like the ones we created using Flexbox. The difference here is that we won't be relying on Flexbox for this exercise. We'll only be using Grid. You'll be able to see the benefits of Grid for yourself! ### Hints + - You only need to add to the CSS selectors - Look back to the Creating a Grid lesson if you forget how to turn an element into a grid - Use fixed track sizes (e.g. pixels) for your columns and rows @@ -12,10 +13,11 @@ Now it's time to practice the Grid tools we've learned and create a layout that ![desired outcome](./desired-outcome.png) ### Self Check + - The gap is 15px - The grid has two columns - The grid has four rows -- The first column is three times larger than the other +- The second column is three times larger than the first - The third row is five times larger than the others - The header and footer elements span across both columns - The sidebar element only spans across the first column From a1042d0568c4b7c36702a253a78661eb5fea2bd7 Mon Sep 17 00:00:00 2001 From: Yuji Oshiro Date: Sun, 30 Jan 2022 20:35:34 -0800 Subject: [PATCH 24/53] Update README.md --- grid/02-grid-layout-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grid/02-grid-layout-2/README.md b/grid/02-grid-layout-2/README.md index 11b7059..6e79c57 100644 --- a/grid/02-grid-layout-2/README.md +++ b/grid/02-grid-layout-2/README.md @@ -21,7 +21,7 @@ When the browser is stretched wide: - The grid has two columns - The grid has four rows - The grid tracks do not use static sizes (no pixels!) -- The first column is three times larger than the other +- The second column is three times larger than the other - The third row is five times larger than the others - The rows and columns stretch wider when making the browser window bigger - The rows and columns stretch taller when making the browser window smaller From 371577c81eb0cd91f6cabc9323dbdddb3261edcd Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 31 Jan 2022 18:46:43 -0500 Subject: [PATCH 25/53] Add link to GH creating issues doc --- CONTRIBUTING.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3d433f4..0d027f5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # The Odin Project Contributing Guide -Thank you for expressing interest in contributing to The Odin Project! If you are new to contributing to our repos, or to contributing to open-source in general, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. +Thank you for expressing interest in contributing to The Odin Project (TOP)! If you are new to contributing to our repos, or to contributing to open-source in general, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. **Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. @@ -21,7 +21,7 @@ Thank you for expressing interest in contributing to The Odin Project! If you ar Between the website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring or contributing to certain parts of the curriculum, both for consistency and to make sure everyone understands what you mean. -* **Path**: The broadest level of the curriculum structure. When you first start The Odin Project, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. +* **Path**: The broadest level of the curriculum structure. When you first start TOP, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. * **Course**: A path is made up of different courses. A course splits a path into more distinct topics, and each course has its own completion percentage. When asked what course you're on, you might say "I'm on the Getting Hired course!" * **Section**: A course is made up of different sections. A section splits a course into even more distinct topics. When asked what section you're on, you might say "I just started the Basic Ruby section!" * **Lesson**: Finally, a section is made up of different lessons. This is the most specific level of the curriculum structure. This is the exact thing you're currently on. When asked what lesson you're on, you might say "I'm reading through the Webpack lesson!" @@ -61,7 +61,7 @@ The labels that get applied to issues and PRs in our repos have specific meaning ## How to Contribute -The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. All of our lessons include a handy "Improve this lesson on GitHub" link to make it even easier to submit simpler change requests. Simple changes that you should feel free to just create an issue or PR for can include: +The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Simple changes that you should feel free to just create an issue or PR for can include: * Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." * Simple syntax errors - "This line of code is missing a closing element tag." @@ -77,7 +77,7 @@ While you can also just create an issue on a repo for more complex or urgent cha * HTML in lessons is not displaying properly * A new feature for the website -Regardless of the complexity of a change, when you wish to make a contribution on a TOP repo you should follow any further instructions in this guide. +Regardless of the complexity of a change, when you wish to make a contribution on one of TOP's repos you should follow any further instructions in this guide. ### Repo Specific Instructions @@ -89,6 +89,8 @@ Before starting any work on our main website repo, you must read and follow the When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across our lessons. +If you're new to contributing to open-source, or if you just want to make a really quick change, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the methods described later in this guide. + ### Check Before Doing Anything It's important that you look through any open issues or PRs in a repo before attempting to submit a new issue or work on a change, regardless of the complexity. This will help avoid any duplicates from being made, as well as prevent more than one person working on the same thing at the same time. @@ -114,7 +116,7 @@ If you would like to work on an existing issue in a repo: 1. If you would like to make a simple change that is not part of an existing issue, you are welcome to skip the next step and just submit a PR with your proposed change(s). -2. Create a new issue and **read the issue template in its entirety and fill out all applicable sections**. +2. Create a new issue and **read the issue template in its entirety and fill out all applicable sections**. If you aren't sure how to create an issue, you can read the GitHub documentation on [creating an issue from a repository](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-repository). * The title of the issue should be in `file/exercise/folder: brief description of issue` format. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. * If you would like to be assigned the issue you are creating, complete the applicable checkbox in the issue template. Note that this does not guarantee that you will be assigned the issue, but rather it lets maintainers know that you are interested. From 6bcd754be236de71063fbdd9ce80d0e6004ea086 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 31 Jan 2022 20:13:26 -0500 Subject: [PATCH 26/53] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0d027f5..da3f5c1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -117,7 +117,7 @@ If you would like to work on an existing issue in a repo: 1. If you would like to make a simple change that is not part of an existing issue, you are welcome to skip the next step and just submit a PR with your proposed change(s). 2. Create a new issue and **read the issue template in its entirety and fill out all applicable sections**. If you aren't sure how to create an issue, you can read the GitHub documentation on [creating an issue from a repository](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-repository). - * The title of the issue should be in `file/exercise/folder: brief description of issue` format. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. + * The title of the issue should follow a format similar to `file, exercise/lesson, or folder: brief description of issue`. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. * If you would like to be assigned the issue you are creating, complete the applicable checkbox in the issue template. Note that this does not guarantee that you will be assigned the issue, but rather it lets maintainers know that you are interested. ### Setting Up Your Local Clone @@ -196,7 +196,7 @@ Once you have the repo forked and cloned, and the upstream remote has been set, 2. **Read the PR template in its entirety before filling it out and submitting a PR**. Not filling out the template correctly will delay a PR getting merged. * If a checkbox is not required and is not applicable to your PR, do not complete it. If your PR isn't related to an open issue, for example, you shouldn't complete the checkbox for linking an issue. - * The title of the PR should follow the format described in the PR template, which is usually some variation of `file or lesson: brief description of changes`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. + * The title of the PR should follow the format described in the PR template, which is usually some variation of `file, exercise/lesson, or folder: brief description of changes`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. This gives maintainers the information to consider when deciding whether a PR should be merged. * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template. This can be done either by replacing the `XXXXX` with the issue number, e.g. `Closes #2013`, or if the issue is in another TOP repo replacing the `#XXXXX` with the URL of the issue, e.g. `Closes https://github.com/TheOdinProject/curriculum/issues/XXXXX`. This streamlines the issue closing process, as an issue that is linked to a PR will be closed when that PR gets merged. From b4a8e63dc594fc17a1ef6b9d95da548743cad1a6 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 31 Jan 2022 20:14:19 -0500 Subject: [PATCH 27/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 546031d..b6a6f80 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,7 +10,7 @@ assignees: '' - [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is in `file/exercise/folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` +- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` - [ ] If approved, I would like to be assigned this issue to work on it From dd08621c42a2ab69806d9a3768b70439be23ab3c Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 31 Jan 2022 20:15:10 -0500 Subject: [PATCH 28/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 02672b0..34a92aa 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -10,7 +10,7 @@ assignees: '' - [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is in `file/exercise/folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` +- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` - [ ] If approved, I would like to be assigned this issue to work on it From 0dc37ecae6f914ef61a17ec85c2700db3a0a3d08 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 31 Jan 2022 20:16:25 -0500 Subject: [PATCH 29/53] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8edabc4..a10b872 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,7 +2,7 @@ - [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/TheOdinProject/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this PR is in `file/exercise/folder: brief description of changes` format e.g. `01 flex center: add hint for XYZ` +- [ ] The title of this PR is similar to the `file, exercise/lesson, or folder: brief description of changes` format e.g. `01 flex center: add hint for XYZ` - [ ] If one exists, I have linked a related open issue to this PR in Step 2 below From 800f48e75ff7637a5a5a0a6a964078565f3b4969 Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Mon, 31 Jan 2022 20:54:57 -0500 Subject: [PATCH 30/53] Add clarificatoins --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- CONTRIBUTING.md | 13 +++++++------ 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b6a6f80..1c57b43 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,7 +9,7 @@ assignees: '' -- [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 34a92aa..034f8ad 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -9,7 +9,7 @@ assignees: '' -- [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a10b872..3afd4c6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,10 @@ -- [ ] I have thoroughly read and understand the [CSS Exercises Contributing Guide](https://github.com/TheOdinProject/css-exercises/blob/main/CONTRIBUTING.md) +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/css-exercises/blob/main/CONTRIBUTING.md) - [ ] The title of this PR is similar to the `file, exercise/lesson, or folder: brief description of changes` format e.g. `01 flex center: add hint for XYZ` - + - [ ] If one exists, I have linked a related open issue to this PR in Step 2 below - [ ] If changes were requested, I have made them and re-requested a review from the maintainer (top of the right sidebar) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index da3f5c1..702ea54 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # The Odin Project Contributing Guide -Thank you for expressing interest in contributing to The Odin Project (TOP)! If you are new to contributing to our repos, or to contributing to open-source in general, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. +Thank you for expressing interest in contributing to The Odin Project (TOP)! Whether you are a first time contributor or you have made several contributions to our repos, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. **Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. @@ -19,7 +19,7 @@ Thank you for expressing interest in contributing to The Odin Project (TOP)! If ## Curriculum Structure -Between the website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring or contributing to certain parts of the curriculum, both for consistency and to make sure everyone understands what you mean. +Between our website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring or contributing to certain parts of our curriculum, both for consistency and to make sure everyone understands what you mean. * **Path**: The broadest level of the curriculum structure. When you first start TOP, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. * **Course**: A path is made up of different courses. A course splits a path into more distinct topics, and each course has its own completion percentage. When asked what course you're on, you might say "I'm on the Getting Hired course!" @@ -28,7 +28,7 @@ Between the website, repos, and Discord server, you're bound to see certain term ## Label Meanings -The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. The following isn't a complete list, but rather a list of the labels that are universal across all of our repos. +The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. The following isn't a complete list, but rather a list of the labels that are more universal across all of our repos. ### Status Labels * **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done @@ -77,7 +77,7 @@ While you can also just create an issue on a repo for more complex or urgent cha * HTML in lessons is not displaying properly * A new feature for the website -Regardless of the complexity of a change, when you wish to make a contribution on one of TOP's repos you should follow any further instructions in this guide. +Regardless of the complexity of a change, when you wish to make a contribution on one of TOP's repos you must follow any further instructions in this guide. ### Repo Specific Instructions @@ -87,9 +87,9 @@ Before starting any work on our main website repo, you must read and follow the #### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) -When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across our lessons. +When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across all of our lessons. -If you're new to contributing to open-source, or if you just want to make a really quick change, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the methods described later in this guide. +If you're new to contributing to open-source, or if you just want to make a really quick PR, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the steps to fork + clone one of our repos. ### Check Before Doing Anything @@ -103,6 +103,7 @@ If you would like to work on an existing issue in a repo: 1) Find an issue that is not currently assigned to anyone. * A couple of good places to start are issues with the `Status: Help Wanted` or `Type: Good First Issue` labels. You can filter the issues list to only show ones with these (or any) specific labels to make them easier to find. + * You can also filter out any issues with the `Status: In Progress` label, so that you only see issues that haven't been assigned to anyone. 2) Ask to be assigned the issue by a maintainer. * **If you are not a maintainer, do not give others permission to work on an issue** From 187d12dabacd41aee912570c7a10b820526aa26c Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Tue, 1 Feb 2022 17:27:08 -0500 Subject: [PATCH 31/53] Rearrange repo instructions section --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 702ea54..27fb727 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,16 +81,16 @@ Regardless of the complexity of a change, when you wish to make a contribution o ### Repo Specific Instructions -#### [TOP Website Repo](https://github.com/TheOdinProject/theodinproject) - -Before starting any work on our main website repo, you must read and follow the instructions found on [The Odin Project Wiki](https://github.com/TheOdinProject/theodinproject/wiki). These instructions will help you get the TOP app running locally, and help you with adding new paths, courses, sections, and lessons. - #### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across all of our lessons. If you're new to contributing to open-source, or if you just want to make a really quick PR, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the steps to fork + clone one of our repos. +#### [TOP Website Repo](https://github.com/TheOdinProject/theodinproject) + +Before starting any work on our main website repo, you must read and follow the instructions found on [The Odin Project Wiki](https://github.com/TheOdinProject/theodinproject/wiki). These instructions will help you get the TOP app running locally, and help you with adding new paths, courses, sections, and lessons. + ### Check Before Doing Anything It's important that you look through any open issues or PRs in a repo before attempting to submit a new issue or work on a change, regardless of the complexity. This will help avoid any duplicates from being made, as well as prevent more than one person working on the same thing at the same time. From 05670bb3a1e3e31dd7dad7f44c117d5bea1e6b1f Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 2 Feb 2022 21:25:38 -0500 Subject: [PATCH 32/53] Add link to lesson preview tool --- CONTRIBUTING.md | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27fb727..ef675f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,33 +31,35 @@ Between our website, repos, and Discord server, you're bound to see certain term The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. The following isn't a complete list, but rather a list of the labels that are more universal across all of our repos. ### Status Labels -* **Abandoned**: This issue/PR has been abandoned, and no further work or review should be done -* **Accepted**: This PR has been accepted and merged -* **Awaiting** Changes: Waiting for requested changes to be made -* **Awaiting** Response: Waiting for a response from the contributor -* **Completed**: This issue has been completed and a PR has been made -* **Discussion**: This issue/PR is actively being discussed +* **Abandoned**: This issue/PR has been abandoned and will not be implemented +* **Accepted**: This PR has been accepted and is able to be merged +* **Awaiting Changes**: Waiting for requested changes to be made by the contributor +* **Awaiting Response**: Waiting for a response from the contributor +* **Discussion**: This issue/PR has an ongoing discussion * **Do Not Merge**: This PR should not be merged until further notice * **Do Not Review**: This issue/PR should not be reviewed until further notice * **Help Wanted**: This issue can be assigned to other contributors -* **In Progress**: This issue/PR is actively being worked on -* **Invalid**: The template or another item in the issue/PR is invalid or not relevant -* **Investigating**: Something is being looked into by a maintainer, but the issue/PR is not being actively reviewed -* **Needs Review**: This issue/PR needs a review from one or more maintainers +* **In Progress**: This issue/PR has ongoing work being done +* **Invalid**: This issue/PR is invalid or is not relevant +* **Investigating**: Something in this issue/PR is being investigated +* **Needs Review**: This issue/PR needs an initial or additional review * **On Hold**: There is a temporary hold on any continued work or review * **Stale**: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues -* **Under Review**: This issue/PR is actively being reviewed by at least one maintainer +* **Under Review**: This issue/PR is being reviewed by at least one maintainer ### Type Labels -* **Accessibility**: Involves an accessibility feature or requires review for accessibility +* **Accessibility**: Involves an accessibility feature or requires accessibility review * **Bug**: Something isn't working as intended * **Chore**: Involves changes to the build process or internal tooling * **Documentation**: Involves an update to the documentation -* **Duplicate**: This issue/PR already exists and should not be worked on or reviewed +* **Duplicate**: This issue/PR already exists +* **Easy Fix**: Involves a minor fix such as grammar, syntax, etc. * **Enhancement**: Involves a new feature or enhancement request +* **Epic**: This issue is a larger, unnamed project with several moving parts * **Good First Issue**: Good for beginner contributors -* **Hacktoberfest**: This issue/PR is a good Hacktoberfest participation +* **Hacktoberfest**: This issue is a good Hacktoberfest participation * **Maintainer Only**: This issue is available only to maintainers +* **Priority**: This issue/PR should be resolved ASAP ## How to Contribute @@ -83,9 +85,13 @@ Regardless of the complexity of a change, when you wish to make a contribution o #### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) -When submitting a PR for a new lesson, or when you are making significant changes to an existing lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md). This helps ensure the layout and formatting is consistent across all of our lessons. + If you're new to contributing to open-source, or if you just want to make a really quick PR, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the steps to fork + clone one of our repos. -If you're new to contributing to open-source, or if you just want to make a really quick PR, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the steps to fork + clone one of our repos. + While working on an existing or a new lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md) to ensure the layout and formatting is consistent across our curriculum. + + Before submitting a PR for an existing or a new lesson, you must use our [Lesson Preview Tool](https://www.theodinproject.com/lessons/preview) to ensure the lesson Markdown is correctly formatted and rendering properly. + +
#### [TOP Website Repo](https://github.com/TheOdinProject/theodinproject) From 3e3fd4e2b82b9fef0fc5aeed1f7dfc18ecddd702 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Thu, 3 Feb 2022 22:29:05 -0500 Subject: [PATCH 33/53] Remove instruction specific to css exercise repo --- CONTRIBUTING.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef675f3..1a8c13d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,24 +63,22 @@ The labels that get applied to issues and PRs in our repos have specific meaning ## How to Contribute -The complexity of a change can determine how exactly you should go about contributing. Generally, simpler changes can just have an issue made or a PR created rather than needing to bring it up on our Discord server. Simple changes that you should feel free to just create an issue or PR for can include: +**Simple Issues and Changes**: These don't have an overall significant impact on our repos. You can just open an issue or a PR in the appropriate repo rather than needing to bring it up on our Discord server. Simple issues and changes can include: * Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." * Simple syntax errors - "This line of code is missing a closing element tag." * Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" * Other small-scale changes - "I think including an instruction about X could help minimize confusion at this step." -If you have a more complex suggestion or notice a more urgent issue, going to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) can be a great way to start a discussion or receive feedback. This channel can also be used to share a link to an issue or PR you have created if you haven't seen any activity on the actual issue/PR for a while, or to have a more real-time discussion. Just keep in mind that maintainers have busy lives - many with day jobs - and may not get to items on our repos immediately. +**Significant Issues and Changes**: These will have a more significant impact on our repos, or require more work to be done in order to resolve the issue or implement the change. You should never submit a PR for a significant issue or change without first getting approval from maintainers, as we don't want your time and work to go to waste if your proposal isn't accepted. You can either go to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) to mention an issue or a proposed change, or you can simply open an issue in the appropriate repo and wait to receive a response. This channel can also be used to share a link to an issue or PR you have created if you haven't seen any activity on the actual issue/PR for a while, or to have a more real-time discussion. Just keep in mind that maintainers have busy lives - many with day jobs - and may not get to items on our repos immediately. -While you can also just create an issue on a repo for more complex or urgent changes rather than bring it up on our Discord, generally you should avoid doing work and opening a PR for such changes. Depending what the PR entails, it may not be something we're looking to implement at this time or is not how we wish to go about things, and we don't want all of that time and work going to waste. Changes that may be more complex or urgent can include: +Significant issues and changes can include: * A complete rewrite of a lesson * Adding a completely new lesson * HTML in lessons is not displaying properly * A new feature for the website -Regardless of the complexity of a change, when you wish to make a contribution on one of TOP's repos you must follow any further instructions in this guide. - ### Repo Specific Instructions #### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) @@ -190,8 +188,6 @@ Once you have the repo forked and cloned, and the upstream remote has been set, git push origin flex_exercises ``` -5. Preview your proposed changes by locally opening any applicable HTML files (or using VS Code's Live Server extension). If the preview matches the existing "Desired Outcome" image(s) for the exercise, continue to open a pull request. Otherwise, update any images in your local clone and commit + push those changes before opening a pull request. - ### Opening a Pull Request 1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button. If you have multiples of this button, be sure you click the one for the correct branch. From 813552b0c8524e4b30ebf9e5f345629b9808fd40 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 9 Feb 2022 20:44:03 -0500 Subject: [PATCH 34/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1c57b43..8996e01 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -13,7 +13,7 @@ assignees: '' - [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` -- [ ] If approved, I would like to be assigned this issue to work on it +- [ ] I would like to be assigned this issue to work on it **1. Description of the Bug** From 745f1811769f5d5692ede8f0c970d2fa194ff561 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 9 Feb 2022 23:19:03 -0500 Subject: [PATCH 35/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 034f8ad..a990b4d 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,19 +1,19 @@ --- name: Feature Request -about: Suggest a new feature for this project +about: Suggest a new feature or enhancement for this project title: '' -labels: 'Status: Needs Review, Type: Enhancement' +labels: 'Status: Needs Review' assignees: '' --- - + -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of request` format, e.g. `01 flex center: add hint for XYZ` +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of request` format, e.g. `Global SCSS file: Buttons should have XYZ` -- [ ] If approved, I would like to be assigned this issue to work on it +- [ ] I would like to be assigned this issue to work on it **1. Description of the Feature Request** From a8b94e74bde883712388ddaaf736051f3ef98b99 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 9 Feb 2022 23:19:16 -0500 Subject: [PATCH 36/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8996e01..31f85ed 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,8 +9,8 @@ assignees: '' -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/thatblindgeye/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `01 flex center: solution files do not match desired outcome` +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `React section: Knowledge Checks don't link to resource` - [ ] I would like to be assigned this issue to work on it From a8b4902cf8d28dd9cc652a74e79b7683c27e3554 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 9 Feb 2022 23:21:08 -0500 Subject: [PATCH 37/53] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 3afd4c6..cdc3114 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,9 @@ -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/css-exercises/blob/main/CONTRIBUTING.md) -- [ ] The title of this PR is similar to the `file, exercise/lesson, or folder: brief description of changes` format e.g. `01 flex center: add hint for XYZ` +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this PR is similar to the `file, exercise/lesson, or folder: brief description of changes` format e.g. `Intro to HTML and CSS lesson: Fix link text` +- [ ] I have ensured that the Desired Outcome image is still accurate for the exercise solution - [ ] If one exists, I have linked a related open issue to this PR in Step 2 below From 76c3b3e8f1dbbe5e69a57301b08c99518e08bd2b Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 12:59:55 -0500 Subject: [PATCH 38/53] Update README.md --- README.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ad7908f..49d8daa 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,23 @@ # CSS Exercises -These exercises are a series of CSS related tasks intended to complement the HTML and CSS content on The Odin Project. +These exercises are a series of CSS related tasks intended to complement the HTML and CSS content on The Odin Project (TOP). They should only be done when instructed during the course of the curriculum. -These exercises should be done when instructed during the course of the curriculum. +When doing these exercises, please use all the documentation and resources you need to accomplish them. You are _not_ intended to have any of this stuff memorized at this point. Check the docs, use Google, do what you need to do (besides checking the solutions) to get them done. -> When doing the following exercises, please use all the documentation and resources you need to accomplish them. You are _not_ intended to have any of this stuff memorized at this point. Check the docs, use Google, do what you need to do (besides checking the solutions) to get them done. +## Contributing + +If you have a suggestion to improve an exercise, an idea for a new exercise, or notice an issue with an exercise, please feel free to open an issue after thoroughly reading our [contributing guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) in our main TOP repo. ## How to use these exercises -1. Fork and copy this repository. To learn how to fork a repository, see the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). Copies of repositories on your machine are called clones. If you need help cloning to your local environment you can learn how from the GitHub documentation on [cloning a repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github/cloning-a-repository). -2. Go to an exercise directory and open the HTML file in your browser. You can either open the file directly, or use something like VSCode's Live Server. -3. For each exercise, view the README, and edit the CSS file to make the output in your browser look like the images provided. -4. Each README has a "Self Check" list. Use this to make sure you haven't missed any important details in your implementation. -5. Don't check the solutions until you're done! +1. Fork and clone this repository. To learn how to fork a repository, see the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). + * Copies of repositories on your machine are called clones. If you need help cloning to your local environment you can learn how from the GitHub documentation on [cloning a repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github/cloning-a-repository). +2. Go to an exercise directory and open the HTML file in your browser. You can either open the file directly, or use something like VSCode's Live Server extension. +3. For each exercise, read the README thoroughly before starting any work. + * Each README has a "Self Check" list. Use this to make sure you haven't missed any important details in your implementation. +5. Make your edits in the `index.html` and/or the `style.css` files in order to make the output in your browser look like the Desired Outcome image(s). + * Depending on the instructions of the exercise, you may only need to make edits in one of these files. +6. Don't check the solutions until you're done! ## Some hints - The official solutions put all changes at the _end_ of the CSS file, which may duplicate some selectors (e.g. there might be a `body {}` in the given CSS, and another `body {}` in the solution). When you are working on an exercise, it is best practice to add your CSS to existing selectors instead of duplicating them at the end of the file. We're sacrificing this best practice in our official solutions to make it extra clear to you what things we changed to solve the exercise. @@ -20,4 +25,3 @@ These exercises should be done when instructed during the course of the curricul - You may need to add some elements to your HTML to get things into the right spot. (For the first few exercises we make it explicit when this needs to happen.) - You may need to add more selectors to your CSS file. The first few exercises have almost everything already done for you, but as you progress you'll find that you need to add more and more to get the correct result. - In many cases, there will be multiple correct ways to solve these problems. The official solution isn't necessarily the _only right way_, but it is possible to do things in ways that are overall unhelpful. If your solution differs wildly from the official solution (and still passes the self-check criteria), feel free to ask about it in the chatroom. - From 50b9c70cdc2d51e139d62bf73c101379b251d8b1 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 13:25:39 -0500 Subject: [PATCH 39/53] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cdc3114..80c9946 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,7 +2,7 @@ - [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this PR is similar to the `file, exercise/lesson, or folder: brief description of changes` format e.g. `Intro to HTML and CSS lesson: Fix link text` +- [ ] The title of this PR follows the `where the change occurs: brief description of change` format, e.g. `Intro to HTML and CSS lesson: Fix link text` - [ ] I have ensured that the Desired Outcome image is still accurate for the exercise solution From e7c3747276b5944f5f0af5da89a1c2410f611813 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 13:32:33 -0500 Subject: [PATCH 40/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 31f85ed..e2b4e57 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,7 +10,7 @@ assignees: '' - [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of bug` format, e.g. `React section: Knowledge Checks don't link to resource` +- [ ] The title of this issue follows the `where the change occurs: brief description of bug` format, e.g. `React section: Knowledge Checks don't link to resource` - [ ] I would like to be assigned this issue to work on it From ff890f0c38c412831412d88869ca58e414ec7cbc Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 13:34:42 -0500 Subject: [PATCH 41/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a990b4d..3dd36af 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -10,7 +10,7 @@ assignees: '' - [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue is similar to the `file, exercise/lesson, or folder: brief description of request` format, e.g. `Global SCSS file: Buttons should have XYZ` +- [ ] The title of this issue follows the `where the change occurs: brief description of request` format, e.g. `Global SCSS file: Buttons should have XYZ` - [ ] I would like to be assigned this issue to work on it From 4d6a49fd2845f6ba98e42f056d9bfc15cf648547 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 14:55:58 -0500 Subject: [PATCH 42/53] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 49d8daa..9396b23 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ When doing these exercises, please use all the documentation and resources you n If you have a suggestion to improve an exercise, an idea for a new exercise, or notice an issue with an exercise, please feel free to open an issue after thoroughly reading our [contributing guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) in our main TOP repo. -## How to use these exercises +## How To Use These Exercises 1. Fork and clone this repository. To learn how to fork a repository, see the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). * Copies of repositories on your machine are called clones. If you need help cloning to your local environment you can learn how from the GitHub documentation on [cloning a repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github/cloning-a-repository). @@ -19,7 +19,7 @@ If you have a suggestion to improve an exercise, an idea for a new exercise, or * Depending on the instructions of the exercise, you may only need to make edits in one of these files. 6. Don't check the solutions until you're done! -## Some hints +## Some Hints - The official solutions put all changes at the _end_ of the CSS file, which may duplicate some selectors (e.g. there might be a `body {}` in the given CSS, and another `body {}` in the solution). When you are working on an exercise, it is best practice to add your CSS to existing selectors instead of duplicating them at the end of the file. We're sacrificing this best practice in our official solutions to make it extra clear to you what things we changed to solve the exercise. - Unless listed in the self-check section, do not worry about getting the exact pixel value for things like margin, padding and font-size. These exercises are intended to test your knowledge of CSS, not your ability to guess that a screenshot is using `font: sans-serif bold 16px`, or that the margin is _exactly_ `42px`. - You may need to add some elements to your HTML to get things into the right spot. (For the first few exercises we make it explicit when this needs to happen.) From 1708fce801a6e9a9c2aceda3174f713137dbf6d4 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 15:06:35 -0500 Subject: [PATCH 43/53] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 80c9946..4597d8a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,9 +3,9 @@ - [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) - [ ] The title of this PR follows the `where the change occurs: brief description of change` format, e.g. `Intro to HTML and CSS lesson: Fix link text` -- [ ] I have ensured that the Desired Outcome image is still accurate for the exercise solution +- [ ] If updates were made to any solution code, I have ensured that the Desired Outcome image is accurate - [ ] If one exists, I have linked a related open issue to this PR in Step 2 below - [ ] If changes were requested, I have made them and re-requested a review from the maintainer (top of the right sidebar) From 1021268c239a4f6ed7b85833242811a064cc347e Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 14 Feb 2022 15:14:44 -0500 Subject: [PATCH 44/53] Delete CONTRIBUTING.md --- CONTRIBUTING.md | 214 ------------------------------------------------ 1 file changed, 214 deletions(-) delete mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 1a8c13d..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,214 +0,0 @@ -# The Odin Project Contributing Guide - -Thank you for expressing interest in contributing to The Odin Project (TOP)! Whether you are a first time contributor or you have made several contributions to our repos, please be sure to read this guide thoroughly before contributing as it will lessen the chances of any issues arising during the process. - -**Please do not open an issue or pull request (PR) with your solutions to any exercise repo**. Your PR will be immediately closed without being merged. The exercise repos are for you to do and keep any work on your own local machine or your personal GitHub. - -## Table of Contents -* [Curriculum Structure](#curriculum-structure) -* [Label Meanings](#label-meanings) -* [How to Contribute](#how-to-contribute) - * [Repo Specific Instructions](#repo-specific-instructions) - * [Check Before Doing Anything](#check-before-doing-anything) - * [Being Assigned an Issue](#being-assigned-an-issue) - * [Creating an Issue](#creating-an-issue) - * [Setting Up Your Local Clone](#setting-up-your-local-clone) - * [Working on an Issue](#working-on-an-issue) - * [Opening a Pull Request](#opening-a-pull-request) -* [Further Help](#further-help) - -## Curriculum Structure - -Between our website, repos, and Discord server, you're bound to see certain terms being used in regards to the curriculum structure. It can be important to keep these terms in mind when referring or contributing to certain parts of our curriculum, both for consistency and to make sure everyone understands what you mean. - -* **Path**: The broadest level of the curriculum structure. When you first start TOP, you will be on the Foundations path. Upon completion of Foundations, you choose one of two different Full Stack paths to continue down. -* **Course**: A path is made up of different courses. A course splits a path into more distinct topics, and each course has its own completion percentage. When asked what course you're on, you might say "I'm on the Getting Hired course!" -* **Section**: A course is made up of different sections. A section splits a course into even more distinct topics. When asked what section you're on, you might say "I just started the Basic Ruby section!" -* **Lesson**: Finally, a section is made up of different lessons. This is the most specific level of the curriculum structure. This is the exact thing you're currently on. When asked what lesson you're on, you might say "I'm reading through the Webpack lesson!" - -## Label Meanings - -The labels that get applied to issues and PRs in our repos have specific meanings and are broken into two categories: status and type. An issue/PR should only ever have one status label, but can have multiple type labels. The following isn't a complete list, but rather a list of the labels that are more universal across all of our repos. - -### Status Labels -* **Abandoned**: This issue/PR has been abandoned and will not be implemented -* **Accepted**: This PR has been accepted and is able to be merged -* **Awaiting Changes**: Waiting for requested changes to be made by the contributor -* **Awaiting Response**: Waiting for a response from the contributor -* **Discussion**: This issue/PR has an ongoing discussion -* **Do Not Merge**: This PR should not be merged until further notice -* **Do Not Review**: This issue/PR should not be reviewed until further notice -* **Help Wanted**: This issue can be assigned to other contributors -* **In Progress**: This issue/PR has ongoing work being done -* **Invalid**: This issue/PR is invalid or is not relevant -* **Investigating**: Something in this issue/PR is being investigated -* **Needs Review**: This issue/PR needs an initial or additional review -* **On Hold**: There is a temporary hold on any continued work or review -* **Stale**: This issue/PR has been inactive for over 30 days and may be closed if inactivity continues -* **Under Review**: This issue/PR is being reviewed by at least one maintainer - -### Type Labels -* **Accessibility**: Involves an accessibility feature or requires accessibility review -* **Bug**: Something isn't working as intended -* **Chore**: Involves changes to the build process or internal tooling -* **Documentation**: Involves an update to the documentation -* **Duplicate**: This issue/PR already exists -* **Easy Fix**: Involves a minor fix such as grammar, syntax, etc. -* **Enhancement**: Involves a new feature or enhancement request -* **Epic**: This issue is a larger, unnamed project with several moving parts -* **Good First Issue**: Good for beginner contributors -* **Hacktoberfest**: This issue is a good Hacktoberfest participation -* **Maintainer Only**: This issue is available only to maintainers -* **Priority**: This issue/PR should be resolved ASAP - -## How to Contribute - -**Simple Issues and Changes**: These don't have an overall significant impact on our repos. You can just open an issue or a PR in the appropriate repo rather than needing to bring it up on our Discord server. Simple issues and changes can include: - -* Typo or grammar fixes - "I noticed that this sentence in this lesson is using incorrect grammar." -* Simple syntax errors - "This line of code is missing a closing element tag." -* Clarifying questions - "This lesson says to use this syntax, but in a previous lesson we were told to use a different syntax. Which is correct?" -* Other small-scale changes - "I think including an instruction about X could help minimize confusion at this step." - -**Significant Issues and Changes**: These will have a more significant impact on our repos, or require more work to be done in order to resolve the issue or implement the change. You should never submit a PR for a significant issue or change without first getting approval from maintainers, as we don't want your time and work to go to waste if your proposal isn't accepted. You can either go to our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425) to mention an issue or a proposed change, or you can simply open an issue in the appropriate repo and wait to receive a response. This channel can also be used to share a link to an issue or PR you have created if you haven't seen any activity on the actual issue/PR for a while, or to have a more real-time discussion. Just keep in mind that maintainers have busy lives - many with day jobs - and may not get to items on our repos immediately. - -Significant issues and changes can include: - -* A complete rewrite of a lesson -* Adding a completely new lesson -* HTML in lessons is not displaying properly -* A new feature for the website - -### Repo Specific Instructions - -#### [TOP Curriculum Repo](https://github.com/TheOdinProject/curriculum) - - If you're new to contributing to open-source, or if you just want to make a really quick PR, you can click the "Improve this lesson on GitHub" link found at the end of each lesson instead of going through the steps to fork + clone one of our repos. - - While working on an existing or a new lesson, you must follow our [Layout Style Guide](https://github.com/TheOdinProject/curriculum/blob/main/LAYOUT_STYLE_GUIDE.md) to ensure the layout and formatting is consistent across our curriculum. - - Before submitting a PR for an existing or a new lesson, you must use our [Lesson Preview Tool](https://www.theodinproject.com/lessons/preview) to ensure the lesson Markdown is correctly formatted and rendering properly. - -
- -#### [TOP Website Repo](https://github.com/TheOdinProject/theodinproject) - -Before starting any work on our main website repo, you must read and follow the instructions found on [The Odin Project Wiki](https://github.com/TheOdinProject/theodinproject/wiki). These instructions will help you get the TOP app running locally, and help you with adding new paths, courses, sections, and lessons. - -### Check Before Doing Anything - -It's important that you look through any open issues or PRs in a repo before attempting to submit a new issue or work on a change, regardless of the complexity. This will help avoid any duplicates from being made, as well as prevent more than one person working on the same thing at the same time. - -If your proposal already exists in an open issue or PR, but you feel therer are details missing, comment on the issue/PR to let those involved know of those missing details. - -### Being Assigned an Issue - -If you would like to work on an existing issue in a repo: - -1) Find an issue that is not currently assigned to anyone. - * A couple of good places to start are issues with the `Status: Help Wanted` or `Type: Good First Issue` labels. You can filter the issues list to only show ones with these (or any) specific labels to make them easier to find. - * You can also filter out any issues with the `Status: In Progress` label, so that you only see issues that haven't been assigned to anyone. - -2) Ask to be assigned the issue by a maintainer. - * **If you are not a maintainer, do not give others permission to work on an issue** - -3) **Wait to be assigned the issue before starting any work**. - -4) After being assigned, address each item listed in the acceptance criteria, if any exist. - * If an issue doesn't have any acceptance criteria, feel free to go about resolving the issue however you wish. You can also ask the maintainer that assigned you the issue if there are any specific acceptance criteria. - -### Creating an Issue - -1. If you would like to make a simple change that is not part of an existing issue, you are welcome to skip the next step and just submit a PR with your proposed change(s). - -2. Create a new issue and **read the issue template in its entirety and fill out all applicable sections**. If you aren't sure how to create an issue, you can read the GitHub documentation on [creating an issue from a repository](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-repository). - * The title of the issue should follow a format similar to `file, exercise/lesson, or folder: brief description of issue`. This makes it easier for anyone to quickly see what an issue is for, reducing the possibility of a duplicate issue from being made. - * If you would like to be assigned the issue you are creating, complete the applicable checkbox in the issue template. Note that this does not guarantee that you will be assigned the issue, but rather it lets maintainers know that you are interested. - -### Setting Up Your Local Clone - -Before you begin working on anything, make sure you follow these steps in order to set up a clone on your local machine: - -1. Fork this repo to your own GitHub account. If you don't know how to do so, follow the GitHub documentation on how to [fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo). - -2. Clone this repo to your local machine with one of the commands below. Be sure the `` text is replaced with your actual GitHub username, and the `` with the actual repo name. You can also read the GitHub documentaiton on [cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). - - ```bash - # If you have SSH set up with Git: - git clone git@github.com:/.git - # Otherwise for HTTPS: - git clone https://github.com//.git - - # An example: - git clone git@github.com:Odinson/css-exercises.git - ``` - -3. `cd` into the directory of your local clone, then set the upstream remote so you can keep your local clone synced with TOP's original repo. The `` below should be the same as the one you used when creating your local clone in the previous step. - - ```bash - # If you have SSH set up with Git: - git remote add upstream git@github.com:TheOdinProject/.git - # Otherwise for HTTPS: - git remote add upstream https://github.com/TheOdinProject/.git - - # An example: - git remote add upstream https://github.com/TheOdinProject/css-exercises.git - ``` - -### Working on an Issue - -Once you have the repo forked and cloned, and the upstream remote has been set, you can begin working on your issue: - -1. Create a new branch, replacing the `` with an actual branch name: - - ```bash - git checkout -b - - # An example: - git checkout -b flex_exercises - ``` - -2. Add commits as you work on your issue, replacing the `` text with your actual commit message: - - ```bash - git commit -m "" - - # An example: - git commit -m "Update solution files" - ``` - -3. Sync your work with the upstream remote every so often. Follow the [ongoing workflow](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-programming/lessons/using-git-in-the-real-world#ongoing-workflow) instructions in our Using Git in the Real World lesson. - -4. Push your branch to your forked repo, replacing the `` with the branch you've been working on locally: - - ```bash - git push origin - - # An example: - git push origin flex_exercises - ``` - -### Opening a Pull Request - -1. After pushing your changes, go to your forked repo on GitHub and click the "Compare & pull request" button. If you have multiples of this button, be sure you click the one for the correct branch. - * If you don't see this button, you can click the branch dropdown menu and then select the branch you just pushed from your local clone: - - ![GitHub branch dropdown menu](https://user-images.githubusercontent.com/70952936/150646139-bc080c64-db57-4776-8db1-6525b7b47be2.jpg) - - * Once you have switched to the correct branch on GitHub, click the "Contribute" dropdown and then click the "Open pull request" button. - -2. **Read the PR template in its entirety before filling it out and submitting a PR**. Not filling out the template correctly will delay a PR getting merged. - * If a checkbox is not required and is not applicable to your PR, do not complete it. If your PR isn't related to an open issue, for example, you shouldn't complete the checkbox for linking an issue. - * The title of the PR should follow the format described in the PR template, which is usually some variation of `file, exercise/lesson, or folder: brief description of changes`. This makes it easier for anyone to quickly see what a PR is for, reducing the possibility of a duplicate PR from being made. - * Be sure you describe the change(s) you are proposing in more detail in Step 1 of the PR template. If the PR is not related to an open issue, you should also include why your proposed changes are beneficial or what problem(s) it solves. This gives maintainers the information to consider when deciding whether a PR should be merged. - * If the PR is related to an open issue, be sure to link that issue in Step 2 of the PR template. This can be done either by replacing the `XXXXX` with the issue number, e.g. `Closes #2013`, or if the issue is in another TOP repo replacing the `#XXXXX` with the URL of the issue, e.g. `Closes https://github.com/TheOdinProject/curriculum/issues/XXXXX`. This streamlines the issue closing process, as an issue that is linked to a PR will be closed when that PR gets merged. - -3. At this point a maintainer will either leave general comments, request changes, or approve and merge your PR. - * It is important to respond to any comments or requested changes in a timely manner, otherwise your PR may be closed without being merged due to inactivity. - * After pushing any requested changes to the branch you opened the PR with, be sure to re-request a review from the maintainer that requested those changes at the top of the right sidebar: - - ![Reviewers section of GitHub's sidebar](https://user-images.githubusercontent.com/70952936/150647064-4fdd59d1-82a4-4f18-894d-0e43a5ee0ffb.jpg) - - -## Further Help -Please let us know if you require any further help with any of the steps in this guide in our [contribution-suggestions-bugs-discussions Discord channel](https://discordapp.com/channels/505093832157691914/540903304046182425). From 2ffb0662dc4edfa048d23d7dd3c647ff55499a3f Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 16 Feb 2022 17:00:09 -0500 Subject: [PATCH 45/53] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9396b23..1a5f2cd 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ If you have a suggestion to improve an exercise, an idea for a new exercise, or 5. Make your edits in the `index.html` and/or the `style.css` files in order to make the output in your browser look like the Desired Outcome image(s). * Depending on the instructions of the exercise, you may only need to make edits in one of these files. 6. Don't check the solutions until you're done! +7. Do not submit your solutions to this repo, as any PRs that do so will be closed without merging. ## Some Hints - The official solutions put all changes at the _end_ of the CSS file, which may duplicate some selectors (e.g. there might be a `body {}` in the given CSS, and another `body {}` in the solution). When you are working on an exercise, it is best practice to add your CSS to existing selectors instead of duplicating them at the end of the file. We're sacrificing this best practice in our official solutions to make it extra clear to you what things we changed to solve the exercise. From 402f6df28d3688e6de680132fb5d8edb9745a51d Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Wed, 16 Feb 2022 17:39:33 -0500 Subject: [PATCH 46/53] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1a5f2cd..e6e0632 100644 --- a/README.md +++ b/README.md @@ -15,14 +15,15 @@ If you have a suggestion to improve an exercise, an idea for a new exercise, or 2. Go to an exercise directory and open the HTML file in your browser. You can either open the file directly, or use something like VSCode's Live Server extension. 3. For each exercise, read the README thoroughly before starting any work. * Each README has a "Self Check" list. Use this to make sure you haven't missed any important details in your implementation. -5. Make your edits in the `index.html` and/or the `style.css` files in order to make the output in your browser look like the Desired Outcome image(s). +4. Make your edits in the `index.html` and/or the `style.css` files in order to make the output in your browser look like the Desired Outcome image(s). * Depending on the instructions of the exercise, you may only need to make edits in one of these files. -6. Don't check the solutions until you're done! -7. Do not submit your solutions to this repo, as any PRs that do so will be closed without merging. +5. Once you successfully finish an exercise, check TOP's solution to compare it with yours. + * You should not be checking the solution for an exercise until you finish it! + * Keep in mind that TOP's solution is not the only solution. If your solution differs wildly from TOP's solution (and still passes the self-check criteria), feel free to ask about it in the chatroom. +6. Do not submit your solutions to this repo, as any PRs that do so will be closed without merging. ## Some Hints - The official solutions put all changes at the _end_ of the CSS file, which may duplicate some selectors (e.g. there might be a `body {}` in the given CSS, and another `body {}` in the solution). When you are working on an exercise, it is best practice to add your CSS to existing selectors instead of duplicating them at the end of the file. We're sacrificing this best practice in our official solutions to make it extra clear to you what things we changed to solve the exercise. - Unless listed in the self-check section, do not worry about getting the exact pixel value for things like margin, padding and font-size. These exercises are intended to test your knowledge of CSS, not your ability to guess that a screenshot is using `font: sans-serif bold 16px`, or that the margin is _exactly_ `42px`. - You may need to add some elements to your HTML to get things into the right spot. (For the first few exercises we make it explicit when this needs to happen.) - You may need to add more selectors to your CSS file. The first few exercises have almost everything already done for you, but as you progress you'll find that you need to add more and more to get the correct result. -- In many cases, there will be multiple correct ways to solve these problems. The official solution isn't necessarily the _only right way_, but it is possible to do things in ways that are overall unhelpful. If your solution differs wildly from the official solution (and still passes the self-check criteria), feel free to ask about it in the chatroom. From bdaadc6258b27b8e5cb16a400ed3e7627b8569f8 Mon Sep 17 00:00:00 2001 From: Jeremy Myers Date: Fri, 18 Feb 2022 14:44:17 -0500 Subject: [PATCH 47/53] Amend Self Check --- grid/03-grid-layout-3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grid/03-grid-layout-3/README.md b/grid/03-grid-layout-3/README.md index f71527b..0215727 100644 --- a/grid/03-grid-layout-3/README.md +++ b/grid/03-grid-layout-3/README.md @@ -22,7 +22,7 @@ If you use the tools in the Advanced Grid Properties lesson you should be able t - The container's second column is 4 times larger than the first column - The container element has a gap of 4px - The header element has two columns -- The header element contains another grid that has two columns +- The header element contains another grid that has four columns - The `ul` inside the menu element contains another grid - The `ul` inside the nav element contains another grid - The sidebar element has a gap of 50px From 99219cc1ad6883aa2aab159e53e1dde4902bf79d Mon Sep 17 00:00:00 2001 From: Jeremy Myers Date: Sat, 19 Feb 2022 20:12:13 -0500 Subject: [PATCH 48/53] Remove unnecessary line from Self Check --- grid/03-grid-layout-3/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/grid/03-grid-layout-3/README.md b/grid/03-grid-layout-3/README.md index 0215727..99f7f6d 100644 --- a/grid/03-grid-layout-3/README.md +++ b/grid/03-grid-layout-3/README.md @@ -22,7 +22,6 @@ If you use the tools in the Advanced Grid Properties lesson you should be able t - The container's second column is 4 times larger than the first column - The container element has a gap of 4px - The header element has two columns -- The header element contains another grid that has four columns - The `ul` inside the menu element contains another grid - The `ul` inside the nav element contains another grid - The sidebar element has a gap of 50px From 6c67d1948cc8dbb5a9953123f35fddcb9d2cd6ad Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 20 Feb 2022 13:04:57 -0500 Subject: [PATCH 49/53] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 38 ++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4597d8a..3a7b485 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,20 +1,30 @@ - + - -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this PR follows the `where the change occurs: brief description of change` format, e.g. `Intro to HTML and CSS lesson: Fix link text` +Complete the following REQUIRED checkboxes: + +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this PR follows the `location of change: brief description of change` format, e.g. `01-flex-center: Update self check` - -- [ ] If updates were made to any solution code, I have ensured that the Desired Outcome image is accurate -- [ ] If one exists, I have linked a related open issue to this PR in Step 2 below -- [ ] If changes were requested, I have made them and re-requested a review from the maintainer (top of the right sidebar) +Complete the following checkbox ONLY IF it is applicable to your PR. You can complete it later if it is not currently applicable: +- [ ] I have ensured that the TOP solution files match the Desired Outcome image -**1. Description of the Changes** - +
+**1. Because:** + +Otherwise, provide a clear and concise reason for your pull request, e.g. what problem it solves or what benefit it provides. If this PR is related to, but does not close, another issue or PR, you can also link it as above without the 'Closes' keyword, e.g. "Related to #2013". + --> Closes #XXXXX + + +**2. This PR:** + + + +**3. Additional Information:** + + From bf7840c74cbf27ad0628ceeec4eb02fb8906d206 Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 20 Feb 2022 13:10:08 -0500 Subject: [PATCH 50/53] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 56 ++++++++++++++++++---------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e2b4e57..807fd83 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,38 +1,54 @@ --- name: Bug Report -about: Create a report to help us improve -title: '' -labels: 'Status: Needs Review, Type: Bug' -assignees: '' - +about: Create a report to help us improve something that is not working correctly +title: "Bug - :" +labels: "Status: Needs Review, Type: Bug" +assignees: "" --- + - -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue follows the `where the change occurs: brief description of bug` format, e.g. `React section: Knowledge Checks don't link to resource` +Complete the following REQUIRED checkboxes: +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue follows the `Bug - location of bug: brief description of bug` format, e.g. `Bug - Grid exercises: CSS not properly linked to HTML files` - -- [ ] I would like to be assigned this issue to work on it +The following checkbox is OPTIONAL: + +- [ ] I would like to be assigned this issue to work on it -**1. Description of the Bug** +
+ +**1. Description of the Bug:** -**2. How To Reproduce** - +**2. How To Reproduce:** + -**3. Expected Behavior** - +**3. Expected Behavior:** + **4. Desktop/Device:** - - Device: - - OS: - - Browser: - - Version: + +- Device: +- OS: +- Browser: +- Version: -**5. Additional Information** +**5. Additional Information:** From 0b5ff34b7cf98d67149f5d73d7e688e17b0b9f0a Mon Sep 17 00:00:00 2001 From: Eric Olkowski <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 20 Feb 2022 13:11:43 -0500 Subject: [PATCH 51/53] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 42 +++++++++++++++-------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 3dd36af..3e1c93c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,24 +1,38 @@ --- name: Feature Request -about: Suggest a new feature or enhancement for this project -title: '' -labels: 'Status: Needs Review' -assignees: '' - +about: Suggest a new feature or enhancement for this project +title: "" +labels: "Status: Needs Review" +assignees: "" --- + - -- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) -- [ ] The title of this issue follows the `where the change occurs: brief description of request` format, e.g. `Global SCSS file: Buttons should have XYZ` +Complete the following REQUIRED checkboxes: +- [ ] I have thoroughly read and understand [The Odin Project Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) +- [ ] The title of this issue follows the `location for request: brief description of request` format, e.g. `Foundations exercises: Add exercise for XYZ` - -- [ ] I would like to be assigned this issue to work on it +The following checkbox is OPTIONAL: + +- [ ] I would like to be assigned this issue to work on it -**1. Description of the Feature Request** - +
+ +**1. Description of the Feature Request:** + -**2. Additional Information** - +**2. Acceptance Criteria:** + + + +**3. Additional Information:** + From 62d09b3adfa357258450ea511cec2627500b72ec Mon Sep 17 00:00:00 2001 From: Satika Jayawardena <68363306+satikaj@users.noreply.github.com> Date: Wed, 23 Feb 2022 23:04:41 +0800 Subject: [PATCH 52/53] Fix typo in 04-flex solution: extra semicolon --- flex/04-flex-information/solution/solution.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flex/04-flex-information/solution/solution.css b/flex/04-flex-information/solution/solution.css index 95a7ef8..2e53bb8 100644 --- a/flex/04-flex-information/solution/solution.css +++ b/flex/04-flex-information/solution/solution.css @@ -20,7 +20,7 @@ img { right: 0; height: 52px; display: flex; - align-items: center;; + align-items: center; justify-content: center; background: #eee; } From b0eadd26feb31ccde678079cbf33f50ae52bc40c Mon Sep 17 00:00:00 2001 From: Hari Mohan Date: Fri, 4 Mar 2022 09:23:56 +0530 Subject: [PATCH 53/53] Add gitignore to ignore MacOS autogenerated .DS_Store files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..89d5c43 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Ignore MacOS autogenerated +.DS_Store