diff --git a/.eslintrc-base.json b/.eslintrc-base.json index 6941a96a20..14a1831841 100644 --- a/.eslintrc-base.json +++ b/.eslintrc-base.json @@ -131,7 +131,6 @@ "operator-assignment": 0, "padded-blocks": 0, "prefer-object-spread/prefer-object-spread": 2, - "prettier/prettier": "error", "quote-props": [2, "as-needed"], "quotes": [2, "single", "avoid-escape"], "radix": 2, diff --git a/.eslintrc.json b/.eslintrc.json index 0c5eecd2e9..72d8a12917 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -10,15 +10,14 @@ "root": true, "extends": [ "./.eslintrc-base.json", - "plugin:prettier/recommended", "plugin:import/typescript", - "plugin:jsx-a11y/recommended" + "plugin:jsx-a11y/recommended", + "prettier" ], "plugins": [ "react", "import", "prefer-object-spread", - "prettier", "react-hooks", "jsx-a11y", "jest-dom", @@ -58,7 +57,10 @@ "plugins": ["@typescript-eslint"] }, { - "files": ["./tools/ui-components/**/*.test.[jt]s?(x)", "./client/**/*.test.[jt]s?(x)"], + "files": [ + "./tools/ui-components/**/*.test.[jt]s?(x)", + "./client/**/*.test.[jt]s?(x)" + ], "extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"] }, { diff --git a/.github/labeler.yml b/.github/labeler.yml index 7f1369a302..bb075a63d7 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,22 +1,22 @@ -"scope: docs": +'scope: docs': - docs/**/* -"scope: curriculum": +'scope: curriculum': - curriculum/challenges/**/* -"platform: client": +'platform: client': - client/**/* -"platform: api": +'platform: api': - api-server/**/* -"scope: tools/scripts": +'scope: tools/scripts': - cypress/**/* - tools/**/* - .github/**/* - utils/**/* -"scope: i18n": +'scope: i18n': - any: ['curriculum/challenges/**/*', '!curriculum/challenges/english/**/*'] - docs/i18n/**/* - client/i18n/**/* diff --git a/.github/workflows/autoclose.yml b/.github/workflows/autoclose.yml index c31ccf06d3..ba9ba5343c 100644 --- a/.github/workflows/autoclose.yml +++ b/.github/workflows/autoclose.yml @@ -2,9 +2,9 @@ name: Autoclose on: pull_request_target: branches: - - "main" + - 'main' paths: - - ".gitignore" + - '.gitignore' jobs: autoclose: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 40324083cf..48f8c5faac 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,4 +1,4 @@ -name: "CodeQL" +name: 'CodeQL' on: push: @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - language: ["javascript"] + language: ['javascript'] steps: - name: Checkout repository uses: actions/checkout@v2 diff --git a/.github/workflows/crowdin-i18n-client-ui-upload.yml b/.github/workflows/crowdin-i18n-client-ui-upload.yml index 42e14f0690..e5f8197220 100644 --- a/.github/workflows/crowdin-i18n-client-ui-upload.yml +++ b/.github/workflows/crowdin-i18n-client-ui-upload.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: schedule: # runs everyday at 11:15 AM UTC - - cron: "15 11 * * *" + - cron: '15 11 * * *' jobs: i18n-upload-client-ui-files: diff --git a/.github/workflows/crowdin-i18n-curriculum-download.yml b/.github/workflows/crowdin-i18n-curriculum-download.yml index 0fee93211a..152f02e8cd 100644 --- a/.github/workflows/crowdin-i18n-curriculum-download.yml +++ b/.github/workflows/crowdin-i18n-curriculum-download.yml @@ -56,7 +56,6 @@ jobs: CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CURRICULUM }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }} - # Convert Simplified Chinese to Traditional # - name: Generate Translations uses: ./tools/crowdin/actions/convert-chinese diff --git a/.github/workflows/crowdin-i18n-curriculum-upload.yml b/.github/workflows/crowdin-i18n-curriculum-upload.yml index cb1b165e99..cc6ca2bd37 100644 --- a/.github/workflows/crowdin-i18n-curriculum-upload.yml +++ b/.github/workflows/crowdin-i18n-curriculum-upload.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: schedule: # runs everyday at 11:30 AM UTC - - cron: "30 11 * * *" + - cron: '30 11 * * *' jobs: i18n-upload-curriculum-files: diff --git a/.github/workflows/crowdin-i18n-docs-upload.yml b/.github/workflows/crowdin-i18n-docs-upload.yml index 41b06a921b..df4db8ee48 100644 --- a/.github/workflows/crowdin-i18n-docs-upload.yml +++ b/.github/workflows/crowdin-i18n-docs-upload.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: schedule: # runs everyday at 11:00 AM UTC - - cron: "0 11 * * *" + - cron: '0 11 * * *' jobs: i18n-upload-docs-files: diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 710c109c39..09dda684ec 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -53,7 +53,6 @@ jobs: name: webpack-stats path: client/public/stats.json - cypress-run: name: Test runs-on: ubuntu-18.04 diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 0d40ed3344..dc7127ab0d 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -1,12 +1,12 @@ -name: "Pull Request Labeler" +name: 'Pull Request Labeler' on: -- pull_request_target + - pull_request_target jobs: triage: runs-on: ubuntu-latest steps: - - uses: actions/labeler@v3 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" - sync-labels: true \ No newline at end of file + - uses: actions/labeler@v3 + with: + repo-token: '${{ secrets.GITHUB_TOKEN }}' + sync-labels: true diff --git a/.lintstagedrc.js b/.lintstagedrc.js new file mode 100644 index 0000000000..2e58e1bb42 --- /dev/null +++ b/.lintstagedrc.js @@ -0,0 +1,28 @@ +const { ESLint } = require('eslint'); + +const cli = new ESLint(); + +// if a lot of files are changed, it's faster to run prettier/eslint on the +// whole project than to run them on each file separately +module.exports = { + '*.(js|ts|tsx)': files => + files.length > 10 + ? ['eslint --max-warnings=0 --cache --fix .', 'prettier --write .'] + : [ + 'eslint --max-warnings=0 --cache --fix ' + + files.filter(file => !cli.isPathIgnored(file)).join(' '), + ...files.map(filename => `prettier --write '${filename}'`) + ], + '*.!(js|ts|tsx)': files => + files.length > 10 + ? 'prettier --write .' + : files.map( + filename => `prettier --write --ignore-unknown '${filename}'` + ), + './curriculum/challenges/**/*.md': files => + files.length > 10 + ? 'npm run lint:challenges' + : files.map( + filename => `node ./tools/scripts/lint/index.js '${filename}'` + ) +}; diff --git a/.prettierignore b/.prettierignore index 6b3dcbab3d..cf0a49d9e6 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,9 @@ **/.cache **/public client/static -fixtures +**/*fixtures* curriculum/challenges/_meta/*/* curriculum/challenges/**/* +config/**/*.json +client/i18n/**/*.json +docs/i18n diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c97358c3b7..c68a65576c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,2 +1 @@ - > Our Code of Conduct is available here: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7c71fad3ef..3319d21105 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,3 @@ ## Our contributing docs are available here: . -Looking to edit these docs? Read [this document](https://contribute.freecodecamp.org/#/how-to-work-on-the-docs-theme) first. \ No newline at end of file +Looking to edit these docs? Read [this document](https://contribute.freecodecamp.org/#/how-to-work-on-the-docs-theme) first. diff --git a/HoF.md b/HoF.md index 339310f414..58fd53e66a 100644 --- a/HoF.md +++ b/HoF.md @@ -4,4 +4,4 @@ We appreciate any responsible disclosure of vulnerabilities that might impact th - Mehul Mohan from [codedamn](https://codedamn.com) ([@mehulmpt](https://twitter.com/mehulmpt)) - [Vulnerability Fix](https://github.com/freeCodeCamp/freeCodeCamp/blob/bb5a9e815313f1f7c91338e171bfe5acb8f3e346/client/src/components/Flash/index.js) - Peter Samir https://www.linkedin.com/in/peter-samir/ -> ### Thank you for your contributions :pray: + > ### Thank you for your contributions :pray: diff --git a/LICENSE.md b/LICENSE.md index c17525b831..61fe6058f5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -6,14 +6,14 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this +- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, +- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name of the copyright holder nor the names of its +- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/api-server/.babelrc b/api-server/.babelrc index f9bb3204d5..112d96933e 100644 --- a/api-server/.babelrc +++ b/api-server/.babelrc @@ -2,9 +2,11 @@ "presets": [ [ "@babel/preset-env", - {"targets": { - "node": 10 - }} + { + "targets": { + "node": 10 + } + } ] ], "plugins": [ diff --git a/api-server/src/common/index.less b/api-server/src/common/index.less index 2688647f8f..7b49f5ac06 100644 --- a/api-server/src/common/index.less +++ b/api-server/src/common/index.less @@ -1 +1,3 @@ -&{ @import "./app/index.less"; } +& { + @import './app/index.less'; +} diff --git a/api-server/src/common/models/user.json b/api-server/src/common/models/user.json index 80b1a66c26..137c679c72 100644 --- a/api-server/src/common/models/user.json +++ b/api-server/src/common/models/user.json @@ -276,9 +276,7 @@ "default": {} }, "donationEmails": { - "type": [ - "string" - ] + "type": ["string"] }, "isDonating": { "type": "boolean", diff --git a/client/package.json b/client/package.json index dddba236b9..df3c450c9b 100644 --- a/client/package.json +++ b/client/package.json @@ -25,10 +25,6 @@ "clean": "gatsby clean", "predevelop": "node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env development", "develop": "node --max_old_space_size=4000 node_modules/gatsby-cli develop --inspect=9230", - "format": "npm run format:gatsby && npm run format:src && npm run format:utils", - "format:gatsby": "prettier-eslint --write --trailing-comma none --single-quote './gatsby-*.js'", - "format:src": "prettier-eslint --write --trailing-comma none --single-quote './src/**/*.js'", - "format:utils": "prettier-eslint --write --trailing-comma none --single-quote './utils/**/*.js'", "lint": "node ./i18n/schema-validation.js", "serve": "gatsby serve -p 8000", "serve-ci": "serve -l 8000 -c ../serve.json public", diff --git a/client/src/pages/learn/back-end-development-and-apis/back-end-development-and-apis-projects/index.md b/client/src/pages/learn/back-end-development-and-apis/back-end-development-and-apis-projects/index.md index de7e4a01fa..53e0430cb8 100644 --- a/client/src/pages/learn/back-end-development-and-apis/back-end-development-and-apis-projects/index.md +++ b/client/src/pages/learn/back-end-development-and-apis/back-end-development-and-apis-projects/index.md @@ -3,15 +3,17 @@ title: Introduction to the Back End Development and APIs Projects block: Back End Development and APIs Projects superBlock: Back End Development and APIs --- + ## Introduction to the Back End Development and APIs Projects Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far including npm packages, basic Node, basic Express, MongoDB, and Mongoose. In this section you get the chance to: - * Build a Timestamp Microservice - * Build a Request Header Parser Microservice - * Build a URL Shortener Microservice - * Build a Exercise Tracker - * Build a File Metadata Microservice + +- Build a Timestamp Microservice +- Build a Request Header Parser Microservice +- Build a URL Shortener Microservice +- Build a Exercise Tracker +- Build a File Metadata Microservice By the end of this, you would have 5 microservices under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/back-end-development-and-apis/index.md b/client/src/pages/learn/back-end-development-and-apis/index.md index f813c08908..7e54e1ef19 100644 --- a/client/src/pages/learn/back-end-development-and-apis/index.md +++ b/client/src/pages/learn/back-end-development-and-apis/index.md @@ -2,6 +2,7 @@ title: Back End Development and APIs superBlock: back-end-development-and-apis --- + ## Introduction to Back End Development and APIs This is a stub introduction for Back End Development and APIs @@ -19,7 +20,8 @@ A monolith typically has the three key components of any application - the UI, B To overcome some of the issues, one of the suggestions that was made early on was to functionally decompose an application, referred to as the Scale Cube in the book [The Art of Scalability](www.theartofscalability.com). This eventually led to the microservices pattern that we see now. A microservice takes a single bit of functionality and bundles all the layers of technology into it. This means that each microservice has its own UI, business logic and data store. To deliver a larger piece of functionality, microservices talk to one another through common communication methods like APIs or messages. ## Key benefits -1. Microservices can be developed and deployed independently of one another, thereby reducing the risk of one wrong piece of code bringing down an entire application + +1. Microservices can be developed and deployed independently of one another, thereby reducing the risk of one wrong piece of code bringing down an entire application 2. Easier to isolate and find where issues lie, while debugging 3. Fits the modern DevOps paradigm, as the architecture is well placed for Continuous Integration/Continuous Deployment 4. Enables developers to choose a language and data store technology best suited for that bit of functionality @@ -28,6 +30,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa 7. Easy to change, as it encapsulates a single piece of business functionality ## Key drawbacks + 1. Additional operational overheads to monitor and manage multiple services 2. Manage communications between services 3. Additional effort to build fault tolerance @@ -35,6 +38,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa 5. Distributed transaction model comes with its own share of issues regarding data consistency (eventual consistency) ### Sources + 1. Microservices, a definition - by Martin Fowler and James Lewis : https://www.martinfowler.com/articles/microservices.html 2. Introduction to Microservices - NGINX blog : https://www.nginx.com/blog/introduction-to-microservices/ 3. What are microservices - Smartbear : https://smartbear.com/learn/api-design/what-are-microservices/ diff --git a/client/src/pages/learn/coding-interview-prep/algorithms/index.md b/client/src/pages/learn/coding-interview-prep/algorithms/index.md index 5a530610b5..a079672ae5 100644 --- a/client/src/pages/learn/coding-interview-prep/algorithms/index.md +++ b/client/src/pages/learn/coding-interview-prep/algorithms/index.md @@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Algorithms block: Algorithms superBlock: Coding Interview Prep --- + ## Introduction to the Coding Interview Prep Algorithms These challenges are meant to teach and challenge you with common algorithms that you will encounter in real life. These challenges will be a great learning experience to help improve your programming and logical skills. diff --git a/client/src/pages/learn/coding-interview-prep/data-structures/index.md b/client/src/pages/learn/coding-interview-prep/data-structures/index.md index ce9ce3e033..dc8d062d70 100644 --- a/client/src/pages/learn/coding-interview-prep/data-structures/index.md +++ b/client/src/pages/learn/coding-interview-prep/data-structures/index.md @@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Data Structure Questions block: Data Structures superBlock: Coding Interview Prep --- + ## Introduction to the Coding Interview Data Structure Questions -These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays. +These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays. diff --git a/client/src/pages/learn/coding-interview-prep/project-euler/index.md b/client/src/pages/learn/coding-interview-prep/project-euler/index.md index af4b4cde09..316ca54768 100644 --- a/client/src/pages/learn/coding-interview-prep/project-euler/index.md +++ b/client/src/pages/learn/coding-interview-prep/project-euler/index.md @@ -3,12 +3,13 @@ title: Introduction to the Project Euler Problems block: Project Euler superBlock: Coding Interview Prep --- + ## Introduction to the Project Euler Problems [Project Euler](https://projecteuler.net/) (pronounced Oiler) is a series of challenging mathematical/computer programming problems meant to delve into unfamiliar areas and learn new concepts in a fun and recreational manner. ->The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem. +> The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem. > > Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems. > ->_from the Project Euler home page_ +> _from the Project Euler home page_ diff --git a/client/src/pages/learn/coding-interview-prep/rosetta-code/index.md b/client/src/pages/learn/coding-interview-prep/rosetta-code/index.md index 2bff383e57..107e28be91 100644 --- a/client/src/pages/learn/coding-interview-prep/rosetta-code/index.md +++ b/client/src/pages/learn/coding-interview-prep/rosetta-code/index.md @@ -3,7 +3,9 @@ title: Introduction to the Rosetta Code Problems block: Rosetta Code superBlock: Coding Interview Prep --- + ## Introduction to the Rosetta Code Problems [The Rosetta Code](https://rosettacode.org) is a list of programming challenges which will help you build your programming skills. ->"The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another." - _Homepage of the Rosetta Code site_ + +> "The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another." - _Homepage of the Rosetta Code site_ diff --git a/client/src/pages/learn/coding-interview-prep/take-home-projects/index.md b/client/src/pages/learn/coding-interview-prep/take-home-projects/index.md index 784e1cbe50..1363a7ff12 100644 --- a/client/src/pages/learn/coding-interview-prep/take-home-projects/index.md +++ b/client/src/pages/learn/coding-interview-prep/take-home-projects/index.md @@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Take Home Projects block: Take Home Projects superBlock: Coding Interview Prep --- + ## Introduction to the Coding Interview Take Home Projects Programming interviews have always been stressful. One of the solutions is giving the applicant a take home project to be completed outside of the interview. These types of interviews usually require a lot of work, but they're a great way for employers to see how you might perform on the job. @@ -10,9 +11,10 @@ Programming interviews have always been stressful. One of the solutions is givin The interview after the project submission could be a discussion about the applicant’s design decisions, scalability, and what the applicant might have done differently. This approach is more effective when the applicant doesn’t have a lot of publicly available past projects. In this section you get the chance to work on many Take Home Projects like: -* Show Local Weather using Weather API and Geolocation -* Build a Wikipedia Viewer using Wikipedia's API -* Build a Pinterest Clone using Masonry.js library -and many more! + +- Show Local Weather using Weather API and Geolocation +- Build a Wikipedia Viewer using Wikipedia's API +- Build a Pinterest Clone using Masonry.js library + and many more! By the end of this section, you will have plenty of Take Home Projects under your belt. This will boost your confidence and prepare you for Take Home Project Interviews. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck. diff --git a/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-course/index.md b/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-course/index.md index 5c46647224..d077d7c691 100644 --- a/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-course/index.md +++ b/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-course/index.md @@ -3,6 +3,7 @@ title: Introduction to the Data Analysis with Python Course Lectures block: Data Analysis with Python Course superBlock: Data Analysis with Python --- + ## Introduction to the Data Analysis with Python Course Challenges Learn Data Analysis with Python in this comprehensive tutorial. Data Analysis has been around for a long time, but up until a few years ago, it was practiced using closed, expensive and limited tools like Excel or Tableau. Python, SQL and other open libraries have changed Data Analysis forever. diff --git a/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-projects/index.md b/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-projects/index.md index 62105bff7a..12a9c4d48a 100644 --- a/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-projects/index.md +++ b/client/src/pages/learn/data-analysis-with-python/data-analysis-with-python-projects/index.md @@ -3,19 +3,22 @@ title: Introduction to the Data Analysis with Python Projects block: Data Analysis with Python Projects superBlock: Data Analysis with Python --- + ## Introduction to the Data Analysis with Python Projects There are many ways to analyze data with Python! By completing these projects, you will demonstrate that you have a good foundational knowledge of data analysis with Python. We are working to finish up the interactive Data Analysis instructional content. For now, here are some videos from freeCodeCamp that will help with the projects. You may also have to use other resources (just like you would have to do when learning new technologies in a job). - * [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours) - * [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours) + +- [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours) +- [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours) In this section you will develop the following projects: - * Mean-Variance-Standard Deviation Calculator - * Demographic Data Analyzer - * Medical Data Visualizer - * Page View Time Series Visualizer - * Sea Level Predictor + +- Mean-Variance-Standard Deviation Calculator +- Demographic Data Analyzer +- Medical Data Visualizer +- Page View Time Series Visualizer +- Sea Level Predictor Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/data-analysis-with-python/index.md b/client/src/pages/learn/data-analysis-with-python/index.md index 4b052c1f8f..82c1fffb2d 100644 --- a/client/src/pages/learn/data-analysis-with-python/index.md +++ b/client/src/pages/learn/data-analysis-with-python/index.md @@ -2,6 +2,7 @@ title: Data Analysis with Python superBlock: data-analysis-with-python --- + ## Introduction to Data Analysis with Python Learn the basics of data analysis with Python. diff --git a/client/src/pages/learn/data-analysis-with-python/numpy/index.md b/client/src/pages/learn/data-analysis-with-python/numpy/index.md index 15db163713..9b2740400d 100644 --- a/client/src/pages/learn/data-analysis-with-python/numpy/index.md +++ b/client/src/pages/learn/data-analysis-with-python/numpy/index.md @@ -3,6 +3,7 @@ title: Introduction to the Numpy Lectures block: Numpy superBlock: Data Analysis with Python --- + ## Introduction to the Numpy Challenges Learn the basics of the NumPy library with the following lectures created by Keith Galli. They provide background information on how NumPy works and how it compares to Python's Built-in lists. They go through how to write code with NumPy, creating arrays, indexing, math, statistics, reshaping, and more! diff --git a/client/src/pages/learn/data-visualization/d3-dashboard/index.md b/client/src/pages/learn/data-visualization/d3-dashboard/index.md index ae35addace..0fd5301420 100644 --- a/client/src/pages/learn/data-visualization/d3-dashboard/index.md +++ b/client/src/pages/learn/data-visualization/d3-dashboard/index.md @@ -3,6 +3,7 @@ title: Introduction to the D3 Dashboard block: D3 Dashboard superBlock: Data Visualization --- + ## Introduction to the D3 Dashboard D3 Dashboard Placeholder Introduction. diff --git a/client/src/pages/learn/data-visualization/data-visualization-projects/index.md b/client/src/pages/learn/data-visualization/data-visualization-projects/index.md index 2a03ba235b..a0d0694f50 100644 --- a/client/src/pages/learn/data-visualization/data-visualization-projects/index.md +++ b/client/src/pages/learn/data-visualization/data-visualization-projects/index.md @@ -3,6 +3,7 @@ title: Introduction to the Data Visualization Projects block: Data Visualization Projects superBlock: Data Visualization --- + ## Introduction to the Data Visualization Projects These challenges let you test your data visualization skills and how to transfer and use data using AJAX technologies. diff --git a/client/src/pages/learn/data-visualization/data-visualization-with-d3/index.md b/client/src/pages/learn/data-visualization/data-visualization-with-d3/index.md index 4173191b76..d9ff14f965 100644 --- a/client/src/pages/learn/data-visualization/data-visualization-with-d3/index.md +++ b/client/src/pages/learn/data-visualization/data-visualization-with-d3/index.md @@ -3,7 +3,7 @@ title: Introduction to the Data Visualization with D3 Challenges block: Data Visualization with D3 superBlock: Data Visualization --- + ## Introduction to the Data Visualization with D3 Challenges D3.js, or D3, stands for Data Driven Documents. D3 is a JavaScript library to create dynamic and interactive data visualizations in the browser. It's built to work with common web standards, namely HTML, CSS, and Scalable Vector Graphics (SVG).

D3 takes input data and maps it into a visual representation of that data. It supports many different data formats. D3 lets you bind (or attach) the data to the Document Object Model (DOM). You use HTML or SVG elements with D3's built-in methods to transform the data into a visualization.

D3 gives you a lot of control over the presentation of data. This section covers the basic functionality and how to create visualizations with the D3 library. - diff --git a/client/src/pages/learn/data-visualization/index.md b/client/src/pages/learn/data-visualization/index.md index 50714aa332..648d8171fd 100644 --- a/client/src/pages/learn/data-visualization/index.md +++ b/client/src/pages/learn/data-visualization/index.md @@ -2,6 +2,7 @@ title: Data Visualization superBlock: data-visualization --- + ## Introduction to Data Visualization This is a stub introduction for Data Visualization diff --git a/client/src/pages/learn/data-visualization/json-apis-and-ajax/index.md b/client/src/pages/learn/data-visualization/json-apis-and-ajax/index.md index 35872b0494..63a2203c35 100644 --- a/client/src/pages/learn/data-visualization/json-apis-and-ajax/index.md +++ b/client/src/pages/learn/data-visualization/json-apis-and-ajax/index.md @@ -3,7 +3,7 @@ title: Introduction to the JSON APIs and AJAX Challenges block: JSON APIs and Ajax superBlock: Data Visualization --- + ## Introduction to the JSON APIs and AJAX Challenges Similar to how User Interfaces help people use programs, Application Programming Interfaces (APIs) help programs interact with other programs. APIs are tools that computers use to communicate with one another, in part to send and receive data. You can use API functionality in your page once you understand how to make requests and process data from it. Programmers often use AJAX technologies when working with APIs.

The term AJAX originated as an acronym for Asynchronous JavaScript And XML. It refers to a group of technologies that make asynchronous requests to a server to transfer data, then load any returned data into the page. An asynchronous process has a couple key properties. The browser does not stop loading a page to wait for the server's response. Also, the browser inserts updated data into part of the page without having to refresh the entire page.

User experience benefits from asynchronous processes in several ways. Pages load faster since the browser isn't waiting for the server to respond in the middle of a page render. Requests and transfers happen in the background, without interrupting what the user is doing. When the browser receives new data, only the necessary area of the page refreshes. These qualities especially enhance the user experience for single page applications.

The data transferred between the browser and server is often in a format called JavaScript Object Notation (JSON). JSON resembles JavaScript object literal syntax, except that it's transferred as a string. Once received, it can be converted into an object and used in a script.

This section covers how to transfer and use data using AJAX technologies with a freeCodeCamp API. - diff --git a/client/src/pages/learn/front-end-development-libraries/front-end-development-libraries-projects/index.md b/client/src/pages/learn/front-end-development-libraries/front-end-development-libraries-projects/index.md index 226bfa67d9..62e76fd321 100644 --- a/client/src/pages/learn/front-end-development-libraries/front-end-development-libraries-projects/index.md +++ b/client/src/pages/learn/front-end-development-libraries/front-end-development-libraries-projects/index.md @@ -3,14 +3,16 @@ title: Introduction to the Front End Development Libraries Projects block: Front End Development Libraries Projects superBlock: Front End Development Libraries --- + ## Introduction to the Front End Development Libraries Projects It's now time to test out the frontend skills learned. This will help to bolster your skills, so don't hesitate to showcase your frontend skills in these projects. In this section you will complete the following projects with Bootstrap, jQuery, Sass, React and Redux: -* A Random Quote Machine -* A Markdown Previewer -* A Drum Machine -* A JavaScript Calculator -* A 25 + 5 Clock + +- A Random Quote Machine +- A Markdown Previewer +- A Drum Machine +- A JavaScript Calculator +- A 25 + 5 Clock Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/information-security/index.md b/client/src/pages/learn/information-security/index.md index 1fb20bec58..bea921f99e 100644 --- a/client/src/pages/learn/information-security/index.md +++ b/client/src/pages/learn/information-security/index.md @@ -2,6 +2,7 @@ title: Information Security superBlock: information-security --- + ## Introduction to Information Security This is a stub introduction for Information Security diff --git a/client/src/pages/learn/information-security/information-security-projects/index.md b/client/src/pages/learn/information-security/information-security-projects/index.md index 9e16859148..ad4ac60435 100644 --- a/client/src/pages/learn/information-security/information-security-projects/index.md +++ b/client/src/pages/learn/information-security/information-security-projects/index.md @@ -3,15 +3,17 @@ title: Introduction to the Information Security Projects block: Information Security Projects superBlock: Information Security --- + ## Introduction to the Information Security Projects Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Information Security sections. In this section you get the chance to: -* Build a Stock Price Checker -* Build an Anonymous Message Board -* Port Scanner -* Packet Capturer -* Secure Real Time Multiplayer Game + +- Build a Stock Price Checker +- Build an Anonymous Message Board +- Port Scanner +- Packet Capturer +- Secure Real Time Multiplayer Game When you are done, you will have plenty of Information Security projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck. diff --git a/client/src/pages/learn/information-security/information-security-with-helmetjs/index.md b/client/src/pages/learn/information-security/information-security-with-helmetjs/index.md index 8306260bb4..f1ff1f9963 100644 --- a/client/src/pages/learn/information-security/information-security-with-helmetjs/index.md +++ b/client/src/pages/learn/information-security/information-security-with-helmetjs/index.md @@ -3,6 +3,7 @@ title: Introduction to Information Security with HelmetJS Challenges block: Information Security with HelmetJS superBlock: Information Security --- + ## Introduction to Information Security with HelmetJS Challenges HelmetJS is a type of middleware for Express-based applications that automatically sets HTTP headers to prevent sensitive information from unintentionally being passed between the server and client. While HelmetJS does not account for all situations, it does include support for common ones like Content Security Policy, XSS Filtering, and HTTP Strict Transport Security, among others. HelmetJS can be installed on an Express project from npm, after which each layer of protection can be configured to best fit the project. diff --git a/client/src/pages/learn/information-security/python-for-penetration-testing/index.md b/client/src/pages/learn/information-security/python-for-penetration-testing/index.md index f785d62095..7ad085f632 100644 --- a/client/src/pages/learn/information-security/python-for-penetration-testing/index.md +++ b/client/src/pages/learn/information-security/python-for-penetration-testing/index.md @@ -3,6 +3,7 @@ title: Introduction to the Python for Penetration Testing Lectures block: Python for Penetration Testing superBlock: Information Security --- + ## Introduction to the Python for Penetration Testing Challenges Python for Penetration Testing Placeholder Introduction. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/index.md index 09805f7cf4..138e983699 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/index.md @@ -3,6 +3,7 @@ title: Introduction to Basic Algorithm Scripting block: Basic Algorithm Scripting superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to Basic Algorithm Scripting A computer algorithm is a sequence of steps that is followed to achieve a particular outcome. To write an algorithm, you must first understand a problem, and then solve it with coding. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-data-structures/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-data-structures/index.md index debe97c268..cc63f20ecf 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-data-structures/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-data-structures/index.md @@ -3,6 +3,7 @@ title: Introduction to the Basic Data Structure Challenges block: Basic Data Structures superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Basic Data Structure Challenges -Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose. +Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript-rpg-game/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript-rpg-game/index.md index 06f2827825..39bea47bba 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript-rpg-game/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript-rpg-game/index.md @@ -4,6 +4,7 @@ block: Basic JavaScript RPG Game superBlock: JavaScript Algorithms and Data Structures isBeta: true --- + ## Introduction to the Basic JavaScript RPG Game This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript/index.md index e7a10f50b5..0cc93abfcf 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/basic-javascript/index.md @@ -3,6 +3,7 @@ title: Introduction to JavaScript block: Basic JavaScript superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to JavaScript JavaScript is a high-level programming language that all modern web browsers support. It is also one of the core technologies of the web, along with HTML and CSS that you may have learned previously. This section will cover basic JavaScript programming concepts, which range from variables and arithmetic to objects and loops. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/debugging/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/debugging/index.md index 679299853e..f97563e5c0 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/debugging/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/debugging/index.md @@ -3,10 +3,12 @@ title: Introduction to the Debugging Challenges block: Debugging superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Debugging Challenges Debugging is a valuable and (unfortunately) necessary tool for programmers. It follows the testing phase of checking if your code works as intended, and discovering it does not. Debugging is the process of finding exactly what isn't working and fixing it. -After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms: +After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms: + 1. syntax errors that prevent a program from running 2. runtime errors when code fails to execute or has unexpected behavior 3. semantic (or logical) errors when code doesn't do what it's meant to. @@ -15,7 +17,7 @@ Modern code editors (and experience) can help identify syntax errors. Semantic a Example of a syntax error - often detected by the code editor: ```js -funtcion willNotWork( +funtcion willNotWork( console.log("Yuck"); } // "function" keyword is misspelled and there's a missing parenthesis @@ -25,8 +27,8 @@ Here's an example of a runtime error - often detected while the program executes ```js function loopy() { - while(true) { - console.log("Hello, world!"); + while (true) { + console.log('Hello, world!'); } } // Calling loopy starts an infinite loop, which may crash your browser @@ -43,4 +45,3 @@ let myRectArea = calcAreaOfRect(2, 3); ``` Debugging is frustrating, but it helps to develop (and follow) a step-by-step approach to review your code. This means checking the intermediate values and types of variables to see if they are what they should be. You can start with a simple process of elimination.

For example, if function A works and returns what it's supposed to, then function B may have the issue. Or start checking values in a block of code from the middle to try to cut the search space in half. A problem in one spot indicates a bug in the first half of the code. If not, it's likely in the second.

This section will cover a couple helpful tools to find bugs, and some of the common forms they take. Fortunately, debugging is a learnable skill that just requires a little patience and practice to master. - diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/es6/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/es6/index.md index abf9d34118..3b6643dc01 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/es6/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/es6/index.md @@ -3,6 +3,7 @@ title: Introduction to the ES6 Challenges block: ES6 superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the ES6 Challenges ECMAScript is a standardized version of JavaScript with the goal of unifying the language's specifications and features. As all major browsers and JavaScript-runtimes follow this specification, the term _ECMAScript_ is interchangeable with the term _JavaScript_. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/functional-programming/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/functional-programming/index.md index c6fdd805a2..45bc13e975 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/functional-programming/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/functional-programming/index.md @@ -3,6 +3,7 @@ title: Introduction to the Functional Programming Challenges block: Functional Programming superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Functional Programming Challenges Functional programming is an approach to software development based around the evaluation of functions. Like mathematics, functions in programming map input to output to produce a result. You can combine basic functions in many ways to build more and more complex programs. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/index.md index c7280c51c4..fb3e2f6a7b 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/index.md @@ -3,6 +3,7 @@ title: Introduction to the Intermediate Algorithm Scripting Challenges block: Intermediate Algorithm Scripting superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Intermediate Algorithm Scripting Challenges The following challenges are part of FCC's Intermediate Algorithm Scripting Challenges. These should prepare you to complete the final challenges for the JavaScript Algorithms And Data Structures Certification. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-javascript-calorie-counter/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-javascript-calorie-counter/index.md index a7652c5181..c363096772 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-javascript-calorie-counter/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/intermediate-javascript-calorie-counter/index.md @@ -4,6 +4,7 @@ block: Intermediate JavaScript Calorie Counter superBlock: JavaScript Algorithms and Data Structures isBeta: true --- + ## Introduction to the Intermediate JavaScript Calorie Counter -This is a stub for the new project-based curriculum. \ No newline at end of file +This is a stub for the new project-based curriculum. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/index.md index c1bda54b3d..d3984cee34 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/index.md @@ -3,16 +3,18 @@ title: Introduction to the JavaScript Algorithms and Data Structures Projects block: JavaScript Algorithms and Data Structures Projects superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the JavaScript Algorithms and Data Structures Projects Time to put your new JavaScript skills to work! These challenges will be similar to the algorithm scripting challenges but more difficult. This will allow you to prove how much you have learned. In this section you will create the following small JavaScript programs: - * Palindrome Checker - * Roman Numeral Converter - * Caesars Cipher - * Telephone Number Validator - * Cash Register + +- Palindrome Checker +- Roman Numeral Converter +- Caesars Cipher +- Telephone Number Validator +- Cash Register Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/object-oriented-programming/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/object-oriented-programming/index.md index 9921e2a83a..6375681e42 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/object-oriented-programming/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/object-oriented-programming/index.md @@ -3,7 +3,7 @@ title: Introduction to the Object Oriented Programming Challenges block: Object Oriented Programming superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Object Oriented Programming Challenges At its core, software development solves a problem or achieves a result with computation. The software development process first defines a problem, then presents a solution. Object oriented programming is one of several major approaches to the software development process.

As its name implies, object oriented programming organizes code into object definitions. These are sometimes called classes, and they group together data with related behavior. The data is an object's attributes, and the behavior (or functions) are methods.

The object structure makes it flexible within a program. Objects can transfer information by calling and passing data to another object's methods. Also, new classes can receive, or inherit, all the features from a base or parent class. This helps to reduce repeated code.

Your choice of programming approach depends on a few factors. These include the type of problem, as well as how you want to structure your data and algorithms. This section covers object oriented programming principles in JavaScript. - diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/regular-expressions/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/regular-expressions/index.md index cea14b6b55..6bc99af92a 100644 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/regular-expressions/index.md +++ b/client/src/pages/learn/javascript-algorithms-and-data-structures/regular-expressions/index.md @@ -3,7 +3,7 @@ title: Introduction to the Regular Expression Challenges block: Regular Expressions superBlock: JavaScript Algorithms and Data Structures --- + ## Introduction to the Regular Expression Challenges Regular expressions are special strings that represent a search pattern. Also known as "regex" or "regexp", they help programmers match, search, and replace text. Regular expressions can appear cryptic because a few characters have special meaning. The goal is to combine the symbols and text into a pattern that matches what you want, but only what you want. This section will cover the characters, a few shortcuts, and the common uses for writing regular expressions. - diff --git a/client/src/pages/learn/machine-learning-with-python/how-neural-networks-work/index.md b/client/src/pages/learn/machine-learning-with-python/how-neural-networks-work/index.md index d027c3c1de..9342741ec9 100644 --- a/client/src/pages/learn/machine-learning-with-python/how-neural-networks-work/index.md +++ b/client/src/pages/learn/machine-learning-with-python/how-neural-networks-work/index.md @@ -3,6 +3,7 @@ title: Introduction to the How Neural Networks Work Lectures block: How Neural Networks Work superBlock: Machine Learning with Python --- + ## Introduction to the How Neural Networks Work Challenges Neural networks are at the core of what we are calling Artificial Intelligence today. They can seem impenetrable, and even mystical, if you are trying to understand them for the first time, but they don't have to. diff --git a/client/src/pages/learn/machine-learning-with-python/index.md b/client/src/pages/learn/machine-learning-with-python/index.md index 50d8599f5b..1796acaff8 100644 --- a/client/src/pages/learn/machine-learning-with-python/index.md +++ b/client/src/pages/learn/machine-learning-with-python/index.md @@ -2,6 +2,7 @@ title: Machine Learning with Python superBlock: machine-learning-with-python --- + ## Introduction to Machine Learning with Python Learn the basics of Machine Learning with Python. diff --git a/client/src/pages/learn/machine-learning-with-python/machine-learning-with-python-projects/index.md b/client/src/pages/learn/machine-learning-with-python/machine-learning-with-python-projects/index.md index 277d554138..c88132f2a9 100644 --- a/client/src/pages/learn/machine-learning-with-python/machine-learning-with-python-projects/index.md +++ b/client/src/pages/learn/machine-learning-with-python/machine-learning-with-python-projects/index.md @@ -3,6 +3,7 @@ title: Introduction to the Machine Learning Projects block: Machine Learning with Python Projects superBlock: Machine Learning with Python --- + ## Introduction to the Machine Learning Projects Machine learning has many practical applications. By completing these projects, you will demonstrate that you have a good foundational knowledge of machine learning. @@ -10,10 +11,11 @@ Machine learning has many practical applications. By completing these projects, We are still developing the interactive instructional content for the machine learning curriculum. For now, check out the videos in this [machine learning playlist on the freeCodeCamp YouTube channel](https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s). You may also have to use other resources (just like you would have to do when learning new technologies in a job). In this section you will develop the following projects: - * Rock Paper Scissors - * Cat and Dog Image Classifier - * Book Recommendation Engine using KNN - * Linear Regression Health Costs Calculator - * Neural Network SMS Text Classifier + +- Rock Paper Scissors +- Cat and Dog Image Classifier +- Book Recommendation Engine using KNN +- Linear Regression Health Costs Calculator +- Neural Network SMS Text Classifier Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/machine-learning-with-python/tensorflow/index.md b/client/src/pages/learn/machine-learning-with-python/tensorflow/index.md index 26f23fb7b2..de63e766d4 100644 --- a/client/src/pages/learn/machine-learning-with-python/tensorflow/index.md +++ b/client/src/pages/learn/machine-learning-with-python/tensorflow/index.md @@ -3,8 +3,9 @@ title: Introduction to the TensorFlow Lectures block: TensorFlow superBlock: Machine Learning with Python --- + ## Introduction to the TensorFlow Challenges TensorFlow is an open source framework developed by the Google Brain team aimed to make the powers of machine learning and neural networking easier to use. -The following lectures were created by Tim Ruscica, otherwise known as “Tech With Tim” from his educational programming YouTube channel. They will help you to understand TensorFlow and some of its capabilities. \ No newline at end of file +The following lectures were created by Tim Ruscica, otherwise known as “Tech With Tim” from his educational programming YouTube channel. They will help you to understand TensorFlow and some of its capabilities. diff --git a/client/src/pages/learn/quality-assurance/advanced-node-and-express/index.md b/client/src/pages/learn/quality-assurance/advanced-node-and-express/index.md index 8172fe242a..9c4688022f 100644 --- a/client/src/pages/learn/quality-assurance/advanced-node-and-express/index.md +++ b/client/src/pages/learn/quality-assurance/advanced-node-and-express/index.md @@ -3,10 +3,11 @@ title: Introduction to the Advanced Node and Express Challenges block: Advanced Node and Express superBlock: Quality Assurance --- + ## Introduction to Advanced Node and Express Challenges -*Authentication* is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept. +_Authentication_ is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept. -The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many *strategies*, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of *Pug* and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. +The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many _strategies_, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of _Pug_ and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. Start this project on Replit using [this link](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Replit, remember to save the link to your project somewhere safe. diff --git a/client/src/pages/learn/quality-assurance/index.md b/client/src/pages/learn/quality-assurance/index.md index cba43c3365..e25b21d7eb 100644 --- a/client/src/pages/learn/quality-assurance/index.md +++ b/client/src/pages/learn/quality-assurance/index.md @@ -2,6 +2,7 @@ title: Quality Assurance superBlock: quality-assurance --- + ## Introduction to Quality Assurance This is a stub introduction for Quality Assurance diff --git a/client/src/pages/learn/quality-assurance/quality-assurance-and-testing-with-chai/index.md b/client/src/pages/learn/quality-assurance/quality-assurance-and-testing-with-chai/index.md index a20e2396f6..40b3a81f11 100644 --- a/client/src/pages/learn/quality-assurance/quality-assurance-and-testing-with-chai/index.md +++ b/client/src/pages/learn/quality-assurance/quality-assurance-and-testing-with-chai/index.md @@ -3,6 +3,7 @@ title: Introduction to the Quality Assurance with Chai Challenges block: Quality Assurance and Testing with Chai superBlock: Quality Assurance --- + ## Introduction to Quality Assurance with Chai Challenges As your programs become more complex, you need to test them often to make sure any new code you add doesn't break the program's original functionality. Chai is a JavaScript testing library that helps you check that your program still behaves the way you expect it to after you make changes. Using Chai, you can write tests that describe your program's requirements and see if your program meets them. diff --git a/client/src/pages/learn/quality-assurance/quality-assurance-projects/index.md b/client/src/pages/learn/quality-assurance/quality-assurance-projects/index.md index b6ac030651..2ec38ac3c3 100644 --- a/client/src/pages/learn/quality-assurance/quality-assurance-projects/index.md +++ b/client/src/pages/learn/quality-assurance/quality-assurance-projects/index.md @@ -3,15 +3,17 @@ title: Introduction to the Quality Assurance Projects block: Quality Assurance Projects superBlock: Quality Assurance --- + ## Introduction to the Quality Assurance Projects Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Quality Assurance sections. In this section you get the chance to: -* Build a Metric-Imperial Converter -* Build an Issue Tracker -* Build a Personal Library -* Sudoku Solver -* American British Translator + +- Build a Metric-Imperial Converter +- Build an Issue Tracker +- Build a Personal Library +- Sudoku Solver +- American British Translator When you are done, you will have plenty of Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck. diff --git a/client/src/pages/learn/responsive-web-design/accessibility-quiz/index.md b/client/src/pages/learn/responsive-web-design/accessibility-quiz/index.md index ee42ea7396..7acdcf3830 100644 --- a/client/src/pages/learn/responsive-web-design/accessibility-quiz/index.md +++ b/client/src/pages/learn/responsive-web-design/accessibility-quiz/index.md @@ -4,6 +4,7 @@ block: accessibility-quiz superBlock: Responsive Web Design isBeta: true --- + ## Introduction to the Accessibility Quiz -This is a test for the new project-based curriculum. \ No newline at end of file +This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/responsive-web-design/applied-accessibility/index.md b/client/src/pages/learn/responsive-web-design/applied-accessibility/index.md index aecdfdaede..92af282ebf 100644 --- a/client/src/pages/learn/responsive-web-design/applied-accessibility/index.md +++ b/client/src/pages/learn/responsive-web-design/applied-accessibility/index.md @@ -3,6 +3,7 @@ title: Introduction to the Applied Accessibility Challenges block: Applied Accessibility superBlock: Responsive Web Design --- + ## Introduction to the Applied Accessibility Challenges "Accessibility" generally means having web content and a user interface that can be understood, navigated, and interacted with by a broad audience. This includes people with visual, auditory, mobility, or cognitive disabilities. diff --git a/client/src/pages/learn/responsive-web-design/applied-visual-design/index.md b/client/src/pages/learn/responsive-web-design/applied-visual-design/index.md index a6845a1f26..70ab7b5813 100644 --- a/client/src/pages/learn/responsive-web-design/applied-visual-design/index.md +++ b/client/src/pages/learn/responsive-web-design/applied-visual-design/index.md @@ -3,7 +3,7 @@ title: Introduction to the Applied Visual Design Challenges block: Applied Visual Design superBlock: Responsive Web Design --- + ## Introduction to the Applied Visual Design Challenges Visual Design in web development is a broad topic. It combines typography, color theory, graphics, animation, and page layout to help deliver a site's message. The definition of good design is a well-discussed subject, with many books on the theme.

At a basic level, most web content provides a user with information. The visual design of the page can influence its presentation and a user's experience. In web development, HTML gives structure and semantics to a page's content, and CSS controls the layout and appearance of it.

This section covers some of the basic tools developers use to create their own visual designs. - diff --git a/client/src/pages/learn/responsive-web-design/basic-css-cafe-menu/index.md b/client/src/pages/learn/responsive-web-design/basic-css-cafe-menu/index.md index 976e4dae3a..f8f0354c13 100644 --- a/client/src/pages/learn/responsive-web-design/basic-css-cafe-menu/index.md +++ b/client/src/pages/learn/responsive-web-design/basic-css-cafe-menu/index.md @@ -4,6 +4,7 @@ block: Basic CSS Cafe Menu superBlock: Responsive Web Design isBeta: true --- + ## Introduction to the Basic CSS Cafe Menu -This is a test for the new project-based curriculum. \ No newline at end of file +This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/responsive-web-design/basic-css/index.md b/client/src/pages/learn/responsive-web-design/basic-css/index.md index 77ff871a45..ab0025a99a 100644 --- a/client/src/pages/learn/responsive-web-design/basic-css/index.md +++ b/client/src/pages/learn/responsive-web-design/basic-css/index.md @@ -3,6 +3,7 @@ title: Introduction to Basic CSS block: Basic CSS superBlock: Responsive Web Design --- + ## Introduction to Basic CSS Cascading Style Sheets (CSS) tell the browser how to display the text and other content that you write in HTML. @@ -18,7 +19,7 @@ CSS has been adopted by all major browsers and allows you to control: - sizing - decorations - transitions - + There are three main ways to apply CSS styling. You can apply inline styles directly to HTML elements with the `style` attribute. Alternatively, you can place CSS rules within `style` tags in an HTML document. Finally, you can write CSS rules in an external style sheet, then reference that file in the HTML document. Even though the first two options have their use cases, most developers prefer external style sheets because they keep the styles separate from the HTML elements. This improves the readability and reusability of your code. The idea behind CSS is that you can use a selector to target an HTML element in the DOM (Document Object Model) and then apply a variety of attributes to that element to change the way it is displayed on the page. diff --git a/client/src/pages/learn/responsive-web-design/basic-html-and-html5/index.md b/client/src/pages/learn/responsive-web-design/basic-html-and-html5/index.md index 92f8d1f4bf..ee485ddcb1 100644 --- a/client/src/pages/learn/responsive-web-design/basic-html-and-html5/index.md +++ b/client/src/pages/learn/responsive-web-design/basic-html-and-html5/index.md @@ -3,15 +3,20 @@ title: Introduction to Basic HTML and HTML5 block: Basic HTML and HTML5 superBlock: Responsive Web Design --- + ## Introduction to Basic HTML & HTML5 HTML, or HyperText Markup Language, is a markup language used to describe the structure of a web page. It uses a special syntax or notation to organize and give information about the page to the browser. Elements usually have opening and closing tags that surround and give meaning to content. For example, there are different tag options to place around text to show whether it is a heading, a paragraph, or a list. For example: + ```html

Top level heading: Maybe a page title

-

A paragraph of text. Some information we would like to communicate to the viewer. This can be as long or short as we would like.

+

+ A paragraph of text. Some information we would like to communicate to the + viewer. This can be as long or short as we would like. +

  1. Number one on the list
  2. @@ -33,8 +38,9 @@ Becomes:
--- + The HyperText part of HTML comes from the early days of the web and its original use case. Pages usually contained static documents that contained references to other documents. These references contained hypertext links used by the browser to navigate to the reference document so the user could read the reference document without having to manually search for it. As web pages and web applications grow more complex, the W3 Consortium updates the HTML specification to ensure that a webpage can be shown reliably on any browser. The latest version of HTML is HTML5. -This section introduces how to use HTML elements to give structure and meaning to your web content. \ No newline at end of file +This section introduces how to use HTML elements to give structure and meaning to your web content. diff --git a/client/src/pages/learn/responsive-web-design/basic-html-cat-photo-app/index.md b/client/src/pages/learn/responsive-web-design/basic-html-cat-photo-app/index.md index e37734b1e0..8142f0b4bc 100644 --- a/client/src/pages/learn/responsive-web-design/basic-html-cat-photo-app/index.md +++ b/client/src/pages/learn/responsive-web-design/basic-html-cat-photo-app/index.md @@ -4,6 +4,7 @@ block: Basic HTML Cat Photo App superBlock: Responsive Web Design isBeta: true --- + ## Introduction to the Basic HTML Cat Photo App -This is a test for the new project-based curriculum. \ No newline at end of file +This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/responsive-web-design/css-flexbox/index.md b/client/src/pages/learn/responsive-web-design/css-flexbox/index.md index e0c3ff2951..6caacbc357 100644 --- a/client/src/pages/learn/responsive-web-design/css-flexbox/index.md +++ b/client/src/pages/learn/responsive-web-design/css-flexbox/index.md @@ -3,7 +3,7 @@ title: Introduction to the CSS Flexbox Challenges block: CSS Flexbox superBlock: Responsive Web Design --- + ## Introduction to the CSS Flexbox Challenges A website's User Interface ("UI") has two components. First, there are the visual elements, such as colors, fonts, and images. Second, there is the placement or positioning of those elements. In Responsive Web Design, a UI layout must accommodate many different browsers and devices accessing the content.

CSS3 introduced Flexible Boxes, or flexbox, to create page layouts for a dynamic UI. It is a layout mode that arranges elements in a predictable way for different screen sizes and browsers. While somewhat new, all popular modern browsers support flexbox. This section covers how to use flexbox and the different layout options it offers. - diff --git a/client/src/pages/learn/responsive-web-design/css-grid/index.md b/client/src/pages/learn/responsive-web-design/css-grid/index.md index f647903a7f..af1caa8fe8 100644 --- a/client/src/pages/learn/responsive-web-design/css-grid/index.md +++ b/client/src/pages/learn/responsive-web-design/css-grid/index.md @@ -3,7 +3,7 @@ title: Introduction to the CSS Grid Challenges block: CSS Grid superBlock: Responsive Web Design --- + ## Introduction to the CSS Grid Challenges CSS Grid helps you easily build complex web designs. It works by turning an HTML element into a grid container with rows and columns for you to place children elements where you want within the grid. - diff --git a/client/src/pages/learn/responsive-web-design/css-variables-skyline/index.md b/client/src/pages/learn/responsive-web-design/css-variables-skyline/index.md index f60e43b37f..a55a452703 100644 --- a/client/src/pages/learn/responsive-web-design/css-variables-skyline/index.md +++ b/client/src/pages/learn/responsive-web-design/css-variables-skyline/index.md @@ -3,6 +3,7 @@ title: Introduction to the CSS Variables Skyline block: CSS Variables Skyline superBlock: Responsive Web Design --- + ## Introduction to the CSS Variables Skyline CSS Variables Skyline Placeholder Introduction. diff --git a/client/src/pages/learn/responsive-web-design/index.md b/client/src/pages/learn/responsive-web-design/index.md index 463d4f7fcc..e365819b31 100644 --- a/client/src/pages/learn/responsive-web-design/index.md +++ b/client/src/pages/learn/responsive-web-design/index.md @@ -2,6 +2,7 @@ title: Responsive Web Design superBlock: responsive-web-design --- + ## Introduction to Responsive Web Design Welcome to Responsive Web Design! @@ -10,7 +11,7 @@ Let's first take a look at what is in the scope of Responsive Web Design (and wh The Web part of Responsive Web Design means that the content you are creating is designed to be delivered over the web to users' browsers. To do this, you will need to learn the language that browsers use to describe web pages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design. -That brings us to design. Web Design focuses on how websites should look and behave to the end user. There are plenty of additional aspects to websites, including how to host a website so people can access it, how to protect your websites and store your users' data, and the ethos behind what should go on a website in the first place. These are somewhat harder to teach, but do require a good understanding of the capabilities of the web in modern contexts. +That brings us to design. Web Design focuses on how websites should look and behave to the end user. There are plenty of additional aspects to websites, including how to host a website so people can access it, how to protect your websites and store your users' data, and the ethos behind what should go on a website in the first place. These are somewhat harder to teach, but do require a good understanding of the capabilities of the web in modern contexts. And what of the word Responsive? Well, that brings us to the idea of modern contexts. In today's world, websites are expected to be just as accessible on laptops, tablets and phones. If you compare your user experience on a document-editing program on a computer versus a document-editing program on a mobile, the features on mobile are likely to be far more constrained. This applies in some way to websites as well, but developers have found interesting ways to adapt to the mobile experience, not in the least by harnessing powerful features built for flexible (a.k.a responsive) web displays such as CSS `flexbox` and CSS `grid`. diff --git a/client/src/pages/learn/responsive-web-design/responsive-web-design-principles/index.md b/client/src/pages/learn/responsive-web-design/responsive-web-design-principles/index.md index dbf768e294..14b4c8b235 100644 --- a/client/src/pages/learn/responsive-web-design/responsive-web-design-principles/index.md +++ b/client/src/pages/learn/responsive-web-design/responsive-web-design-principles/index.md @@ -3,10 +3,10 @@ title: Introduction to the Responsive Web Design Challenges block: Responsive Web Design Principles superBlock: Responsive Web Design --- + ## Introduction to the Responsive Web Design Challenges Today, there are many types of devices that can access the web. They range from large desktop computers to small mobile phones. These devices have different screen sizes, resolutions, and processing power. Responsive Web Design is an approach to designing web content that responds to the constraints of different devices. The page structure and CSS rules should be flexible to accommodate these differences. In general, design the page's CSS to your target audience. If you expect most of your traffic to be from mobile users, take a 'mobile-first' approach. Then add conditional rules for larger screen sizes. If your visitors are desktop users, then design for larger screens with conditional rules for smaller sizes. CSS gives you the tools to write different style rules, then apply them depending on the device displaying the page. This section will cover the basic ways to use CSS for Responsive Web Design. - diff --git a/client/src/pages/learn/responsive-web-design/responsive-web-design-projects/index.md b/client/src/pages/learn/responsive-web-design/responsive-web-design-projects/index.md index ff5edd24a8..a9415066ec 100644 --- a/client/src/pages/learn/responsive-web-design/responsive-web-design-projects/index.md +++ b/client/src/pages/learn/responsive-web-design/responsive-web-design-projects/index.md @@ -3,16 +3,18 @@ title: Introduction to the Responsive Web Design Projects block: Responsive Web Design Projects superBlock: Responsive Web Design --- + ## Introduction to the Responsive Web Design Projects -Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc. +Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc. In this section you get the chance to: - * Build a Tribute Page - * Build a Survey Form - * Build a Product Landing Page - * Build a Technical Documentation Page - * Build a Personal Portfolio Webpage + +- Build a Tribute Page +- Build a Survey Form +- Build a Product Landing Page +- Build a Technical Documentation Page +- Build a Personal Portfolio Webpage By the end of this, you would have 5 responsive websites under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/pages/learn/scientific-computing-with-python/index.md b/client/src/pages/learn/scientific-computing-with-python/index.md index 84593de261..a568c760bb 100644 --- a/client/src/pages/learn/scientific-computing-with-python/index.md +++ b/client/src/pages/learn/scientific-computing-with-python/index.md @@ -2,6 +2,7 @@ title: Scientific Computing with Python superBlock: scientific-computing-with-python --- + ## Introduction to Scientific Computing with Python Learn the basics of Python. diff --git a/client/src/pages/learn/scientific-computing-with-python/python-for-everybody/index.md b/client/src/pages/learn/scientific-computing-with-python/python-for-everybody/index.md index 7ae064f32c..47dfd80a34 100644 --- a/client/src/pages/learn/scientific-computing-with-python/python-for-everybody/index.md +++ b/client/src/pages/learn/scientific-computing-with-python/python-for-everybody/index.md @@ -3,10 +3,9 @@ title: Introduction to Python for Everybody block: Python for Everybody superBlock: Scientific Computing with Python --- + ## Introduction to Python for Everybody Python for Everybody is a video course that teaches the basics of programming computers using Python 3. The course was created by Dr. Charles Severance (a.k.a. Dr. Chuck). He is a Clinical Professor at the University of Michigan School of Information, where he teaches various technology-oriented courses including programming, database design, and Web development. - - diff --git a/client/src/pages/learn/scientific-computing-with-python/scientific-computing-with-python-projects/index.md b/client/src/pages/learn/scientific-computing-with-python/scientific-computing-with-python-projects/index.md index 5f872eeee7..0ab8958082 100644 --- a/client/src/pages/learn/scientific-computing-with-python/scientific-computing-with-python-projects/index.md +++ b/client/src/pages/learn/scientific-computing-with-python/scientific-computing-with-python-projects/index.md @@ -3,19 +3,22 @@ title: Introduction to the Scientific Computing with Python Projects block: Scientific Computing with Python Projects superBlock: Scientific Computing with Python --- + ## Introduction to the Scientific Computing with Python Projects Time to put your Python skills to the test! By completing these projects, you will demonstrate that you have a good foundational knowledge of Python. We are working to finish up the interactive Python instructional content. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete these projects: - * [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours) - * [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours) + +- [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours) +- [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours) In this section you will develop the following projects: - * Arithmetic Formatter - * Time Calculator - * Budget App - * Polygon Area Calculator - * Probability Calculator + +- Arithmetic Formatter +- Time Calculator +- Budget App +- Polygon Area Calculator +- Probability Calculator Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/tsconfig.json b/client/tsconfig.json index 489302dd27..689bc83179 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -1,10 +1,5 @@ { - "include": [ - "./i18n/**/*", - "./plugins/**/*", - "./src/**/*", - "./utils/**/*" - ], + "include": ["./i18n/**/*", "./plugins/**/*", "./src/**/*", "./utils/**/*"], "compilerOptions": { "target": "es2020", "module": "es2020", @@ -18,10 +13,6 @@ "noEmit": true, "resolveJsonModule": true, "skipLibCheck": true, - "types": [ - "node", - "jest", - "@testing-library/jest-dom" - ] + "types": ["node", "jest", "@testing-library/jest-dom"] } -} \ No newline at end of file +} diff --git a/config/crowdin/client/crowdin.yml b/config/crowdin/client/crowdin.yml index f5dfdd07f0..20b9706597 100644 --- a/config/crowdin/client/crowdin.yml +++ b/config/crowdin/client/crowdin.yml @@ -1,17 +1,18 @@ -"project_id_env": "CROWDIN_PROJECT_ID" -"api_token_env": "CROWDIN_PERSONAL_TOKEN" -"base_path_env": "CROWDIN_BASE_PATH" -"base_url_env": "CROWDIN_BASE_URL" +'project_id_env': 'CROWDIN_PROJECT_ID' +'api_token_env': 'CROWDIN_PERSONAL_TOKEN' +'base_path_env': 'CROWDIN_BASE_PATH' +'base_url_env': 'CROWDIN_BASE_URL' -"preserve_hierarchy": true +'preserve_hierarchy': true -files: [ - { - "source" : "/client/i18n/locales/english/intro.json", - "translation" : "/client/i18n/locales/%language%/%original_file_name%" - }, - { - "source" : "/client/i18n/locales/english/translations.json", - "translation" : "/client/i18n/locales/%language%/%original_file_name%" - } -] +files: + [ + { + 'source': '/client/i18n/locales/english/intro.json', + 'translation': '/client/i18n/locales/%language%/%original_file_name%' + }, + { + 'source': '/client/i18n/locales/english/translations.json', + 'translation': '/client/i18n/locales/%language%/%original_file_name%' + } + ] diff --git a/config/crowdin/docs/crowdin.yml b/config/crowdin/docs/crowdin.yml index 6d9f0f1c37..d6cc4bf8d6 100644 --- a/config/crowdin/docs/crowdin.yml +++ b/config/crowdin/docs/crowdin.yml @@ -1,19 +1,21 @@ -"project_id_env": "CROWDIN_PROJECT_ID" -"api_token_env": "CROWDIN_PERSONAL_TOKEN" -"base_path_env": "CROWDIN_BASE_PATH" -"base_url_env": "CROWDIN_BASE_URL" +'project_id_env': 'CROWDIN_PROJECT_ID' +'api_token_env': 'CROWDIN_PERSONAL_TOKEN' +'base_path_env': 'CROWDIN_BASE_PATH' +'base_url_env': 'CROWDIN_BASE_URL' -"preserve_hierarchy": true +'preserve_hierarchy': true -files: [ - { - "source" : "/docs/*.md", - "translation" : "/docs/i18n/%language%/%original_file_name%", - "ignore" : [ - "/docs/_coverpage.md", - "/docs/_navbar.md", - "/docs/_translations.md", - "/docs/README.md", +files: + [ + { + 'source': '/docs/*.md', + 'translation': '/docs/i18n/%language%/%original_file_name%', + 'ignore': + [ + '/docs/_coverpage.md', + '/docs/_navbar.md', + '/docs/_translations.md', + '/docs/README.md' + ] + } ] - } -] diff --git a/curriculum/LICENSE.md b/curriculum/LICENSE.md index 3b7b82d0da..79d1e89b16 100644 --- a/curriculum/LICENSE.md +++ b/curriculum/LICENSE.md @@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses. material not subject to the license. This includes other CC- licensed material, or material used under an exception or limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors + wiki.creativecommons.org/Considerations_for_licensors Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the @@ -50,7 +50,7 @@ exhaustive, and do not form part of our licenses. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More_considerations for the public: - wiki.creativecommons.org/Considerations_for_licensees + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= @@ -67,82 +67,80 @@ such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - Section 1 -- Definitions. - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. +a. Adapted Material means material subject to Copyright and Similar +Rights that is derived from or based upon the Licensed Material +and in which the Licensed Material is translated, altered, +arranged, transformed, or otherwise modified in a manner requiring +permission under the Copyright and Similar Rights held by the +Licensor. For purposes of this Public License, where the Licensed +Material is a musical work, performance, or sound recording, +Adapted Material is always produced where the Licensed Material is +synched in timed relation with a moving image. - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. +b. Adapter's License means the license You apply to Your Copyright +and Similar Rights in Your contributions to Adapted Material in +accordance with the terms and conditions of this Public License. - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. +c. BY-SA Compatible License means a license listed at +creativecommons.org/compatiblelicenses, approved by Creative +Commons as essentially the equivalent of this Public License. - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. +d. Copyright and Similar Rights means copyright and/or similar rights +closely related to copyright including, without limitation, +performance, broadcast, sound recording, and Sui Generis Database +Rights, without regard to how the rights are labeled or +categorized. For purposes of this Public License, the rights +specified in Section 2(b)(1)-(2) are not Copyright and Similar +Rights. - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. +e. Effective Technological Measures means those measures that, in the +absence of proper authority, may not be circumvented under laws +fulfilling obligations under Article 11 of the WIPO Copyright +Treaty adopted on December 20, 1996, and/or similar international +agreements. - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. +f. Exceptions and Limitations means fair use, fair dealing, and/or +any other exception or limitation to Copyright and Similar Rights +that applies to Your use of the Licensed Material. - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. +g. License Elements means the license attributes listed in the name +of a Creative Commons Public License. The License Elements of this +Public License are Attribution and ShareAlike. - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. +h. Licensed Material means the artistic or literary work, database, +or other material to which the Licensor applied this Public +License. - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. +i. Licensed Rights means the rights granted to You subject to the +terms and conditions of this Public License, which are limited to +all Copyright and Similar Rights that apply to Your use of the +Licensed Material and that the Licensor has authority to license. - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. +j. Licensor means the individual(s) or entity(ies) granting rights +under this Public License. - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. +k. Share means to provide material to the public by any means or +process that requires permission under the Licensed Rights, such +as reproduction, public display, public performance, distribution, +dissemination, communication, or importation, and to make material +available to the public including in ways that members of the +public may access the material from a place and at a time +individually chosen by them. - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. +l. Sui Generis Database Rights means rights other than copyright +resulting from Directive 96/9/EC of the European Parliament and of +the Council of 11 March 1996 on the legal protection of databases, +as amended and/or succeeded, as well as other essentially +equivalent rights anywhere in the world. +m. You means the individual or entity exercising the Licensed Rights +under this Public License. Your has a corresponding meaning. Section 2 -- Scope. - a. License grant. +a. License grant. 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, @@ -202,7 +200,7 @@ Section 2 -- Scope. the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - b. Other rights. +b. Other rights. 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, @@ -222,13 +220,12 @@ Section 2 -- Scope. licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. - Section 3 -- License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. - a. Attribution. +a. Attribution. 1. If You Share the Licensed Material (including in modified form), You must: @@ -270,7 +267,7 @@ following conditions. information required by Section 3(a)(1)(A) to the extent reasonably practicable. - b. ShareAlike. +b. ShareAlike. In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. @@ -289,68 +286,66 @@ following conditions. Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - Section 4 -- Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; +a. for the avoidance of doubt, Section 2(a)(1) grants You the right +to extract, reuse, reproduce, and Share all or a substantial +portion of the contents of the database; - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, +b. if You include all or a substantial portion of the database +contents in a database in which You have Sui Generis Database +Rights, then the database in which You have Sui Generis Database +Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. + +c. You must comply with the conditions in Section 3(a) if You Share +all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - Section 5 -- Disclaimer of Warranties and Limitation of Liability. - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. +a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE +EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS +AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF +ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, +IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, +WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, +ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT +KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT +ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. +b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE +TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, +NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, +INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, +COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR +USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN +ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR +DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR +IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. +c. The disclaimer of warranties and limitation of liability provided +above shall be interpreted in a manner that, to the extent +possible, most closely approximates an absolute disclaimer and +waiver of all liability. Section 6 -- Term and Termination. - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. +a. This Public License applies for the term of the Copyright and +Similar Rights licensed here. However, if You fail to comply with +this Public License, then Your rights under this Public License +terminate automatically. - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: +b. Where Your right to use the Licensed Material has terminated under +Section 6(a), it reinstates: 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the @@ -362,48 +357,45 @@ Section 6 -- Term and Termination. right the Licensor may have to seek remedies for Your violations of this Public License. - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. +c. For the avoidance of doubt, the Licensor may also offer the +Licensed Material under separate terms or conditions or stop +distributing the Licensed Material at any time; however, doing so +will not terminate this Public License. +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public +License. Section 7 -- Other Terms and Conditions. - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. +a. The Licensor shall not be bound by any additional or different +terms or conditions communicated by You unless expressly agreed. +b. Any arrangements, understandings, or agreements regarding the +Licensed Material not stated herein are separate from and +independent of the terms and conditions of this Public License. Section 8 -- Interpretation. - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. +a. For the avoidance of doubt, this Public License does not, and +shall not be interpreted to, reduce, limit, restrict, or impose +conditions on any use of the Licensed Material that could lawfully +be made without permission under this Public License. - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. +b. To the extent possible, if any provision of this Public License is +deemed unenforceable, it shall be automatically reformed to the +minimum extent necessary to make it enforceable. If the provision +cannot be reformed, it shall be severed from this Public License +without affecting the enforceability of the remaining terms and +conditions. - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. +c. No term or condition of this Public License will be waived and no +failure to comply consented to unless expressly agreed to by the +Licensor. +d. Nothing in this Public License constitutes or may be interpreted +as a limitation upon, or waiver of, any privileges and immunities +that apply to the Licensor or You, including from the legal +processes of any jurisdiction or authority. ======================================================================= diff --git a/docker-compose.client.yml b/docker-compose.client.yml index 6f22932022..5e65e3ff17 100644 --- a/docker-compose.client.yml +++ b/docker-compose.client.yml @@ -5,4 +5,4 @@ services: restart: unless-stopped ports: - '${CLIENT_PORT:-8000}:${CLIENT_PORT:-8000}' - command: ["-l", "${CLIENT_PORT:-8000}"] + command: ['-l', '${CLIENT_PORT:-8000}'] diff --git a/docs/FAQ.md b/docs/FAQ.md index d6a5ffc36b..2b156c7106 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -81,7 +81,7 @@ If you have queries about the stack, architecture of the codebase, translations, | Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) | -| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) | +| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | **You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/README.md b/docs/README.md index 47af43f32c..a144abf336 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,3 @@ ## Our contributing docs are available here: . -Looking to edit these docs? Read [this document](how-to-work-on-the-docs-theme.md) first. \ No newline at end of file +Looking to edit these docs? Read [this document](how-to-work-on-the-docs-theme.md) first. diff --git a/docs/curriculum-file-structure.md b/docs/curriculum-file-structure.md index 9d8e73c489..cd53264b92 100644 --- a/docs/curriculum-file-structure.md +++ b/docs/curriculum-file-structure.md @@ -15,6 +15,7 @@ There are a few terms we use when discussing our curriculum content. Using those terms, here is how the file structure would be defined: + ```md curriculum/ @@ -64,7 +65,7 @@ When renaming a certification, you will likely want to rename the associated sup Also, you will likely want to rename the certificate and the `{superBlock}-projects` block when you rename a superBlock since they all shares a name. To rename only a superBlock you need to: 1. Rename the superBlock folder in the `curriculum/challenges/english` directory. -1. Rename the superBlock folder in *all* other `curriculum/challenges/{language}` directories. +1. Rename the superBlock folder in _all_ other `curriculum/challenges/{language}` directories. 1. For each block within that superBlock, update the `superBlock` value in the `meta.json` file to its dashedName. You don't need to rename any folders here. Do that when renaming a block. 1. Rename the superblock folder in `client/src/pages/learn`. 1. Update the `index.md` file in the above folder, changing the `title` and `superBlock` values to the new name. @@ -81,7 +82,7 @@ Also, you will likely want to rename the certificate and the `{superBlock}-proje When renaming a curriculum block, you need to: 1. Change the name of the block folder in the `curriculum/challenges/english/{superBlock}` directory. -1. Change the name of the same block folder in *all* of the other language directories to match. These must all be the same as the English structure or the build will error out. +1. Change the name of the same block folder in _all_ of the other language directories to match. These must all be the same as the English structure or the build will error out. 1. Change the name of the block folder in the `_meta` directory. 1. Update the `name` and `dashedName` property for that block's `meta.json` file. 1. Update the `client/utils/help-category-map.json` to use the new block name as the key. @@ -96,7 +97,7 @@ When renaming a single challenge file, you need to: 1. Change the name of the challenge file in the `curriculum/challenges/english` directory. 1. Change the name of the `title` and `dashedName` within that file. -1. Change the name of the file, and the `dashedName` in those files for *all* of the other language directories to match. +1. Change the name of the file, and the `dashedName` in those files for _all_ of the other language directories to match. 1. Update the name of the challenge in the relevant `meta.json` file. The challenge names here are not used in the build, but provide a user-friendly way to identify the challenge order. 1. If the challenge is a certificate project, update the YAML file in `curriculum/english/12-certificates/` to the new name. 1. If the challenge is a certificate project, update the `title` and `link` in `client/src/resources/cert-and-project-map.ts` diff --git a/docs/how-to-catch-outgoing-emails-locally.md b/docs/how-to-catch-outgoing-emails-locally.md index 3949c4730a..a1324042b8 100644 --- a/docs/how-to-catch-outgoing-emails-locally.md +++ b/docs/how-to-catch-outgoing-emails-locally.md @@ -30,6 +30,7 @@ docker stop mailhog to stop it. When the installation completes, you can start [using MailHog](#using-mailhog). +
Installing MailHog on macOS @@ -44,6 +45,7 @@ brew services start mailhog The above commands will start a mailhog service in the background. When the installation completes, you can start [using MailHog](#using-mailhog). +
Installing MailHog on Windows @@ -55,6 +57,7 @@ When the download completes, click to open the file. A Windows firewall notifica Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. Start [using MailHog](#using-mailhog). +
Installing MailHog on Linux @@ -96,6 +99,7 @@ mailhog ``` Start [using MailHog](#using-mailhog). +
## Using MailHog diff --git a/docs/how-to-help-with-video-challenges.md b/docs/how-to-help-with-video-challenges.md index ec98746f67..ddc1654cb8 100644 --- a/docs/how-to-help-with-video-challenges.md +++ b/docs/how-to-help-with-video-challenges.md @@ -8,7 +8,6 @@ The video challenge pages are created by members of the freeCodeCamp team. YouTu You can help by creating multiple-choice questions related to video sections and adding the questions to the markdown files for the video challenges. - ## Challenge Template Below is a template of what the challenge markdown files look like. @@ -27,9 +26,7 @@ forumTopicId: 12345 Challenge description text, in markdown ```html -
- example code -
+
example code
``` # --question-- @@ -55,7 +52,6 @@ More answers ## --video-solution-- The number for the correct answer goes here. - ```` ## Creating questions for video challenges @@ -76,6 +72,7 @@ Pick a challenge markdown file from the options above. First, find the videoId. For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be laid out in a table format. + ``` --- id: 5e9a093a74c4063ca6f7c14d @@ -86,7 +83,7 @@ videoId: nVAaxZ34khk ``` Next, access the YouTube video with that `videoId`. The URL for the video will be: -https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets) +https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets) In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk @@ -122,12 +119,14 @@ More answers 1 ``` -Add/Update the question text under the part that shows: +Add/Update the question text under the part that shows: + ``` # --question-- ## --text-- ``` + Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. Make sure to update the number under `## --video-solution--` with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. ### Question examples @@ -136,14 +135,16 @@ Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. M # --question-- ## --text-- + What does this JavaScript code log to the console? + ```js console.log('hello world'); ``` ## --answers-- -hello *world* +hello _world_ --- @@ -156,11 +157,11 @@ hello world --- ## --video-solution-- + 3 ```` ````md - # --question-- ## --text-- diff --git a/docs/how-to-open-a-pull-request.md b/docs/how-to-open-a-pull-request.md index 0ec6fb4655..f042a1ff17 100644 --- a/docs/how-to-open-a-pull-request.md +++ b/docs/how-to-open-a-pull-request.md @@ -19,12 +19,12 @@ When opening a Pull Request(PR), you can use the below to determine the type, sc **Type:** -| Type | When to select | -| :---- | :--------------------------------------------------------------------------- | +| Type | When to select | +| :---- | :------------------------------------------------------------------------------- | | fix | Changed or updated/improved functionality, tests, the verbiage of a lesson, etc. | -| feat | Only if you are adding new functionality, tests, etc. | -| chore | Changes that are not related to code, tests, or verbiage of a lesson. | -| docs | Changes to `/docs` directory or the contributing guidelines, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests, or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | **Scope:** @@ -135,37 +135,37 @@ When you are working on features for our upcoming curriculum `next-*` branches, a. Either delete your local branch after taking a backup (if you still have it locally): - ```console - git checkout + ```console + git checkout - # example: - # git checkout feat/add-numpy-video-question + # example: + # git checkout feat/add-numpy-video-question - git checkout -b + git checkout -b - # example: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question - git branch -D - ``` + git branch -D + ``` b. Or just a backup of your pr branch (if you do not have it locally): - ```console - git checkout -b origin/ + ```console + git checkout -b origin/ - # example: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question - ``` + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + ``` -4. Start off with a clean slate: +3. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Resolve any conflicts, and cleanup, install run tests +4. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -179,7 +179,7 @@ When you are working on features for our upcoming curriculum `next-*` branches, ``` -6. If everything looks good push back to the PR +5. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/how-to-setup-wsl.md b/docs/how-to-setup-wsl.md index d0fd2fca79..6bff34fdee 100644 --- a/docs/how-to-setup-wsl.md +++ b/docs/how-to-setup-wsl.md @@ -49,7 +49,7 @@ We highly recommend installing [Visual Studio Code](https://code.visualstudio.co Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -If you use [IntelliJ Idea](https://www.jetbrains.com/idea/), you may need to update your Node interpreter and Npm package manager to what is installed on your WSL distro. +If you use [IntelliJ Idea](https://www.jetbrains.com/idea/), you may need to update your Node interpreter and Npm package manager to what is installed on your WSL distro. You can check these settings by going to Settings > Languages & Frameworks > Node.js and NPM. diff --git a/docs/how-to-test-translations-locally.md b/docs/how-to-test-translations-locally.md index 612b7562d6..0602f4b214 100644 --- a/docs/how-to-test-translations-locally.md +++ b/docs/how-to-test-translations-locally.md @@ -144,7 +144,7 @@ For the video challenges, you need to change a few things. First add the new loc ... ``` -Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this: +Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this: ```yml videoLocaleIds: diff --git a/docs/how-to-use-docker-on-windows-home.md b/docs/how-to-use-docker-on-windows-home.md index d336c2b94d..f67572d27c 100644 --- a/docs/how-to-use-docker-on-windows-home.md +++ b/docs/how-to-use-docker-on-windows-home.md @@ -12,4 +12,4 @@ If you see messages like bash: change_volumes_owner.sh: No such file or directory ``` -when you `npm run docker:init` this is likely the culprit. \ No newline at end of file +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/how-to-work-on-coding-challenges.md b/docs/how-to-work-on-coding-challenges.md index 2b41d8a478..c017f351b4 100644 --- a/docs/how-to-work-on-coding-challenges.md +++ b/docs/how-to-work-on-coding-challenges.md @@ -287,7 +287,7 @@ Challenges should have the minimum number of tests necessary to verify that a ca Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_. +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_. ## Formatting seed code diff --git a/docs/how-to-work-on-the-news-theme.md b/docs/how-to-work-on-the-news-theme.md index 59f1f2360e..bf899521ee 100644 --- a/docs/how-to-work-on-the-news-theme.md +++ b/docs/how-to-work-on-the-news-theme.md @@ -84,6 +84,7 @@ One really neat trick is that you can also create custom one-off templates just ```sh npm run zip ``` + ## Other Reference and resources ### PostCSS Features Used diff --git a/docs/how-to-work-on-tutorials-that-use-coderoad.md b/docs/how-to-work-on-tutorials-that-use-coderoad.md index 4590190173..a5e50e3e16 100644 --- a/docs/how-to-work-on-tutorials-that-use-coderoad.md +++ b/docs/how-to-work-on-tutorials-that-use-coderoad.md @@ -1,6 +1,7 @@ This page describes how to contribute to the freeCodeCamp tutorials and projects that are completed using the CodeRoad VS Code extension. ## How the tutorials work + The freeCodeCamp tutorials that use CodeRoad each have their own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`. Each tutorial repo has a `main` branch and a "version" branch, e.g. `v1.0.0`. @@ -20,11 +21,13 @@ In order to make changes to commits on a version branch, you would need to rebas ## How to contribute ### Prerequisites + Install the [CodeRoad CLI tools](https://www.npmjs.com/package/@coderoad/cli) with `npm install -g @coderoad/cli`. There have been some issues with the latest version. If `coderoad --version` doesn't work after installing, downgrade to `0.7.0` with `npm install -g @coderoad/cli@0.7.0`. ### Working on `main` + This set of instructions is for PRs that only make minor changes on `main` to **existing lessons**. That mainly consists of typo, grammar, hint, and instructional changes or fixes in the `TUTORIAL.md` file. For everything else, including adding or deleting lessons, follow the [working on a version branch instructions](#working-on-version-branch). You will not need to create a new version branch for this - you can create a PR following the instructions below. @@ -47,12 +50,14 @@ Follow these instructions to make a PR, keeping in mind that instructions usuall - Make a PR ### Testing changes on `main` + If you want to test your changes to `main` after using the above instructions, follow these instructions: - Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container - Start the tutorial using the `tutorial.json` file on the new branch ### Reviewing PR's to `main` + If reviewing a PR that only changes `main` with instructional or grammar issues as described above, the changes in `TUTORIAL.md` should match the changes in `tutorial.json`. The `tutorial.json` file should not have changes to commit hashes, or step/level ids. Startup or level commands or file watchers likely should not be changed either. There are exceptions if there's an issue with a step, but they should be treated with more caution. @@ -60,6 +65,7 @@ The `tutorial.json` file should not have changes to commit hashes, or step/level Also, keep in mind that instructions usually use the lessons around them for context, so make sure they make sense. ### Working on version branch + > [!WARNING] > > Reminder: Never make or push changes to a version branch that is on one of the freeCodeCamp repos. Always create a new one @@ -86,10 +92,12 @@ Follow these instructions to create a new version: - Leave it here for reviewers ### Testing changes to a version branch + - Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container - Start the tutorial using the `tutorial.json` file on whatever fork the changes are on. Make sure to use the file on the `feat: version-X.X.Y` branch and not the `main` branch ### Pushing a new version + Before pushing a new version, view the new `feat/version-vX.X.Y` (will be merged to `main`) branch on the user's fork. Make sure there are additions to the `CHANGELOG.md` file that include the new changes, and the version in the two spots of `coderoad.yaml` matches the new version branch. If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` and `coderoad.yaml` files, have tested the changes using the instructions above, and want to push a new version of a tutorial: @@ -114,13 +122,17 @@ If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` - Finally, if any PRs for this version exists, close them ### How to revert to a previous version + - Create a new branch off the latest `main` with `git checkout -b revert/to-version-X.X.X` - Revert all commits on this branch up to and including the commit of the version after the one you want to revert to. For example, you may have commits that look like this: + ``` fix: typo release: version 1.0.1 fix: typo release: version 1.0.0 ``` + If you want to revert to v1.0.0, revert all the commits from `release: version 1.0.1` and after + - Create a PR. Give it a title of `revert: to version X.X.X` diff --git a/package-lock.json b/package-lock.json index c27b6e3400..9a3048718b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12055,15 +12055,6 @@ "integrity": "sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw=", "dev": true }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, "eslint-plugin-react": { "version": "7.26.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", @@ -12645,12 +12636,6 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, "fast-glob": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", @@ -20365,15 +20350,6 @@ "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", diff --git a/package.json b/package.json index 853636a73e..043a4f88e1 100644 --- a/package.json +++ b/package.json @@ -56,19 +56,18 @@ "e2e:prd:run": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:run", "e2e:prd:watch": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:watch", "ensure-env": "cross-env DEBUG=fcc:* node ./tools/scripts/build/ensure-env.js", - "format": "npm-run-all -p format:*", - "format:css": "npm run prettier -- --write", - "format:js": "npm run lint:js -- --fix", + "format": "run-s format:eslint format:prettier", + "format:eslint": "eslint . --fix", + "format:prettier": "prettier --write .", "hooks:install": "node node_modules/husky/husky.js install", "hooks:uninstall": "node node_modules/husky/husky.js uninstall", "lint": "npm-run-all ensure-env -p lint:*", "lint:challenges": "cd ./curriculum && npm run lint", - "lint:css": "npm run prettier -- --check", "lint:js": "eslint --max-warnings 0 .", "lint:ts": "tsc -p client && tsc -p tools/ui-components", "lint:translations": "cd ./client && npm run lint", + "lint:prettier": "prettier --list-different .", "postinstall": "npm run bootstrap", - "prettier": "prettier \"**/*.css\"", "seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser", "seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser certUser", "serve:client": "cd ./client && npm run serve", @@ -89,11 +88,6 @@ "test-ui-components": "jest tools/ui-components", "prepare": "husky install" }, - "lint-staged": { - "*.css": "prettier --write", - "*.(js|ts|tsx)": "eslint --max-warnings 0 --cache --fix", - "./curriculum/challenges/**/*.md": "node ./tools/scripts/lint/index.js" - }, "dependencies": { "dotenv": "10.0.0", "invariant": "2.2.4" @@ -121,7 +115,6 @@ "eslint-plugin-jest-dom": "3.9.2", "eslint-plugin-jsx-a11y": "6.4.1", "eslint-plugin-prefer-object-spread": "1.2.1", - "eslint-plugin-prettier": "3.4.1", "eslint-plugin-react": "7.26.1", "eslint-plugin-react-hooks": "2.5.1", "eslint-plugin-testing-library": "4.12.4", diff --git a/renovate.json b/renovate.json index 5dd4f6ed85..8cf5a12cf8 100644 --- a/renovate.json +++ b/renovate.json @@ -14,7 +14,11 @@ }, { "groupName": "Monaco Editor", - "matchPackageNames": ["monaco-editor", "monaco-editor-webpack-plugin", "react-monaco-editor"] + "matchPackageNames": [ + "monaco-editor", + "monaco-editor-webpack-plugin", + "react-monaco-editor" + ] }, { "matchPackageNames": ["normalize-url"], @@ -22,9 +26,7 @@ }, { "groupName": "CodeSee", - "matchPackagePrefixes": [ - "@codesee/" - ], + "matchPackagePrefixes": ["@codesee/"], "automerge": true } ], diff --git a/tools/challenge-parser/parser/tools/example.md b/tools/challenge-parser/parser/tools/example.md index 2b987adf7a..75941463fb 100644 --- a/tools/challenge-parser/parser/tools/example.md +++ b/tools/challenge-parser/parser/tools/example.md @@ -28,7 +28,7 @@ Second hint with code // more test code ``` -Third *hint* with code and `inline code` +Third _hint_ with code and `inline code` ```js // more test code @@ -43,8 +43,7 @@ if(let x of xs) { ```html - - + ``` @@ -62,15 +61,13 @@ body { var x = 'y'; ``` - # --solutions-- ![html-key]() ```html - - + ``` @@ -82,4 +79,5 @@ body { ```js var x = 'y'; -`` +``; +``` diff --git a/tools/contributor/.prettierrc b/tools/contributor/.prettierrc index e54db678ea..38bc8e093f 100644 --- a/tools/contributor/.prettierrc +++ b/tools/contributor/.prettierrc @@ -2,4 +2,4 @@ "semi": true, "singleQuote": true, "trailingComma": "none" -} \ No newline at end of file +} diff --git a/tools/contributor/dashboard-app/client/src/App.js b/tools/contributor/dashboard-app/client/src/App.js index 986ffb3fb9..28e0e9e394 100644 --- a/tools/contributor/dashboard-app/client/src/App.js +++ b/tools/contributor/dashboard-app/client/src/App.js @@ -17,7 +17,7 @@ const PageContainer = styled.div` justify-content: center; align-items: center; @media (max-width: 991px) { - margin-top: 135px; + margin-top: 135px; } `; @@ -41,12 +41,12 @@ const AppNavBar = styled.nav` top: 0; left: 0; right: 0; - display:flex; + display: flex; justify-content: space-between; align-items: center; background: ${({ theme }) => theme.primary}; @media (max-width: 991px) { - flex-direction: column; + flex-direction: column; } `; @@ -54,7 +54,6 @@ const logoStyle = { paddingLeft: '30px' }; const titleStyle = { margin: '0', padding: '0' }; - class App extends Component { state = { view: 'search', @@ -63,11 +62,11 @@ class App extends Component { updateInfo() { fetch(ENDPOINT_INFO) - .then(response => response.json()) + .then((response) => response.json()) .then(({ ok, numPRs, prRange, lastUpdate }) => { if (ok) { const footerInfo = { numPRs, prRange, lastUpdate }; - this.setState(prevState => ({ footerInfo })); + this.setState((prevState) => ({ footerInfo })); } }) .catch(() => { @@ -77,7 +76,7 @@ class App extends Component { handleViewChange = ({ target: { id } }) => { const view = id.replace('tabs-', ''); - this.setState(prevState => ({ ...this.clearObj, view })); + this.setState((prevState) => ({ ...this.clearObj, view })); if (view === 'reports' || view === 'search') { this.updateInfo(); } @@ -94,30 +93,51 @@ class App extends Component { } = this; return ( <> - - - - -

Contributor Tools

- -
- - - - - {view === 'search' && } - {view === 'reports' && } - {view === 'boilerplates' && - repo._id.includes('boilerplate')} />} - {view === 'other' && - !repo._id.includes('boilerplate') && repo._id !== 'freeCodeCamp'} />} - - {footerInfo &&